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")
32 print "inum:" + str(inum) + "bscsrec:" + str(status.getBSCSRecording()) + "terec:" + str(status.getTERecording()) + " epg:" + str(status.getEPGUpdating())
34 #if inum+status.getBSCSRecording()+status.getTERecording() < 2:
35 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()
57 #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")
88 tnow = datetime.datetime.now()
90 dt = dtt.days * 24 * 60 * 60 + dtt.seconds
92 if task["type"] == recdb.REC_RESERVE:#"res,"+chtxt+","+title+","+btime+","+etime+","+opt
93 if (dt < 58 * 60 and dt > 20 * 60):
97 else:#子プロセスの場合 アップデートを行って終了
98 bctypet = chdb.chtxtsearch(chtxt)['bctype']
99 chdatat = rec10d.rec10db.select_by_bctype_chdata(bctypet)
100 dt1 = datetime.datetime.strptime(chdatat[0][5], "%Y-%m-%d %H:%M:%S")-datetime.datetime.now()
101 dt1 = dt1.days * 24 * 60 * 60 + dt1.seconds
102 #print "oikake search:"+str(dt1)
104 recdata = epgdb.searchtime2(title.decode('utf-8'), btime, "5", chtxt)
109 bt = datetime.datetime.strptime(btimen, "%Y-%m-%d %H:%M:%S")
110 et = datetime.datetime.strptime(etimen, "%Y-%m-%d %H:%M:%S")
111 btimen = bt.strftime("%Y-%m-%d %H:%M:%S")
112 etimen = et.strftime("%Y-%m-%d %H:%M:%S")
115 recdb.del_reckey(recdb.REC_RESERVE, title, chtxt, btime)
116 recdb.rec_reckey(recdb.REC_FINAL_RESERVE, titlen, chtxtn, btimen, etimen, opt)
117 except Exception, inst:
121 print "nothing match"
123 print rec10d.rec10db.select_by_bctype_chdata(bctypet)
124 if rec10d.rec10db.select_by_bctype_chdata(bctypet)[0][6] != "0":
125 rec10d.rec10db.update_status_by_bctype_chdata(bctypet, "3")
129 recdb.del_reckey(recdb.REC_RESERVE, title, chtxt, btime)
130 recdb.rec_reckey(recdb.REC_FINAL_RESERVE, title, chtxt, btime, etime, opt)
131 except Exception, inst:
134 elif task["type"] == recdb.REC_KEYWORD:#"key,"+chtxt+","+keyword+","+btime+","+deltatime+","+opt
135 deltatime = task['deltatime']
137 recdata = epgdb.searchtime2(title.decode('utf-8'), btime, deltatime, chtxt)
143 bt = datetime.datetime.strptime(btimet, "%Y-%m-%d %H:%M:%S")
144 et = datetime.datetime.strptime(etimet, "%Y-%m-%d %H:%M:%S")
145 btimet = bt.strftime("%Y-%m-%d %H:%M:%S")
146 etimet = et.strftime("%Y-%m-%d %H:%M:%S")
148 recdb.del_reckey(recdb.REC_KEYWORD, title, chtxt, btime)
149 recdb.rec_reckey(recdb.REC_RESERVE, titlet, chtxtt, btimet, etimet, opt)
150 except Exception, inst:
154 print "nothing match"
155 elif task["type"] == recdb.REC_KEYWORD_EVERY_SOME_DAYS:#"keyevery,"+chtxt+","+keyword+","+btime+","+deltatime+","+opt+","+deltaday
156 deltatime = task['deltatime']
157 deltaday = task['deltaday']
158 dd = datetime.timedelta(days=int(deltaday))
160 recdb.del_reckey(recdb.REC_KEYWORD_EVERY_SOME_DAYS, title, chtxt, btime)
163 btxt = bt.strftime("%Y-%m-%d %H:%M:%S")
164 etxt = et.strftime("%Y-%m-%d %H:%M:%S")
165 recdb.everyreserv(title, chtxt, btxt, etxt, deltatime, opt, deltaday)
167 recdb.keyreserv(title, chtxt, btime, etime, deltatime, opt)
168 recdb.del_reckey(recdb.REC_KEYWORD_EVERY_SOME_DAYS, title, chtxt, btime)
171 btxt = bt.strftime("%Y-%m-%d %H:%M:%S")
172 etxt = et.strftime("%Y-%m-%d %H:%M:%S")
173 recdb.everyreserv(title, chtxt, btxt, etxt, deltatime, opt, deltaday)
175 elif task["type"] == recdb.REC_FINAL_RESERVE:#"rec,"+chtxt+","+title+","+btime+","+etime+","+opt
177 if dt < 6 * 60 and dt > 0:
178 recdb.del_reckey(recdb.REC_FINAL_RESERVE, title, chtxt, btime)
179 recdb.rec_reckey(recdb.REC_TS_RECORDING, title, chtxt, btime, etime, opt)
182 if pid != 0:#親プロセスの場合
186 tv2avi.timetv2b25(recpath + "/" + title + ".avi", chtxt, btime, etime, opt)
187 recdb.del_reckey(recdb.REC_TS_RECORDING, title, chtxt, btime)
188 tnow = datetime.datetime.now()
189 bt = datetime.datetime.strptime(btime, "%Y-%m-%d %H:%M:%S")
190 et = datetime.datetime.strptime(etime, "%Y-%m-%d %H:%M:%S")
192 bt = tnow + datetime.timedelta(seconds=600)
193 et = et + dt + datetime.timedelta(seconds=600)
194 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
195 etime = et.strftime("%Y-%m-%d %H:%M:%S")
196 recdb.rec_reckey(recdb.REC_TS_DECODE_QUE, title, chtxt, btime, etime, opt)
198 elif task["type"] == recdb.REC_TS_DECODE_QUE:
200 if status.getB25Decoding() < 2:
202 if pid != 0:#親プロセスの場合
205 pin = recpath + "/" + title
206 recdb.del_reckey(recdb.REC_TS_DECODE_QUE, title, chtxt, btime)
207 recdb.rec_reckey(recdb.REC_TS_DECODING, title, chtxt, btime, etime, opt)
208 tv2avi.b252ts(pin, chtxt, btime, etime, opt)
209 recdb.del_reckey(recdb.REC_TS_DECODING, title, chtxt, btime)
210 if not os.access(recpath + "/" + title + ".ts", os.F_OK):
211 recdb.del_reckey(recdb.REC_TS_DECODING, title, chtxt, btime)
212 recdb.rec_reckey(recdb.REC_MISS_DECODE, title, chtxt, btime, etime, opt)
213 tnow = datetime.datetime.now()
214 bt = datetime.datetime.strptime(btime, "%Y-%m-%d %H:%M:%S")
215 et = datetime.datetime.strptime(etime, "%Y-%m-%d %H:%M:%S")
217 bt = tnow + datetime.timedelta(seconds=600)
218 et = et + dt + datetime.timedelta(seconds=600)
219 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
220 etime = et.strftime("%Y-%m-%d %H:%M:%S")
221 recdb.rec_reckey(recdb.REC_ENCODE_QUE, title, chtxt, btime, etime, opt)
222 print "b25check " + recpath + "/" + title + ".ts.b25 " + recpath + "/" + title + ".ts"
223 print checker.checkB25Decode(recpath + "/" + title + ".ts.b25", recpath + "/" + title + ".ts")
224 if checker.checkB25Decode(recpath + "/" + title + ".ts.b25", recpath + "/" + title + ".ts") == 1:
225 os.remove(recpath + "/" + title + ".ts.b25")
228 recdb.del_reckey(recdb.REC_TS_DECODE_QUE, title, chtxt, btime)
229 bt = bt + datetime.timedelta(seconds=600)
230 et = et + datetime.timedelta(seconds=600)
231 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
232 etime = et.strftime("%Y-%m-%d %H:%M:%S")
233 recdb.rec_reckey(recdb.REC_TS_DECODE_QUE, title, chtxt, btime, etime, opt)
234 elif task["type"] == recdb.REC_ENCODE_QUE:
236 if status.getEncoding() < int(configreader.getenv("enc_max")):
241 pin = recpath + "/" + title + ".ts"
242 if re.search("d", opt):
243 pin = recpath + "/" + title + "sa.avi"
244 if re.search("5", opt):
245 pin = recpath + "/" + title + "sa.avi"
246 pout = recpath + "/" + title + ".avi"
247 print [pin, pout, opt]
248 #print pin+":"+pout+":"+opt
249 recdb.del_reckey(recdb.REC_ENCODE_QUE, title, chtxt, btime)
250 recdb.rec_reckey(recdb.REC_ENCODE_LOCAL, title, chtxt, btime, etime, opt)
251 tv2avi.ts2avi(pin, pout, opt)
252 recdb.del_reckey(recdb.REC_ENCODE_LOCAL, title, chtxt, btime)
253 recdb.rec_reckey(recdb.REC_FIN_LOCAL, title, chtxt, btime, etime, opt)
256 recdb.del_reckey(recdb.REC_ENCODE_QUE, title, chtxt, btime)
257 bt = bt + datetime.timedelta(seconds=600)
258 et = et + datetime.timedelta(seconds=600)
259 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
260 etime = et.strftime("%Y-%m-%d %H:%M:%S")
261 recdb.rec_reckey(recdb.REC_ENCODE_QUE, title, chtxt, btime, etime, opt)