Convertito il parser da espressioni regolari a xml.dom.minidom

Leonardo Robol [2009-11-05 19:19]
Convertito il parser da espressioni regolari a xml.dom.minidom
Filename
RaiTV/ChannelLoader.py
RaiTV/VideoWidget.py
diff --git a/RaiTV/ChannelLoader.py b/RaiTV/ChannelLoader.py
index 05978f2..492168a 100644
--- a/RaiTV/ChannelLoader.py
+++ b/RaiTV/ChannelLoader.py
@@ -5,6 +5,7 @@
 #

 import urllib2, re, httplib
+from xml.dom.minidom import parseString

 class ChannelList():

@@ -27,9 +28,23 @@ class ChannelList():
     def parseChannels(self, xmlfile):
         """Fai il parse dei canali scaricati dalla rai"""

-        for channel, url in re.findall("<videoUnit name=\"([^\"]*)\".*>.*\\n.*<url>(\S*)</url>", xmlfile):
-            url = re.sub(r"&amp;", "&", url)
-            self.channels.append( (channel,url) )
+        dom = parseString(xmlfile)
+        channels = dom.getElementsByTagName("set")
+        for c in channels:
+            ## Recupero il nome del canale
+            name = c.getElementsByTagName("item")[0].getAttribute("name")
+            ## Recupero l'url
+            videounit = c.getElementsByTagName("videoUnit")
+            url_array = []
+            for vu in videounit:
+                url = vu.getElementsByTagName("url")[0]
+                if url.childNodes is not []:
+                    url_array.append(url.childNodes[0].data)
+
+            if url_array is not []:
+                self.channels.append((name, url_array[0]))
+
+


     def getChannel(self, channel):
@@ -38,8 +53,6 @@ class ChannelList():
         ## Scorriamo la lista per trovare il canale desiderato
         # it = self.channels.get_iter_first()

-
-
         if it is None:
             return None ## Qui c'è poco da fare, la lista è vuota

@@ -59,10 +72,13 @@ class ChannelList():
         """Ottiene l'URL dello streaming puntato da path
         nella liststore"""

+
         ## Ottengo l'URL
         it = self.channels.get_iter(path)
         url = self.channels.get_value(it, 1)

+        print "url: " + url
+
         return self.urlToMms(url)

     def urlToMms(self, url):
diff --git a/RaiTV/VideoWidget.py b/RaiTV/VideoWidget.py
index 51b82f1..6c319b1 100644
--- a/RaiTV/VideoWidget.py
+++ b/RaiTV/VideoWidget.py
@@ -16,6 +16,8 @@ class GstPlayer(threading.Thread):
         self.exit_required = False
         self.loading = False

+        self.daemon = True
+
     def set_sink(self, sink):
         assert self.xid
         self.imagesink = sink
ViewGit