Guten Tag meine XBMC Nerds,
ich versuche momentan mein erstes "richtiges" eigene Addon für XBMC zu erstellen und habe da momentan folgendes Problem:
Ich habe eine XML die ich von einer Webseite auslesen möchte welche wie Folgt aufgebaut ist:
Print Link per Python Shell:
<?xml version="1.0" encoding="UTF-8"?>
<playlist version="1" xmlns="http://xspf.org/ns/0/">
<trackList>
<track>
<title>32 - Sovereign Light Cafe (Afrojack vs. Keane) [Afrojack Remix]</title>
<creator>Keane & Afrojack</creator>
<image>/index.php?imgid3sid=13173&c=</image>
<duration>372</duration>
<location>http://217.23.1.103/index.php?streamsid=13234&c=&file=.mp3</location>
</track>
</trackList>
</playlist>
Alles anzeigen
Normalerweise werden die Daten die ich auselesen möchte z.B. bei einer html Datei nicht mehrzeilig sondern in einer Zeile ausgeben und ich würde sie wie folgt in meinem xbmc addon schreiben:
Beispiel:
<li id="menu-item-28120" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-28120"><a href="http://pure-anime.biz/index.php/faq">FAQ</a></li>
Würde bei mir dann so aussehen:
match=re.compile('<li id=".+?"><a href="(.+?)">(.+?)</a></li>').findall(link)
for url,name in match: addLink(name,url,'')
Nun meine Frage wie kann ich jetzt bei meinem "match=re.compile" alle Zeilen der XML Datei auslesen bzw. den Part den ich benötige?
Ich benötige in diesem Beispiel den title,creatore,image
Ich habe es test halber mal so versucht:
req = urllib2.Request(url)
req.add_header('User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3')
response = urllib2.urlopen(req)
link=response.read()
response.close()
gettitle=re.compile('<title>(.+?)</title>').findall(link)
getmp3=re.compile('<location>(.+?)</location>').findall(link)
getartist=re.compile('<creator>(.+?)</creator>').findall(link)
addDir(getartist + ' - ' + gettitle, getmp3, 2,'')
Dies gab mir jedoch nur Fehlermeldungen raus:
EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
- NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
Error Type: <type 'exceptions.TypeError'>
Error Contents: can only concatenate list (not "str") to list
Traceback (most recent call last):
File "C:\Users\PayCay\AppData\Roaming\XBMC\addons\BEISPIEL\default.py", line 98, in <module>
INDEX(url)
File "C:\Users\PayCay\AppData\Roaming\XBMC\addons\BEISPIEL\default.py", line 18, in INDEX
addDir(gettitle + ' - ' + getartist,getmp3,2,'')
TypeError: can only concatenate list (not "str") to list
-->End of Python script error report<--
17:19:27 T:5624 ERROR: XFILE::CDirectory::GetDirectory - Error getting plugin://BEISPIEL/?mode=1&name=Test&url=http://www.BEISPIEL.de/index.php?templist=2&c=&file=578301.xml
17:19:27 T:5624 ERROR: CGUIMediaWindow::GetDirectory(plugin://BEISPIEL/?mode=1&name=Test&url=http://www.BEISPIEL.de/index.php?templist=2&c=&file=578301.xml) failed
Es sei denn ich sage bei AddDir das er den ersten "Treffer" nehmen soll
Aber da die Tracklist von XML zu XML variiert können es mehrere "Treffer" sein.
Ich hoffe ich konnte halbwegs es verständlich ausdrücken.
Sorry konnte die letzten beiden Sachen nicht als Quellcode einzeigen, weil er dann einfach alles nebeneinander listet.