Переход на асинхронное закрытие каналов с таймаутом, чтобы при обрыве соединения...
[vpproxy.git] / xmlparse.py
1 #!/usr/bin/python
2
3 import xml.dom.minidom
4 import sys,os
5 from plugins.modules.PlaylistGenerator import PlaylistGenerator
6
7 tvguide_url="http://www.teleguide.info/download/new3/jtv.zip"
8
9 def parseXML(filename):
10   datasource = open(filename)
11   return xml.dom.minidom.parse(datasource)   # parse an open file
12
13 def getText(element):
14   rc = []
15   nodelist = element.childNodes
16   for node in nodelist:
17     if node.nodeType == node.TEXT_NODE:
18       rc.append(node.data)
19       return ''.join(rc)
20
21 def main(argv):
22   if len(argv) < 2:
23     sys.stderr.write("Usage: %s <xml-file>\n" % (argv[0],))
24     return 1
25                     
26   if not os.path.exists(argv[1]):
27     sys.stderr.write("ERROR: Channel file %r was not found!\n" % (argv[1],))
28     return 1
29
30   dom = parseXML(argv[1])
31   tracklist = dom.getElementsByTagName('playlist')[0].getElementsByTagName('trackList')[0].getElementsByTagName('track')
32
33   channels = PlaylistGenerator()
34   
35   for track in tracklist:
36   
37     channel = {}
38   
39     channel['name'] = getText(track.getElementsByTagName('title')[0])
40     channel['url'] = getText(track.getElementsByTagName('location')[0])
41     try:
42       channel['logo'] = getText(track.getElementsByTagName('image')[0])
43     except:
44       None
45     try:    
46       channel['country'] = getText(track.getElementsByTagName('country')[0])
47     except:
48       None
49     try:        
50       channel['group'] = getText(track.getElementsByTagName('category')[0])
51     except:
52       None  
53
54     channels.addItem(channel)  
55
56   print channels.dumpm3u().encode('utf8')
57
58 if __name__ == "__main__":
59    sys.exit(main(sys.argv))