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__))) + "/"
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:
36 update = chdb.update()
46 if bctype.find('te') > -1:
47 recnum = status.getTERecording() + recdb.countRecNow_minutes_TE("10")
48 print bctype + "//ing:" + str(status.getTERecording()) + ":task:" + str(recdb.countRecNow_minutes_TE("10"))
50 recnum = status.getBSCSRecording() + recdb.countRecNow_minutes_BSCS("10")
51 print bctype + "//ing:" + str(status.getBSCSRecording()) + ":task:" + str(recdb.countRecNow_minutes_BSCS("10"))
54 rec10d.rec10db.update_status_by_bctype_chdata(bctype, "0")
55 epgdb.updatebc(bctype)
56 update = chdb.update()
58 #rec10d.rec10db.update_by_bctype_chdata(bctype)
74 bt = datetime.datetime.strptime(btime, "%Y-%m-%d %H:%M:%S")
77 bt = datetime.datetime.strptime("2009-01-01 00:00:00", "%Y-%m-%d %H:%M:%S")
80 et = datetime.datetime.strptime(etime, "%Y-%m-%d %H:%M:%S")
83 et = datetime.datetime.strptime("2009-01-01 00:00:00", "%Y-%m-%d %H:%M:%S")
90 tnow = datetime.datetime.now()
92 dt = dtt.days * 24 * 60 * 60 + dtt.seconds
94 if task["type"] == recdb.REC_RESERVE:#"res,"+chtxt+","+title+","+btime+","+etime+","+opt
95 if (dt < 58 * 60 and dt > 20 * 60):
99 else:#子プロセスの場合 アップデートを行って終了
100 bctypet = chdb.chtxtsearch(chtxt)['bctype']
101 chdatat = rec10d.rec10db.select_by_bctype_chdata(bctypet)
102 dt1 = datetime.datetime.strptime(chdatat[0][5], "%Y-%m-%d %H:%M:%S")-datetime.datetime.now()
103 dt1 = dt1.days * 24 * 60 * 60 + dt1.seconds
104 #print "oikake search:"+str(dt1)
106 recdata = epgdb.searchtime2(title.decode('utf-8'), btime, "5", chtxt)
111 bt = datetime.datetime.strptime(btimen, "%Y-%m-%d %H:%M:%S")
112 et = datetime.datetime.strptime(etimen, "%Y-%m-%d %H:%M:%S")
113 btimen = bt.strftime("%Y-%m-%d %H:%M:%S")
114 etimen = et.strftime("%Y-%m-%d %H:%M:%S")
117 recdb.del_reckey(recdb.REC_RESERVE, title, chtxt, btime)
118 recdb.rec_reckey(recdb.REC_FINAL_RESERVE, titlen, chtxtn, btimen, etimen, opt)
119 print "Oikake "+title+" : "+titlen+" "+btimen+" "+etimen
120 except Exception, inst:
124 print "nothing match"
126 #print rec10d.rec10db.select_by_bctype_chdata(bctypet)
127 if rec10d.rec10db.select_by_bctype_chdata(bctypet)[0][6] != "0":
128 rec10d.rec10db.update_status_by_bctype_chdata(bctypet, "3")
132 recdb.del_reckey(recdb.REC_RESERVE, title, chtxt, btime)
133 recdb.rec_reckey(recdb.REC_FINAL_RESERVE, title, chtxt, btime, etime, opt)
134 except Exception, inst:
137 elif task["type"] == recdb.REC_KEYWORD:#"key,"+chtxt+","+keyword+","+btime+","+deltatime+","+opt
138 deltatime = task['deltatime']
140 recdata = epgdb.searchtime2(title.decode('utf-8'), btime, deltatime, chtxt)
146 bt = datetime.datetime.strptime(btimet, "%Y-%m-%d %H:%M:%S")
147 et = datetime.datetime.strptime(etimet, "%Y-%m-%d %H:%M:%S")
148 btimet = bt.strftime("%Y-%m-%d %H:%M:%S")
149 etimet = et.strftime("%Y-%m-%d %H:%M:%S")
151 recdb.del_reckey(recdb.REC_KEYWORD, title, chtxt, btime)
152 recdb.rec_reckey(recdb.REC_RESERVE, titlet, chtxtt, btimet, etimet, opt)
153 print "key "+title+" : "+titlet+" "+btimet+" "+etimet
154 except Exception, inst:
158 print "nothing match"
159 elif task["type"] == recdb.REC_KEYWORD_EVERY_SOME_DAYS:#"keyevery,"+chtxt+","+keyword+","+btime+","+deltatime+","+opt+","+deltaday
160 deltatime = task['deltatime']
161 deltaday = task['deltaday']
162 dd = datetime.timedelta(days=int(deltaday))
164 recdb.del_reckey(recdb.REC_KEYWORD_EVERY_SOME_DAYS, title, chtxt, btime)
167 btxt = bt.strftime("%Y-%m-%d %H:%M:%S")
168 etxt = et.strftime("%Y-%m-%d %H:%M:%S")
169 recdb.everyreserv(title, chtxt, btxt, etxt, deltatime, opt, deltaday)
171 recdb.keyreserv(title, chtxt, btime, etime, deltatime, opt)
172 recdb.del_reckey(recdb.REC_KEYWORD_EVERY_SOME_DAYS, title, chtxt, btime)
175 btxt = bt.strftime("%Y-%m-%d %H:%M:%S")
176 etxt = et.strftime("%Y-%m-%d %H:%M:%S")
177 recdb.everyreserv(title, chtxt, btxt, etxt, deltatime, opt, deltaday)
179 elif task["type"] == recdb.REC_FINAL_RESERVE:#"rec,"+chtxt+","+title+","+btime+","+etime+","+opt
181 if dt < 6 * 60 and dt > 0:
182 recdb.del_reckey(recdb.REC_FINAL_RESERVE, title, chtxt, btime)
183 recdb.rec_reckey(recdb.REC_TS_RECORDING, title, chtxt, btime, etime, opt)
184 print "録画開始 "+title+" "+btime+" "+etime
186 if pid != 0:#親プロセスの場合
190 tv2avi.timetv2b25(recpath + "/" + title + ".avi", chtxt, btime, etime, opt)
191 recdb.del_reckey(recdb.REC_TS_RECORDING, title, chtxt, btime)
192 tnow = datetime.datetime.now()
193 bt = datetime.datetime.strptime(btime, "%Y-%m-%d %H:%M:%S")
194 et = datetime.datetime.strptime(etime, "%Y-%m-%d %H:%M:%S")
196 bt = tnow + datetime.timedelta(seconds=600)
197 et = et + dt + datetime.timedelta(seconds=600)
198 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
199 etime = et.strftime("%Y-%m-%d %H:%M:%S")
200 recdb.rec_reckey(recdb.REC_TS_DECODE_QUE, title, chtxt, btime, etime, opt)
202 elif task["type"] == recdb.REC_TS_DECODE_QUE:
204 if status.getB25Decoding() < 2:
206 if pid != 0:#親プロセスの場合
209 pin = recpath + "/" + title
210 recdb.del_reckey(recdb.REC_TS_DECODE_QUE, title, chtxt, btime)
211 recdb.rec_reckey(recdb.REC_TS_DECODING, title, chtxt, btime, etime, opt)
212 tv2avi.b252ts(pin, chtxt, btime, etime, opt)
213 recdb.del_reckey(recdb.REC_TS_DECODING, title, chtxt, btime)
214 if not os.access(recpath + "/" + title + ".ts", os.F_OK):
215 recdb.del_reckey(recdb.REC_TS_DECODING, title, chtxt, btime)
216 recdb.rec_reckey(recdb.REC_MISS_DECODE, title, chtxt, btime, etime, opt)
217 bt = datetime.datetime.strptime(btime, "%Y-%m-%d %H:%M:%S")
218 et = datetime.datetime.strptime(etime, "%Y-%m-%d %H:%M:%S")
220 tnow = datetime.datetime.now()
221 bt = tnow + datetime.timedelta(seconds=900)
223 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
224 etime = et.strftime("%Y-%m-%d %H:%M:%S")
225 recdb.rec_reckey(recdb.REC_ENCODE_QUE, title, chtxt, btime, etime, opt)
226 print checker.checkB25Decode(recpath + "/" + title + ".ts.b25", recpath + "/" + title + ".ts")
227 if checker.checkB25Decode(recpath + "/" + title + ".ts.b25", recpath + "/" + title + ".ts") == 1:
228 os.remove(recpath + "/" + title + ".ts.b25")
231 recdb.del_reckey(recdb.REC_TS_DECODE_QUE, title, chtxt, btime)
232 bt = bt + datetime.timedelta(seconds=600)
233 et = et + datetime.timedelta(seconds=600)
234 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
235 etime = et.strftime("%Y-%m-%d %H:%M:%S")
236 recdb.rec_reckey(recdb.REC_TS_DECODE_QUE, title, chtxt, btime, etime, opt)
237 elif task["type"] == recdb.REC_ENCODE_QUE:
239 if status.getEncoding() < int(configreader.getenv("enc_max")):
245 pin = recpath + "/" + title + ".ts"
246 if re.search("d", opt):
247 pin = recpath + "/" + title + ".sa.avi"
248 if re.search("5", opt):
249 pin = recpath + "/" + title + ".sa.avi"
250 #pout = recpath + "/" + title + ".avi"
251 pout = recpath + "/" + title + ".mkv"
252 print [pin, pout, opt]
254 #print pin+":"+pout+":"+opt
255 recdb.del_reckey(recdb.REC_ENCODE_QUE, title, chtxt, btime)
256 recdb.rec_reckey(recdb.REC_ENCODE_LOCAL, title, chtxt, btime, etime, opt)
257 tv2mkv.ts2mkv(pin, pout, opt)
258 #tv2avi.ts2avi(pin, pout, opt)
259 recdb.del_reckey(recdb.REC_ENCODE_LOCAL, title, chtxt, btime)
260 recdb.rec_reckey(recdb.REC_FIN_LOCAL, title, chtxt, btime, etime, opt)
263 recdb.del_reckey(recdb.REC_ENCODE_QUE, title, chtxt, btime)
264 bt = bt + datetime.timedelta(seconds=600)
265 et = et + datetime.timedelta(seconds=600)
266 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
267 etime = et.strftime("%Y-%m-%d %H:%M:%S")
268 recdb.rec_reckey(recdb.REC_ENCODE_QUE, title, chtxt, btime, etime, opt)