3 # Rec10 TS Recording Tools
4 # Copyright (C) 2009 Yukikaze
7 import xml.parsers.expat
23 def xml2db(xmlpath, bctypetemp):#bctypeは放送種別で'TE'(地デジ)BS,CSがある。地デジの場合は te数字 が入る
26 p = xml.parsers.expat.ParserCreate()
28 p.StartElementHandler = start_element
29 p.EndElementHandler = end_element
30 p.CharacterDataHandler = char_data
31 parseDocument(p, xmlpath)
32 def writemultitvDB(tvlists):
34 rec10d.rec10db.new_tv(bctype)
35 rec10d.rec10db.add_multi_tv(tvlists)
36 def writemultichDB(chlists):
38 rec10d.rec10db.new_ch(bctype)
39 rec10d.rec10db.add_multi_ch(chlists)
40 def parseDocument(p, xmlfile):
41 f = open(xmlfile, 'r')
44 def start_element(name, attrs):
45 global flags, lastflag, xmldate,dtb
48 for (key, val) in attrs.iteritems():
49 xmldate[name + ":" + key] = val
50 dtb=datetime.datetime.now()
51 def end_element(name):
52 global flags, lastflag, xmldate, db, chlists, tvlists ,bayes,dtb
55 ubctype = unicode(bctype)
56 uid = unicode(xmldate['channel:id'])
57 udn = unicode(xmldate['display-name'])
60 bs = chdb.ontvsearch(xmldate['channel:id'])
63 bcsearch = bs['bctype']
64 if ((bcsearch != None) and (bcsearch == bctype)):
65 chlists.append([bctype, uid, udn])
66 xmldate['channel:id'] = ""
67 xmldate['display-name'] = ""
68 elif name == "programme":
69 ubctype = unicode(bctype)
70 uch = unicode(xmldate['programme:channel'])
71 ustart = unicode(xmldate['programme:start'].replace(" +0900", ""))
72 ustop = unicode(xmldate['programme:stop'].replace(" +0900", ""))
73 utitle = unicode(xmldate['title'].replace(",", "-"))
74 udesc = unicode(xmldate['desc'])
75 ulongdesc = unicode(xmldate['longdesc'])
76 ucategory = unicode(xmldate['category'])
77 tch=chdb.ontvsearch(uch)
79 if tch.get('bctype',"")==ubctype:
80 bt=bayes.get(tch['chtxt'],["","",0])
81 bt2=[bt[0]+utitle+" ",bt[1]+udesc+" "+ulongdesc+" ",bt[2]+1]
82 bayes[tch['chtxt']]=bt2
83 tvlists.append([ubctype, uch, ustart, ustop, utitle, udesc,ulongdesc,ucategory])
84 if auto_rec.calc_key(tch['chtxt'], utitle, udesc+" "+ulongdesc):
85 recdb.rec_reckey(recdb.REC_BAYES_SUGGEST, utitle, tch['chtxt'], ustart,ustop,"")
88 xmldate['longdesc'] = ""
89 xmldate['category'] =""
92 writemultichDB(chlists)
95 writemultitvDB(tvlists)
97 for ct,list in bayes.items():
98 auto_rec.update_recall(ct,list[0],list[1],list[2])
99 auto_rec.update_recall("ALL",list[0],list[1],list[2])
100 dtb=datetime.datetime.now()-dtb
101 print bctype + " epg取り出し終了"
102 print str(dtb.days * 24 * 60 * 60 + dtb.seconds)+"seconds taken for updating bayes-auto DB ."
105 global flags, lastflag, xmldate
106 data = data.replace("\n", "")
107 data = data.replace(" ", "")
108 data = data.replace("\"", "")
109 data = data.replace("\'", "")
111 datat = zenhan.toHankaku_ABC123(data)
114 data = datat.encode('utf-8')
115 if xmldate.has_key(lastflag):
116 if xmldate[lastflag] != data:
117 xmldate[lastflag] += data
119 xmldate[lastflag] = data