3 # Rec10 TS Recording Tools
4 # Copyright (C) 2009 Yukikaze
9 import xml.parsers.expat
15 def xml2db(xmlpath,dbpath,bctypetemp):#bctypeは放送種別で'TE'(地デジ)BS,CSがある。地デジの場合は te数字 が入る
20 #db.execute('drop table tv')
21 #db.execute('drop table ch')
23 p=xml.parsers.expat.ParserCreate()
25 p.StartElementHandler=start_element
26 p.EndElementHandler=end_element
27 p.CharacterDataHandler=char_data
28 parseDocument(p,xmlpath)
32 rec10d.rec10db.new_tv(bctype)
33 rec10d.rec10db.new_ch(bctype)
34 def writetvDB(bctype,channel,start,stop,title,desc):#tvdateは(放送種別,チャンネル,start,stop,title,desc)の形式
35 rec10d.rec10db.add_tv(bctype,channel,start,stop,title,desc)
36 def writechDB(bctype,id,display):#tvdateは(チャンネル,display)の形式
37 rec10d.rec10db.add_ch(bctype,id,display)
38 def parseDocument(p,xmlfile):
42 def start_element(name,attrs):
43 global flags,lastflag,xmldate
46 for (key,val) in attrs.iteritems():
47 xmldate[name+":"+key]=val
48 def end_element(name):
49 global flags,lastflag,xmldate,db
52 ubctype=unicode(bctype)
53 uid=unicode(xmldate['channel:id'])
54 udn=unicode(xmldate['display-name'])
55 writechDB(bctype,uid,udn)
56 xmldate['channel:id']=""
57 xmldate['display-name']=""
58 elif name=="programme":
59 ubctype=unicode(bctype)
60 uch=unicode(xmldate['programme:channel'])
61 ustart=unicode(xmldate['programme:start'].replace(" +0900",""))
62 ustop=unicode(xmldate['programme:stop'].replace(" +0900",""))
63 utitle=unicode(xmldate['title'].replace(",","-"))
64 udesc=unicode(xmldate['desc'])
65 writetvDB(ubctype,uch,ustart,ustop,utitle,udesc)
72 r=db.execute("SELECT * FROM tv")
76 print bctype+" epg取り出し終了"
79 global flags,lastflag,xmldate
80 data=data.replace("\n","")
81 data=data.replace(" ","")
82 data=data.replace("\"","")
83 data=data.replace("\'","")
85 datat=zenhan.toHankaku(data)
88 data=datat.encode('utf-8')
89 if xmldate.has_key(lastflag):
90 if xmldate[lastflag]!=data:
91 xmldate[lastflag]+=data
93 xmldate[lastflag]=data