3 # Rec10 TS Recording Tools
4 # Copyright (C) 2009 Yukikaze
20 recpath = configreader.getpath('recpath')
21 path = str(os.path.dirname(os.path.abspath(__file__))) + "/"
27 recdb.delete_old("24")
28 tasks = recdb.getnow("2")
30 inum = recdb.countRecNow_minutes("10")
31 #inum=recdb.countRecNow("1")
32 print "番組表更新処理"+ datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
33 print "inum:" + str(inum) + "bscsrec:" + str(status.getBSCSRecording()) + "terec:" + str(status.getTERecording())
35 #if inum+status.getBSCSRecording()+status.getTERecording() < 2:
38 update = chdb.update()
48 if bctype.find('te') > -1:
49 recnum = status.getTERecording() + recdb.countRecNow_minutes_TE("10")
50 print bctype + "//ing:" + str(status.getTERecording()) + ":task:" + str(recdb.countRecNow_minutes_TE("10"))
52 recnum = status.getBSCSRecording() + recdb.countRecNow_minutes_BSCS("10")
53 print bctype + "//ing:" + str(status.getBSCSRecording()) + ":task:" + str(recdb.countRecNow_minutes_BSCS("10"))
56 rec10d.rec10db.update_status_by_bctype_chdata(bctype, "0")
57 epgdb.updatebc(bctype)
58 update = chdb.update()
60 #rec10d.rec10db.update_by_bctype_chdata(bctype)
76 bt = datetime.datetime.strptime(btime, "%Y-%m-%d %H:%M:%S")
79 bt = datetime.datetime.strptime("2009-01-01 00:00:00", "%Y-%m-%d %H:%M:%S")
82 et = datetime.datetime.strptime(etime, "%Y-%m-%d %H:%M:%S")
85 et = datetime.datetime.strptime("2009-01-01 00:00:00", "%Y-%m-%d %H:%M:%S")
92 tnow = datetime.datetime.now()
94 dt = dtt.days * 24 * 60 * 60 + dtt.seconds
96 if task["type"] == recdb.REC_RESERVE:#"res,"+chtxt+","+title+","+btime+","+etime+","+opt
97 if (dt < 58 * 60 and dt > 20 * 60):
101 else:#子プロセスの場合 アップデートを行って終了
102 bctypet = chdb.chtxtsearch(chtxt)['bctype']
103 chdatat = rec10d.rec10db.select_by_bctype_chdata(bctypet)
104 dt1 = datetime.datetime.strptime(chdatat[0][5], "%Y-%m-%d %H:%M:%S")-datetime.datetime.now()
105 dt1 = dt1.days * 24 * 60 * 60 + dt1.seconds
106 #print "oikake search:"+str(dt1)
108 recdata = epgdb.searchtime2(title.decode('utf-8'), btime, "5", chtxt)
113 bt = datetime.datetime.strptime(btimen, "%Y-%m-%d %H:%M:%S")
114 et = datetime.datetime.strptime(etimen, "%Y-%m-%d %H:%M:%S")
115 btimen = bt.strftime("%Y-%m-%d %H:%M:%S")
116 etimen = et.strftime("%Y-%m-%d %H:%M:%S")
119 recdb.del_reckey(recdb.REC_RESERVE, title, chtxt, btime)
120 recdb.rec_reckey(recdb.REC_FINAL_RESERVE, titlen, chtxtn, btimen, etimen, opt)
121 print "Oikake "+title+" : "+titlen+" "+btimen+" "+etimen
122 except Exception, inst:
126 print "nothing match"
128 #print rec10d.rec10db.select_by_bctype_chdata(bctypet)
129 if rec10d.rec10db.select_by_bctype_chdata(bctypet)[0][6] != "0":
130 rec10d.rec10db.update_status_by_bctype_chdata(bctypet, "3")
134 recdb.del_reckey(recdb.REC_RESERVE, title, chtxt, btime)
135 recdb.rec_reckey(recdb.REC_FINAL_RESERVE, title, chtxt, btime, etime, opt)
136 except Exception, inst:
139 elif task["type"] == recdb.REC_KEYWORD:#"key,"+chtxt+","+keyword+","+btime+","+deltatime+","+opt
140 deltatime = task['deltatime']
142 recdata = epgdb.searchtime2(title.decode('utf-8'), btime, deltatime, chtxt)
148 bt = datetime.datetime.strptime(btimet, "%Y-%m-%d %H:%M:%S")
149 et = datetime.datetime.strptime(etimet, "%Y-%m-%d %H:%M:%S")
150 btimet = bt.strftime("%Y-%m-%d %H:%M:%S")
151 etimet = et.strftime("%Y-%m-%d %H:%M:%S")
153 recdb.del_reckey(recdb.REC_KEYWORD, title, chtxt, btime)
154 recdb.rec_reckey(recdb.REC_RESERVE, titlet, chtxtt, btimet, etimet, opt)
155 print "key "+title+" : "+titlet+" "+btimet+" "+etimet
156 except Exception, inst:
160 print "nothing match"
161 elif task["type"] == recdb.REC_KEYWORD_EVERY_SOME_DAYS:#"keyevery,"+chtxt+","+keyword+","+btime+","+deltatime+","+opt+","+deltaday
162 deltatime = task['deltatime']
163 deltaday = task['deltaday']
164 dd = datetime.timedelta(days=int(deltaday))
166 recdb.del_reckey(recdb.REC_KEYWORD_EVERY_SOME_DAYS, title, chtxt, btime)
169 btxt = bt.strftime("%Y-%m-%d %H:%M:%S")
170 etxt = et.strftime("%Y-%m-%d %H:%M:%S")
171 recdb.everyreserv(title, chtxt, btxt, etxt, deltatime, opt, deltaday)
173 recdb.keyreserv(title, chtxt, btime, etime, deltatime, opt)
174 recdb.del_reckey(recdb.REC_KEYWORD_EVERY_SOME_DAYS, title, chtxt, btime)
177 btxt = bt.strftime("%Y-%m-%d %H:%M:%S")
178 etxt = et.strftime("%Y-%m-%d %H:%M:%S")
179 recdb.everyreserv(title, chtxt, btxt, etxt, deltatime, opt, deltaday)
181 elif task["type"] == recdb.REC_FINAL_RESERVE:#"rec,"+chtxt+","+title+","+btime+","+etime+","+opt
183 if dt < 6 * 60 and dt > 0:
184 recdb.del_reckey(recdb.REC_FINAL_RESERVE, title, chtxt, btime)
185 recdb.rec_reckey(recdb.REC_TS_RECORDING, title, chtxt, btime, etime, opt)
186 print "録画開始 "+title+" "+btime+" "+etime
188 if pid != 0:#親プロセスの場合
193 testpath=[os.path.join(recpath,title+".ts.b25")]
194 testpath.append(os.path.join(recpath,title+".ts"))
195 testpath.append(os.path.join(recpath,title+".avi"))
196 testpath.append(os.path.join(recpath,title+".mkv"))
197 testpath.append(os.path.join(recpath,title+".log"))
200 if os.path.exists(ti):
203 ttitle=title+"_"+datetime.datetime.now().strftime("%Y%m%d%H%M")
204 tv2avi.timetv2b25(recpath + "/" + ttitle + ".avi", chtxt, btime, etime, opt)
205 recdb.del_reckey(recdb.REC_TS_RECORDING, title, chtxt, btime)
206 tnow = datetime.datetime.now()
207 bt = datetime.datetime.strptime(btime, "%Y-%m-%d %H:%M:%S")
208 et = datetime.datetime.strptime(etime, "%Y-%m-%d %H:%M:%S")
210 bt = tnow + datetime.timedelta(seconds=600)
211 et = et + dt + datetime.timedelta(seconds=600)
212 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
213 etime = et.strftime("%Y-%m-%d %H:%M:%S")
214 recdb.rec_reckey(recdb.REC_TS_DECODE_QUE, ttitle, chtxt, btime, etime, opt)
216 elif task["type"] == recdb.REC_TS_DECODE_QUE:
220 if pid != 0:#親プロセスの場合
225 if status.getB25Decoding() < 2:
226 pin = recpath + "/" + title
227 recdb.del_reckey(recdb.REC_TS_DECODE_QUE, title, chtxt, btime)
228 recdb.rec_reckey(recdb.REC_TS_DECODING, title, chtxt, btime, etime, opt)
229 tv2avi.b252ts(pin, chtxt, btime, etime, opt)
230 recdb.del_reckey(recdb.REC_TS_DECODING, title, chtxt, btime)
231 if not os.access(recpath + "/" + title + ".ts", os.F_OK):
232 recdb.del_reckey(recdb.REC_TS_DECODING, title, chtxt, btime)
233 recdb.rec_reckey(recdb.REC_MISS_DECODE, title, chtxt, btime, etime, opt)
234 bt = datetime.datetime.strptime(btime, "%Y-%m-%d %H:%M:%S")
235 et = datetime.datetime.strptime(etime, "%Y-%m-%d %H:%M:%S")
237 tnow = datetime.datetime.now()
238 bt = tnow + datetime.timedelta(seconds=900)
240 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
241 etime = et.strftime("%Y-%m-%d %H:%M:%S")
242 recdb.rec_reckey(recdb.REC_ENCODE_QUE, title, chtxt, btime, etime, opt)
243 print checker.checkB25Decode(recpath + "/" + title + ".ts.b25", recpath + "/" + title + ".ts")
244 #if checker.checkB25Decode(recpath + "/" + title + ".ts.b25", recpath + "/" + title + ".ts") == 1:
245 #os.remove(recpath + "/" + title + ".ts.b25")
248 recdb.del_reckey(recdb.REC_TS_DECODE_QUE, title, chtxt, btime)
249 bt = bt + datetime.timedelta(seconds=600)
250 et = et + datetime.timedelta(seconds=600)
251 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
252 etime = et.strftime("%Y-%m-%d %H:%M:%S")
253 recdb.rec_reckey(recdb.REC_TS_DECODE_QUE, title, chtxt, btime, etime, opt)
255 elif task["type"] == recdb.REC_ENCODE_QUE:
257 encodenum=encodenum+1
263 time.sleep(5*encodenum)
264 if status.getEncoding() < int(configreader.getenv("enc_max")):
266 pin = recpath + "/" + title + ".ts"
267 if re.search("d", opt):
268 pin = recpath + "/" + title + ".sa.avi"
269 if re.search("5", opt):
270 pin = recpath + "/" + title + ".sa.avi"
271 #pout = recpath + "/" + title + ".avi"
272 pout = recpath + "/" + title + ".mkv"
273 print [pin, pout, opt]
275 #print pin+":"+pout+":"+opt
276 recdb.del_reckey(recdb.REC_ENCODE_QUE, title, chtxt, btime)
277 recdb.rec_reckey(recdb.REC_ENCODE_LOCAL, title, chtxt, btime, etime, opt)
278 tv2mkv.ts2mkv(pin, pout, opt)
279 #tv2avi.ts2avi(pin, pout, opt)
280 recdb.del_reckey(recdb.REC_ENCODE_LOCAL, title, chtxt, btime)
281 recdb.rec_reckey(recdb.REC_FIN_LOCAL, title, chtxt, btime, etime, opt)
284 recdb.del_reckey(recdb.REC_ENCODE_QUE, title, chtxt, btime)
285 bt = bt + datetime.timedelta(seconds=600)
286 et = et + datetime.timedelta(seconds=600)
287 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
288 etime = et.strftime("%Y-%m-%d %H:%M:%S")
289 recdb.rec_reckey(recdb.REC_ENCODE_QUE, title, chtxt, btime, etime, opt)