Hi,
ich bin nicht sicher ob mir hier einer helfen kann, da ich hier eher ein Python Problem vermute, aber vielleicht hat ja einer ne Idee...
Basis ist eine DM800 im Basis Setup (also Favourites etc. so wie nach dem erstmaligen Einrichten). Ich lasse jetzt folgendes Python Script laufen (ist in /usr/script und hat den Namen test1.py):
# -*- coding: utf-8 -*-
import urllib
import xml.dom.minidom
url0 = "http://127.0.0.1/web/getservices?sRef=1%3A7%3A1%3A0%3A0%3A0%3A0%3A0%3A0%3A0%3AFROM%20BOUQUET%20%22userbouquet.favourites_hd.tv%22%20ORDER%20BY%20bouquet"
sl = unicode(urllib.urlopen(url0).read(), "utf-8")
sld = xml.dom.minidom.parseString(sl)
sn = sld.getElementsByTagName("e2servicename")
sr = sld.getElementsByTagName("e2servicereference")
for snode in sn:
print snode.childNodes[0].data
for snode in sr:
print snode.childNodes[0].data
sld.unlink()
Alles anzeigen
Ergebnis ist wie erwartet:
root@dm800:~> python /usr/script/test1.py
PREMIERE HD
DISCOVERY HD
ANIXE HD
ASTRA HD+
1:0:19:81:6:85:C00000:0:0:0:
1:0:19:82:6:85:C00000:0:0:0:
1:0:19:84:6:85:C00000:0:0:0:
1:0:19:83:6:85:C00000:0:0:0:
root@dm800:~>
Jetzt gehe ich auf eine andere Liste los... Script wird geändert in:
# -*- coding: utf-8 -*-
import urllib
import xml.dom.minidom
url0 = "http://127.0.0.1/web/getservices?sRef=1%3A7%3A1%3A0%3A0%3A0%3A0%3A0%3A0%3A0%3AFROM%20BOUQUET%20%22userbouquet.favourites.tv%22%20ORDER%20BY%20bouquet"
sl = unicode(urllib.urlopen(url0).read(), "utf-8")
sld = xml.dom.minidom.parseString(sl)
sn = sld.getElementsByTagName("e2servicename")
sr = sld.getElementsByTagName("e2servicereference")
for snode in sn:
print snode.childNodes[0].data
for snode in sr:
print snode.childNodes[0].data
sld.unlink()
Alles anzeigen
Der einzige Unterschied ist also, daß wir auf userbouquet.favourites.tv losgehen anstatt auf userbouquet.favourites_hd.tv. Passieren tut dann das:
root@dm800:~> python /usr/script/test1.py
Traceback (most recent call last):
File "/usr/script/test1.py", line 6, in <module>
sld = xml.dom.minidom.parseString(sl)
File "/usr/lib/python2.5/xml/dom/minidom.py", line 1923, in parseString
return expatbuilder.parseString(string)
File "/usr/lib/python2.5/xml/dom/expatbuilder.py", line 940, in parseString
return builder.parseString(string)
File "/usr/lib/python2.5/xml/dom/expatbuilder.py", line 223, in parseString
parser.Parse(string, True)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in position 3665: ordinal not in range(128)
root@dm800:~>
Alles anzeigen
...es scheint so zu sein, dass sobald in der Serviceliste ein Ascii-Zeichen <128 auftaucht es in den Parser Modulen kracht, da hier offensichtlich keine utf-8 decodierung verwendet wird... Richtig...?
Hat jemand eine Idee, wie ich das hinkriege...?
Danke für alle Tipps..
Klaus