==== osmc playlist reader experiment (pls2m3u) ===== #!/usr/bin/env python # -*- coding: utf-8 -*- # arguments playlist = '/home/osmc/.kodi/userdata/playlists/music/douche.dpl' lib_folder = '/media/medias/Music' server = 'http://192.168.1.5:1961' # get dependencies from lxml import etree import HTMLParser h = HTMLParser.HTMLParser() import urllib # get the playlist tree = etree.parse(playlist) root = tree.getroot() # get tracks tracks = root.getchildren() # init the output list songs = [] # get values for track in tracks: item = track[0][0] # init the dict for item values = {} for value in item: # get the tag name tag = value.tag.rsplit('}', 1)[-1] # parse values if tag == 'title': #values['title'] = h.unescape(value.text) values['title'] = value.text elif tag == 'creator': #values['creator'] = h.unescape(value.text) values['creator'] = value.text elif tag == 'originalTrackNumber': values['trackNumber'] = value.text elif tag == 'res': url = value.text.replace('%25', '%') url = url.replace(server + '/%/', '') values['file'] = urllib.unquote(url).decode('utf-8') if len(values) > 0: print values songs.append(values) #print songs #first = tracks[0] #dlite1 = first[0] #item = dlite1[0] #title = item.find('dc:title', dlite1.nsmap) #artist = item.find('dc:creator', dlite1.nsmap) #tracknb = item.find('upnp:originalTrackNumber', dlite1.nsmap) #res = item.find('res') #print artist.text #print title.text #print tracknb.text #print res.text # print toto.tag.rsplit('}', 1)[-1] douche.dpl object.item.audioItem.musicTrack Between The Devil And The Deep Blue Sea Django Reinhardt Django Reinhardt Django Reinhardt Django Reinhardt Unknown Other Django With His American Friends Disc One 17 a4915f5c-77a6-1587-7cd3-aab5364e9d03 http://192.168.1.5:1961/%25/895519FCC53663234161D6CC2CD162C5/Dicky%2520$ object.item.audioItem.musicTrack Blue Moon Django Reinhardt Django Reinhardt Django Reinhardt Django Reinhardt Unknown Other Django With His American Friends Disc One 2 a4915f5c-77a6-1587-7cd3-aab5364e9d03 http://192.168.1.5:1961/%25/B8D0809D1D3871801B2A14C621C8D4B1/Coleman%25$ object.item.audioItem.musicTrack Les yeux noirs Django Reinhardt Django Reinhardt Django Reinhardt Django Reinhardt Unknown Jazz Accords parfaits 13 a4915f5c-77a6-1587-7cd3-aab5364e9d03 http://192.168.1.5:1961/%25/07A5F8F1AAEE46D85C05D4C5F4DB69CB/Django%252$ tests.pl #!/usr/bin/env python # -*- coding: utf-8 -*- # http://stackoverflow.com/questions/14853243/parsing-xml-with-namespace-in-python-via-elementtree import xml.etree.ElementTree e = xml.etree.ElementTree.parse('/home/osmc/.kodi/userdata/playlists/music/douche.dpl').getroot() namespaces = {'upnp': 'urn:schemas-upnp-org:metadata-1-0/upnp/','dc': 'http://purl.org/dc/elements/1.1/','dlna': 'urn:schemas-dlna-org:metadata-1-0/','sec': 'http://www.sec.co.kr/'} e.findall('upnp:artist', namespaces) from lxml import etree tree = etree.parse("/home/osmc/.kodi/userdata/playlists/music/douche.dpl") root = tree.getroot() root.findall('upnp:artist', root.nsmap) from lxml import etree tree = etree.parse("/home/osmc/.kodi/userdata/playlists/music/douche.dpl") root = tree.getroot() root # OUT: tracks = root.getchildren() tracks[0] # OUT: first = tracks[0] first # OUT: dlite1 = first[0] dlite1 # OUT: item = dlite1[0] item # OUT: artist = item.find('upnp:artist', dlite1.nsmap) artist # OUT: artist.text # OUT: 'Django Reinhardt' www.m3u #EXTM3U #EXTINF:0,audio addons://more/audio #EXTINF:0,18. Rammstein - Rammstein (Edit) /media/medias/Music/Rammstein/Rammstein - Rammstein (edit).mp3 #EXTINF:0,20. Rammstein - Hierate Mich (Edit) /media/medias/Music/Rammstein/Rammstein - Heirate mich (edit).mp3 #EXTINF:0,08. Abyssinians - 08 - Satta Massagana /media/medias/Music/The Abyssinians/The Abyssinians - Satta Massagana.mp3 #EXTINF:0,12. The All Seeing I - Beat Goes On /media/medias/Music/The All Seeing I/The All Seeing I - The Beat Goes On.mp3 #EXTINF:0,01. 4 Hero - Conceptions /media/medias/Music/4hero/Creating Patterns/01. 4hero - Conceptions.mp3 #EXTINF:0,13. 4 Hero - Les Fleur /media/medias/Music/4hero/4hero - Les Fleur.mp3 #EXTINF:0,01. - Compil-Filip-01 /media/medias/Music/P. Diddy/P. Diddy - Show Me Your Soul.mp3 #EXTINF:0,02. Amy Winehouse - You Know I'm No Good /media/medias/Music/Amy Winehouse/Back to Black/11. Amy Winehouse - You Know Im No Good (remix).mp3 #EXTINF:0,03. Amy Winehouse - Me & Mr. Jones /media/medias/Music/Amy Winehouse/Back to Black/03. Amy Winehouse - Me & Mr Jones.mp3 #EXTINF:0,05. Amy Winehouse - Back To Black /media/medias/Music/Amy Winehouse/Amy Winehouse - Back to Black.mp3 #EXTINF:0,04. Amy Winehouse - Fuck Me Pumps /media/medias/Music/Amy Winehouse/Amy Winehouse - Fuck Me Pumps.mp3 #EXTINF:0,02. Amy Winehouse - You Know I'm No Good /media/medias/Music/Amy Winehouse/Back to Black/11. Amy Winehouse - You Know I’m No Good (remix).mp3 #EXTINF:0,03. M+S - Est-Ce Que C'est Ça ? /media/medias/Music/-M-/Mister Mystère/03. -M- - Est-ce que c'est ça ?.mp3 yes.pl from lxml import etree tree = etree.parse("/home/osmc/.kodi/userdata/playlists/music/douche.dpl") root = tree.getroot() root # OUT: tracks = root.getchildren() tracks[0] # OUT: first = tracks[0] first # OUT: dlite1 = first[0] dlite1 # OUT: item = dlite1[0] item # OUT: artist = item.find('upnp:artist', dlite1.nsmap) artist # OUT: artist.text # OUT: 'Django Reinhardt' {{tag>osmc python}}