В парсер M3U добавлена поддержка дополнительных тегов (группы, страны и т.д.)
[vpproxy.git] / xmlparse.py
diff --git a/xmlparse.py b/xmlparse.py
new file mode 100644 (file)
index 0000000..bc4c3cf
--- /dev/null
@@ -0,0 +1,60 @@
+#!/usr/bin/python
+
+import xml.dom.minidom
+import sys,os
+from pprint import pprint
+from plugins.modules.PlaylistGenerator import PlaylistGenerator
+
+tvguide_url="http://www.teleguide.info/download/new3/jtv.zip"
+
+def parseXML(filename):
+  datasource = open(filename)
+  return xml.dom.minidom.parse(datasource)   # parse an open file
+
+def getText(element):
+  rc = []
+  nodelist = element.childNodes
+  for node in nodelist:
+    if node.nodeType == node.TEXT_NODE:
+      rc.append(node.data)
+      return ''.join(rc)
+
+def main(argv):
+  if len(argv) < 2:
+    sys.stderr.write("Usage: %s <xml-file>\n" % (argv[0],))
+    return 1
+                    
+  if not os.path.exists(argv[1]):
+    sys.stderr.write("ERROR: Channel file %r was not found!\n" % (argv[1],))
+    return 1
+
+  dom = parseXML(argv[1])
+  tracklist = dom.getElementsByTagName('playlist')[0].getElementsByTagName('trackList')[0].getElementsByTagName('track')
+
+  channels = PlaylistGenerator()
+  
+  for track in tracklist:
+  
+    channel = {}
+  
+    channel['name'] = getText(track.getElementsByTagName('title')[0])
+    channel['url'] = getText(track.getElementsByTagName('location')[0])
+    try:
+      channel['logo'] = getText(track.getElementsByTagName('image')[0])
+    except:
+      None
+    try:    
+      channel['country'] = getText(track.getElementsByTagName('country')[0])
+    except:
+      None
+    try:        
+      channel['group'] = getText(track.getElementsByTagName('category')[0])
+    except:
+      None  
+
+    channels.addItem(channel)  
+
+  print channels.dumpm3u().encode('utf8')
+
+if __name__ == "__main__":
+   sys.exit(main(sys.argv))
\ No newline at end of file