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 except Exception, inst:
122 print "nothing match"
124 print rec10d.rec10db.select_by_bctype_chdata(bctypet)
125 if rec10d.rec10db.select_by_bctype_chdata(bctypet)[0][6] != "0":
126 rec10d.rec10db.update_status_by_bctype_chdata(bctypet, "3")
130 recdb.del_reckey(recdb.REC_RESERVE, title, chtxt, btime)
131 recdb.rec_reckey(recdb.REC_FINAL_RESERVE, title, chtxt, btime, etime, opt)
132 except Exception, inst:
135 elif task["type"] == recdb.REC_KEYWORD:#"key,"+chtxt+","+keyword+","+btime+","+deltatime+","+opt
136 deltatime = task['deltatime']
138 recdata = epgdb.searchtime2(title.decode('utf-8'), btime, deltatime, chtxt)
144 bt = datetime.datetime.strptime(btimet, "%Y-%m-%d %H:%M:%S")
145 et = datetime.datetime.strptime(etimet, "%Y-%m-%d %H:%M:%S")
146 btimet = bt.strftime("%Y-%m-%d %H:%M:%S")
147 etimet = et.strftime("%Y-%m-%d %H:%M:%S")
149 recdb.del_reckey(recdb.REC_KEYWORD, title, chtxt, btime)
150 recdb.rec_reckey(recdb.REC_RESERVE, titlet, chtxtt, btimet, etimet, opt)
151 except Exception, inst:
155 print "nothing match"
156 elif task["type"] == recdb.REC_KEYWORD_EVERY_SOME_DAYS:#"keyevery,"+chtxt+","+keyword+","+btime+","+deltatime+","+opt+","+deltaday
157 deltatime = task['deltatime']
158 deltaday = task['deltaday']
159 dd = datetime.timedelta(days=int(deltaday))
161 recdb.del_reckey(recdb.REC_KEYWORD_EVERY_SOME_DAYS, title, chtxt, btime)
164 btxt = bt.strftime("%Y-%m-%d %H:%M:%S")
165 etxt = et.strftime("%Y-%m-%d %H:%M:%S")
166 recdb.everyreserv(title, chtxt, btxt, etxt, deltatime, opt, deltaday)
168 recdb.keyreserv(title, chtxt, btime, etime, deltatime, opt)
169 recdb.del_reckey(recdb.REC_KEYWORD_EVERY_SOME_DAYS, title, chtxt, btime)
172 btxt = bt.strftime("%Y-%m-%d %H:%M:%S")
173 etxt = et.strftime("%Y-%m-%d %H:%M:%S")
174 recdb.everyreserv(title, chtxt, btxt, etxt, deltatime, opt, deltaday)
176 elif task["type"] == recdb.REC_FINAL_RESERVE:#"rec,"+chtxt+","+title+","+btime+","+etime+","+opt
178 if dt < 6 * 60 and dt > 0:
179 recdb.del_reckey(recdb.REC_FINAL_RESERVE, title, chtxt, btime)
180 recdb.rec_reckey(recdb.REC_TS_RECORDING, title, chtxt, btime, etime, opt)
183 if pid != 0:#親プロセスの場合
187 tv2avi.timetv2b25(recpath + "/" + title + ".avi", chtxt, btime, etime, opt)
188 recdb.del_reckey(recdb.REC_TS_RECORDING, title, chtxt, btime)
189 tnow = datetime.datetime.now()
190 bt = datetime.datetime.strptime(btime, "%Y-%m-%d %H:%M:%S")
191 et = datetime.datetime.strptime(etime, "%Y-%m-%d %H:%M:%S")
193 bt = tnow + datetime.timedelta(seconds=600)
194 et = et + dt + datetime.timedelta(seconds=600)
195 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
196 etime = et.strftime("%Y-%m-%d %H:%M:%S")
197 recdb.rec_reckey(recdb.REC_TS_DECODE_QUE, title, chtxt, btime, etime, opt)
199 elif task["type"] == recdb.REC_TS_DECODE_QUE:
201 if status.getB25Decoding() < 2:
203 if pid != 0:#親プロセスの場合
206 pin = recpath + "/" + title
207 recdb.del_reckey(recdb.REC_TS_DECODE_QUE, title, chtxt, btime)
208 recdb.rec_reckey(recdb.REC_TS_DECODING, title, chtxt, btime, etime, opt)
209 tv2avi.b252ts(pin, chtxt, btime, etime, opt)
210 recdb.del_reckey(recdb.REC_TS_DECODING, title, chtxt, btime)
211 if not os.access(recpath + "/" + title + ".ts", os.F_OK):
212 recdb.del_reckey(recdb.REC_TS_DECODING, title, chtxt, btime)
213 recdb.rec_reckey(recdb.REC_MISS_DECODE, title, chtxt, btime, etime, opt)
214 tnow = datetime.datetime.now()
215 bt = datetime.datetime.strptime(btime, "%Y-%m-%d %H:%M:%S")
216 et = datetime.datetime.strptime(etime, "%Y-%m-%d %H:%M:%S")
218 bt = tnow + datetime.timedelta(seconds=600)
219 et = et + dt + datetime.timedelta(seconds=600)
220 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
221 etime = et.strftime("%Y-%m-%d %H:%M:%S")
222 recdb.rec_reckey(recdb.REC_ENCODE_QUE, title, chtxt, btime, etime, opt)
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")):
242 pin = recpath + "/" + title + ".ts"
243 if re.search("d", opt):
244 pin = recpath + "/" + title + ".sa.avi"
245 if re.search("5", opt):
246 pin = recpath + "/" + title + ".sa.avi"
247 pout = recpath + "/" + title + ".avi"
248 print [pin, pout, opt]
250 #print pin+":"+pout+":"+opt
251 recdb.del_reckey(recdb.REC_ENCODE_QUE, title, chtxt, btime)
252 recdb.rec_reckey(recdb.REC_ENCODE_LOCAL, title, chtxt, btime, etime, opt)
253 tv2avi.ts2avi(pin, pout, opt)
254 recdb.del_reckey(recdb.REC_ENCODE_LOCAL, title, chtxt, btime)
255 recdb.rec_reckey(recdb.REC_FIN_LOCAL, title, chtxt, btime, etime, opt)
258 recdb.del_reckey(recdb.REC_ENCODE_QUE, title, chtxt, btime)
259 bt = bt + datetime.timedelta(seconds=600)
260 et = et + datetime.timedelta(seconds=600)
261 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
262 etime = et.strftime("%Y-%m-%d %H:%M:%S")
263 recdb.rec_reckey(recdb.REC_ENCODE_QUE, title, chtxt, btime, etime, opt)