3 # Rec10 TS Recording Tools
4 # Copyright (C) 2009 Yukikaze
7 import xml.parsers.expat
19 def xml2db(xmlpath, bctypetemp):#bctypeは放送種別で'TE'(地デジ)BS,CSがある。地デジの場合は te数字 が入る
24 #db.execute('drop table tv')
25 #db.execute('drop table ch')
27 p = xml.parsers.expat.ParserCreate()
29 p.StartElementHandler = start_element
30 p.EndElementHandler = end_element
31 p.CharacterDataHandler = char_data
32 parseDocument(p, xmlpath)
36 # rec10d.rec10db.new_tv(bctype)
37 # rec10d.rec10db.new_ch(bctype)
38 #def writetvDB(bctype,channel,start,stop,title,desc):#tvdateは(放送種別,チャンネル,start,stop,title,desc)の形式
39 # rec10d.rec10db.add_tv(bctype,channel,start,stop,title,desc)
40 def writemultitvDB(tvlists):
42 rec10d.rec10db.new_tv(bctype)
43 rec10d.rec10db.add_multi_tv(tvlists)
44 #def writechDB(bctype,id,display):#tvdateは(チャンネル,display)の形式
45 # rec10d.rec10db.add_ch(bctype,id,display)
46 def writemultichDB(chlists):
48 rec10d.rec10db.new_ch(bctype)
49 rec10d.rec10db.add_multi_ch(chlists)
50 def parseDocument(p, xmlfile):
51 f = open(xmlfile, 'r')
54 def start_element(name, attrs):
55 global flags, lastflag, xmldate
58 for (key, val) in attrs.iteritems():
59 xmldate[name + ":" + key] = val
60 def end_element(name):
61 global flags, lastflag, xmldate, db, chlists, tvlists
64 ubctype = unicode(bctype)
65 uid = unicode(xmldate['channel:id'])
66 udn = unicode(xmldate['display-name'])
69 bs = chdb.ontvsearch(xmldate['channel:id'])
72 bcsearch = bs['bctype']
73 if ((bcsearch != None) and (bcsearch == bctype)):
74 chlists.append([bctype, uid, udn])
75 #print bcsearch+"/"+bctype+" 合致"
78 #print bcsearch+"/"+bctype+" 不一致"
80 #writechDB(bctype,uid,udn)
81 xmldate['channel:id'] = ""
82 xmldate['display-name'] = ""
83 elif name == "programme":
84 ubctype = unicode(bctype)
85 uch = unicode(xmldate['programme:channel'])
86 ustart = unicode(xmldate['programme:start'].replace(" +0900", ""))
87 ustop = unicode(xmldate['programme:stop'].replace(" +0900", ""))
88 utitle = unicode(xmldate['title'].replace(",", "-"))
89 udesc = unicode(xmldate['desc'])
90 ulongdesc = unicode(xmldate['longdesc'])
91 ucategory = unicode(xmldate['category'])
93 tvlists.append([ubctype, uch, ustart, ustop, utitle, udesc,ulongdesc,ucategory])
94 #writetvDB(ubctype,uch,ustart,ustop,utitle,udesc)
99 xmldate['longdesc'] = ""
100 xmldate['category'] =""
104 writemultichDB(chlists)
107 writemultitvDB(tvlists)
109 print bctype + " epg取り出し終了"
112 global flags, lastflag, xmldate
113 data = data.replace("\n", "")
114 data = data.replace(" ", "")
115 data = data.replace("\"", "")
116 data = data.replace("\'", "")
118 datat = zenhan.toHankaku_ABC123(data)
121 data = datat.encode('utf-8')
122 if xmldate.has_key(lastflag):
123 if xmldate[lastflag] != data:
124 xmldate[lastflag] += data
126 xmldate[lastflag] = data