3 # Rec10 TS Recording Tools
4 # Copyright (C) 2009 Yukikaze
19 recpath = configreader.getpath('recpath')
20 path = str(os.path.dirname(os.path.abspath(__file__))) + "/"
27 tasks = recdb.getnow("2")
29 inum = recdb.countRecNow_minutes("10")
30 #inum=recdb.countRecNow("1")
31 print "番組表更新処理"+ datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
32 print "inum:" + str(inum) + "bscsrec:" + str(status.getBSCSRecording()) + "terec:" + str(status.getTERecording())
34 #if inum+status.getBSCSRecording()+status.getTERecording() < 2:
35 update = chdb.update()
45 if bctype.find('te') > -1:
46 recnum = status.getTERecording() + recdb.countRecNow_minutes_TE("10")
47 print bctype + "//ing:" + str(status.getTERecording()) + ":task:" + str(recdb.countRecNow_minutes_TE("10"))
49 recnum = status.getBSCSRecording() + recdb.countRecNow_minutes_BSCS("10")
50 print bctype + "//ing:" + str(status.getBSCSRecording()) + ":task:" + str(recdb.countRecNow_minutes_BSCS("10"))
53 rec10d.rec10db.update_status_by_bctype_chdata(bctype, "0")
54 epgdb.updatebc(bctype)
55 update = chdb.update()
56 #rec10d.rec10db.update_by_bctype_chdata(bctype)
73 bt = datetime.datetime.strptime(btime, "%Y-%m-%d %H:%M:%S")
76 bt = datetime.datetime.strptime("2009-01-01 00:00:00", "%Y-%m-%d %H:%M:%S")
79 et = datetime.datetime.strptime(etime, "%Y-%m-%d %H:%M:%S")
82 et = datetime.datetime.strptime("2009-01-01 00:00:00", "%Y-%m-%d %H:%M:%S")
89 tnow = datetime.datetime.now()
91 dt = dtt.days * 24 * 60 * 60 + dtt.seconds
93 if task["type"] == recdb.REC_RESERVE:#"res,"+chtxt+","+title+","+btime+","+etime+","+opt
94 if (dt < 58 * 60 and dt > 20 * 60):
98 else:#子プロセスの場合 アップデートを行って終了
99 bctypet = chdb.chtxtsearch(chtxt)['bctype']
100 chdatat = rec10d.rec10db.select_by_bctype_chdata(bctypet)
101 dt1 = datetime.datetime.strptime(chdatat[0][5], "%Y-%m-%d %H:%M:%S")-datetime.datetime.now()
102 dt1 = dt1.days * 24 * 60 * 60 + dt1.seconds
103 #print "oikake search:"+str(dt1)
105 recdata = epgdb.searchtime2(title.decode('utf-8'), btime, "5", chtxt)
110 bt = datetime.datetime.strptime(btimen, "%Y-%m-%d %H:%M:%S")
111 et = datetime.datetime.strptime(etimen, "%Y-%m-%d %H:%M:%S")
112 btimen = bt.strftime("%Y-%m-%d %H:%M:%S")
113 etimen = et.strftime("%Y-%m-%d %H:%M:%S")
116 recdb.del_reckey(recdb.REC_RESERVE, title, chtxt, btime)
117 recdb.rec_reckey(recdb.REC_FINAL_RESERVE, titlen, chtxtn, btimen, etimen, opt)
118 print "Oikake "+title+" : "+titlen+" "+btimen+" "+etimen
119 except Exception, inst:
123 print "nothing match"
125 #print rec10d.rec10db.select_by_bctype_chdata(bctypet)
126 if rec10d.rec10db.select_by_bctype_chdata(bctypet)[0][6] != "0":
127 rec10d.rec10db.update_status_by_bctype_chdata(bctypet, "3")
131 recdb.del_reckey(recdb.REC_RESERVE, title, chtxt, btime)
132 recdb.rec_reckey(recdb.REC_FINAL_RESERVE, title, chtxt, btime, etime, opt)
133 except Exception, inst:
136 elif task["type"] == recdb.REC_KEYWORD:#"key,"+chtxt+","+keyword+","+btime+","+deltatime+","+opt
137 deltatime = task['deltatime']
139 recdata = epgdb.searchtime2(title.decode('utf-8'), btime, deltatime, chtxt)
145 bt = datetime.datetime.strptime(btimet, "%Y-%m-%d %H:%M:%S")
146 et = datetime.datetime.strptime(etimet, "%Y-%m-%d %H:%M:%S")
147 btimet = bt.strftime("%Y-%m-%d %H:%M:%S")
148 etimet = et.strftime("%Y-%m-%d %H:%M:%S")
150 recdb.del_reckey(recdb.REC_KEYWORD, title, chtxt, btime)
151 recdb.rec_reckey(recdb.REC_RESERVE, titlet, chtxtt, btimet, etimet, opt)
152 print "key "+title+" : "+titlet+" "+btimet+" "+etimet
153 except Exception, inst:
157 print "nothing match"
158 elif task["type"] == recdb.REC_KEYWORD_EVERY_SOME_DAYS:#"keyevery,"+chtxt+","+keyword+","+btime+","+deltatime+","+opt+","+deltaday
159 deltatime = task['deltatime']
160 deltaday = task['deltaday']
161 dd = datetime.timedelta(days=int(deltaday))
163 recdb.del_reckey(recdb.REC_KEYWORD_EVERY_SOME_DAYS, title, chtxt, btime)
166 btxt = bt.strftime("%Y-%m-%d %H:%M:%S")
167 etxt = et.strftime("%Y-%m-%d %H:%M:%S")
168 recdb.everyreserv(title, chtxt, btxt, etxt, deltatime, opt, deltaday)
170 recdb.keyreserv(title, chtxt, btime, etime, deltatime, opt)
171 recdb.del_reckey(recdb.REC_KEYWORD_EVERY_SOME_DAYS, title, chtxt, btime)
174 btxt = bt.strftime("%Y-%m-%d %H:%M:%S")
175 etxt = et.strftime("%Y-%m-%d %H:%M:%S")
176 recdb.everyreserv(title, chtxt, btxt, etxt, deltatime, opt, deltaday)
178 elif task["type"] == recdb.REC_FINAL_RESERVE:#"rec,"+chtxt+","+title+","+btime+","+etime+","+opt
180 if dt < 6 * 60 and dt > 0:
181 recdb.del_reckey(recdb.REC_FINAL_RESERVE, title, chtxt, btime)
182 recdb.rec_reckey(recdb.REC_TS_RECORDING, title, chtxt, btime, etime, opt)
183 print "録画開始 "+title+" "+btime+" "+etime
185 if pid != 0:#親プロセスの場合
189 tv2avi.timetv2b25(recpath + "/" + title + ".avi", chtxt, btime, etime, opt)
190 recdb.del_reckey(recdb.REC_TS_RECORDING, title, chtxt, btime)
191 tnow = datetime.datetime.now()
192 bt = datetime.datetime.strptime(btime, "%Y-%m-%d %H:%M:%S")
193 et = datetime.datetime.strptime(etime, "%Y-%m-%d %H:%M:%S")
195 bt = tnow + datetime.timedelta(seconds=600)
196 et = et + dt + datetime.timedelta(seconds=600)
197 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
198 etime = et.strftime("%Y-%m-%d %H:%M:%S")
199 recdb.rec_reckey(recdb.REC_TS_DECODE_QUE, title, chtxt, btime, etime, opt)
201 elif task["type"] == recdb.REC_TS_DECODE_QUE:
203 if status.getB25Decoding() < 2:
205 if pid != 0:#親プロセスの場合
208 pin = recpath + "/" + title
209 recdb.del_reckey(recdb.REC_TS_DECODE_QUE, title, chtxt, btime)
210 recdb.rec_reckey(recdb.REC_TS_DECODING, title, chtxt, btime, etime, opt)
211 tv2avi.b252ts(pin, chtxt, btime, etime, opt)
212 recdb.del_reckey(recdb.REC_TS_DECODING, title, chtxt, btime)
213 if not os.access(recpath + "/" + title + ".ts", os.F_OK):
214 recdb.del_reckey(recdb.REC_TS_DECODING, title, chtxt, btime)
215 recdb.rec_reckey(recdb.REC_MISS_DECODE, title, chtxt, btime, etime, opt)
216 bt = datetime.datetime.strptime(btime, "%Y-%m-%d %H:%M:%S")
217 et = datetime.datetime.strptime(etime, "%Y-%m-%d %H:%M:%S")
219 tnow = datetime.datetime.now()
220 bt = tnow + datetime.timedelta(seconds=900)
222 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
223 etime = et.strftime("%Y-%m-%d %H:%M:%S")
224 recdb.rec_reckey(recdb.REC_ENCODE_QUE, title, chtxt, btime, etime, opt)
225 print checker.checkB25Decode(recpath + "/" + title + ".ts.b25", recpath + "/" + title + ".ts")
226 if checker.checkB25Decode(recpath + "/" + title + ".ts.b25", recpath + "/" + title + ".ts") == 1:
227 os.remove(recpath + "/" + title + ".ts.b25")
230 recdb.del_reckey(recdb.REC_TS_DECODE_QUE, title, chtxt, btime)
231 bt = bt + datetime.timedelta(seconds=600)
232 et = et + datetime.timedelta(seconds=600)
233 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
234 etime = et.strftime("%Y-%m-%d %H:%M:%S")
235 recdb.rec_reckey(recdb.REC_TS_DECODE_QUE, title, chtxt, btime, etime, opt)
236 elif task["type"] == recdb.REC_ENCODE_QUE:
238 if status.getEncoding() < int(configreader.getenv("enc_max")):
244 pin = recpath + "/" + title + ".ts"
245 if re.search("d", opt):
246 pin = recpath + "/" + title + ".sa.avi"
247 if re.search("5", opt):
248 pin = recpath + "/" + title + ".sa.avi"
249 pout = recpath + "/" + title + ".avi"
250 print [pin, pout, opt]
252 #print pin+":"+pout+":"+opt
253 recdb.del_reckey(recdb.REC_ENCODE_QUE, title, chtxt, btime)
254 recdb.rec_reckey(recdb.REC_ENCODE_LOCAL, title, chtxt, btime, etime, opt)
255 tv2avi.ts2avi(pin, pout, opt)
256 recdb.del_reckey(recdb.REC_ENCODE_LOCAL, title, chtxt, btime)
257 recdb.rec_reckey(recdb.REC_FIN_LOCAL, title, chtxt, btime, etime, opt)
260 recdb.del_reckey(recdb.REC_ENCODE_QUE, title, chtxt, btime)
261 bt = bt + datetime.timedelta(seconds=600)
262 et = et + datetime.timedelta(seconds=600)
263 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
264 etime = et.strftime("%Y-%m-%d %H:%M:%S")
265 recdb.rec_reckey(recdb.REC_ENCODE_QUE, title, chtxt, btime, etime, opt)