मैं last.fm एपीआई के साथ बातचीत के लिए एक छोटी लिपि लिखने की कोशिश कर रहा हूं।ElementTree findall() खाली सूची लौट रहा है
मेरे पास ElementTree
के साथ काम करने का एक छोटा सा अनुभव है, लेकिन जिस तरह से मैंने इसे पहले इस्तेमाल किया वह काम नहीं कर रहा है, बल्कि यह एक खाली सूची देता है।
मैंने एपीआई कुंजी को हटा दिया क्योंकि मुझे नहीं पता कि यह कितना निजी होना चाहिए, और एक्सएमएल का एक उदाहरण दिया है जिसे मैं इसके स्थान पर प्राप्त कर रहा हूं।
from xml.etree import ElementTree
import urllib
import urllib2
class Last_fmWrapper(object):
def __init__(self):
self.last_fm_api_key = '*****************************'
self.api_url = 'http://ws.audioscrobbler.com/2.0/'
def get_now_playing(self, last_fm_user, method):
self.last_fm_user = last_fm_user
self.method = method
parameters = {'user':self.last_fm_user, 'api_key':self.last_fm_api_key, 'method':self.method}
encoded_parameters = urllib.urlencode(parameters)
request = urllib2.Request(self.api_url, encoded_parameters)
response = urllib2.urlopen(request)
api_results = ElementTree.parse(response).findall('track')
# why does api_results == []?
def compare_tasteometer(self):
pass
def register_user(self):
pass
कॉल Last_fmWrapper()
की विधि get_now_playing करने के लिए:: एपीआई के साथ बातचीत के लिए
कक्षा
from last_fm_wrapper import Last_fmWrapper
last_fm = Last_fmWrapper()
now_playing = last_fm.get_now_playing('BiriBiriRG', 'user.getRecentTracks')
if now_playing == None:
print 'You not currently playing anything.'
else:
print 'You are now playing {}'.format(now_playing)
एक्सएमएल का नमूना मैं प्राप्त करते हैं:
<?xml version="1.0" encoding="utf-8"?>
<lfm status="ok">
<recenttracks user="BiriBiriRG" page="1" perPage="10" totalPages="18406" total="184058" >
<track>
<artist mbid="01809552-4f87-45b0-afff-2c6f0730a3be">Elvis Presley</artist>
<name>Thrill Of Your Love</name>
<streamable>1</streamable>
<mbid></mbid>
<album mbid="c445fa3a-3b24-41d4-b955-b6ca560c6f7a">Love Songs</album>
<url>http://www.last.fm/music/Elvis+Presley/_/Thrill+Of+Your+Love</url>
<image size="small">http://userserve-ak.last.fm/serve/34s/69037914.png</image>
<image size="medium">http://userserve-ak.last.fm/serve/64s/69037914.png</image>
<image size="large">http://userserve-ak.last.fm/serve/126/69037914.png</image>
<image size="extralarge">http://userserve-ak.last.fm/serve/300x300/69037914.png</image>
<date uts="1328153196">2 Feb 2012, 03:26</date>
</track>
<track>
<artist mbid="efc8a006-d0c6-4a9b-8cb1-91ca770fa2b9">Colbie Caillat</artist>
<name>Oxygen</name>
<streamable>1</streamable>
<mbid></mbid>
<album mbid="2d297b29-a215-42fe-8a8c-dc8b502903b1">Coco</album>
<url>http://www.last.fm/music/Colbie+Caillat/_/Oxygen</url>
<image size="small">http://userserve-ak.last.fm/serve/34s/69229764.png</image>
<image size="medium">http://userserve-ak.last.fm/serve/64s/69229764.png</image>
<image size="large">http://userserve-ak.last.fm/serve/126/69229764.png</image>
<image size="extralarge">http://userserve-ak.last.fm/serve/300x300/69229764.png</image>
<date uts="1328152962">2 Feb 2012, 03:22</date>
</track>
<track>
धन्यवाद! अब आकर्षक के रूप में काम करता है! – Cirno
@Cirno: बढ़िया, कोई समस्या नहीं :) चूंकि इससे आपकी समस्या हल हो गई है, तो यह अच्छा होगा अगर आप [उत्तर को स्वीकार करें] (http://meta.stackexchange.com/a/5235) मेरे द्वारा ✔ पर क्लिक करके जवाब। –
हाय, उत्तर के लिए धन्यवाद। मुझे इस तरह कुछ खोजने की ज़रूरत है: "{http://purl.org/rss/1.0/}item" टैग नाम - "आइटम" द्वारा। नामस्थान को अनदेखा कर रहा है। मैंने कोशिश की है: findall ('.//{*} आइटम') लेकिन यह काम नहीं करेगा। कोई उपाय? मुझे http://bugs.python.org/issue18304#msg194896 – Kostanos