==== 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}}