OSDN Git Service

fix bug,
[rec10/rec10-git.git] / rec10 / trunk / src / timerec.py
1 #!/usr/bin/python
2 # coding: UTF-8
3 # Rec10 TS Recording Tools
4 # Copyright (C) 2009 Yukikaze
5 import datetime
6 import os
7 import os.path
8 import re
9 import sys
10 import time
11 import shutil
12
13 import auto_rec
14 import auto_process
15 import chdb
16 import checker
17 import configreader
18 import epgdb
19 import rec10d
20 import recdb
21 import status
22 import tv2avi
23 import tv2mkv
24 import tv2mp4
25 import recdblist
26 recpath = configreader.getpath('recpath')
27 movepath = configreader.getpath('move_destpath')
28 path = str(os.path.dirname(os.path.abspath(__file__))) + "/"
29 def task():
30     """
31     数分毎に実行されるタスク処理
32     予定によって子プロセスを生成し処理する。
33     """
34     recdb.delete_old("24")
35     recdb.delete_old_auto_bayes("1")
36     recdb.delete_old_auto_keyword("1")
37     tasks = recdb.getnow("2")
38     inum = recdb.countRecNow_minutes("10")
39     print u"番組表更新処理"+ datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
40     print "inum:" + str(inum) + "bscsrec:" + str(status.getBSCSRecording()) + "terec:" + str(status.getTERecording()) 
41     encodenum=0
42     b25num=0
43     dnow=datetime.datetime.now()
44     if dnow.hour==12 and dnow.minute<5 :
45         pid = os.fork()
46         if pid != 0:
47             time.sleep(1)
48         else:
49             for k in recdb.get_key():
50                 search_keyword(k)
51             sys.exit()
52     else:
53         pid = os.fork()
54         if pid!=0:
55             time.sleep(1)
56         else:
57             auto_process.auto_check(recpath)
58             sys.exit()
59     update = chdb.update()
60     print update
61     if len(update) > 0:
62         pid = os.fork()
63         if pid != 0:
64             time.sleep(1)
65         else:
66             i = 0
67             for bctype in update:
68                 recnum = 0
69                 if bctype.find('te') > -1:
70                     recnum = status.getTERecording() + recdb.countRecNow_minutes_TE("10")
71                     print bctype + "//ing:" + str(status.getTERecording()) + ":task:" + str(recdb.countRecNow_minutes_TE("10"))
72                 else:
73                     recnum = status.getBSCSRecording() + recdb.countRecNow_minutes_BSCS("10")
74                     print bctype + "//ing:" + str(status.getBSCSRecording()) + ":task:" + str(recdb.countRecNow_minutes_BSCS("10"))
75                 if recnum < 2:
76                     print update
77                     rec10d.rec10db.update_status_by_bctype_epg_ch(bctype, "0")
78                     epgdb.updatebc(bctype)
79                     update = chdb.update()
80                     i = i + 1
81                 if i > 0:
82                     break
83             sys.exit()
84     for task in tasks:
85         #print task
86         typetxt = task["type"]
87         try:
88             chtxt = task['chtxt']
89         except:
90             chtxt = ""
91         try:
92             title = task['title']
93         except:
94             title = ""
95         try:
96             btime = task['btime']
97             bt = datetime.datetime.strptime(btime, "%Y-%m-%d %H:%M:%S")
98         except:
99             btime = ""
100             bt = datetime.datetime.strptime("2009-01-01 00:00:00", "%Y-%m-%d %H:%M:%S")
101         try:
102             etime = task['etime']
103             et = datetime.datetime.strptime(etime, "%Y-%m-%d %H:%M:%S")
104         except:
105             etime = ""
106             et = datetime.datetime.strptime("2009-01-01 00:00:00", "%Y-%m-%d %H:%M:%S")
107         try:
108             opt = task['opt']
109         except:
110             opt = ""
111         tnow = datetime.datetime.now()
112         dtt = bt-tnow
113         dt = dtt.days * 24 * 60 * 60 + dtt.seconds
114         if task["type"] == recdblist.REC_RESERVE:#"res,"+chtxt+","+title+","+btime+","+etime+","+opt
115             pid = os.fork()
116             if pid != 0:#親プロセスの場合
117                 ""
118             else:#子プロセスの場合 アップデートを行って終了
119                 type_reserve(task["type"],chtxt,title,bt,et,opt)
120                 sys.exit()
121         elif task["type"] == recdblist.REC_KEYWORD:#"key,"+chtxt+","+keyword+","+btime+","+deltatime+","+opt
122             deltatime = task['deltatime']
123             pid = os.fork()
124             if pid != 0:#親プロセスの場合
125                 ""
126             else:#子プロセスの場合 アップデートを行って終了
127                 type_keyword(task["type"],chtxt,title, bt, et, opt, deltatime)
128                 sys.exit()
129         elif task["type"] == recdblist.REC_KEYWORD_EVERY_SOME_DAYS:#"keyevery,"+chtxt+","+keyword+","+btime+","+deltatime+","+opt+","+deltaday
130             deltatime = task['deltatime']
131             deltaday = task['deltaday']
132             pid = os.fork()
133             if pid != 0:#親プロセスの場合
134                 ""
135             else:#子プロセスの場合 アップデートを行って終了
136                 type_keyword_every_day(task["type"],chtxt, title, bt, et, opt, deltatime, deltaday)
137                 sys.exit()
138         elif task["type"] == recdblist.REC_FINAL_RESERVE:#"rec,"+chtxt+","+title+","+btime+","+etime+","+opt
139             pid = os.fork()
140             if pid != 0:#親プロセスの場合
141                 ""
142             else:#子プロセスの場合 アップデートを行って終了
143                 type_final(task["type"],chtxt, title, bt, et, opt)
144                 sys.exit()
145         elif task["type"] == recdblist.REC_TS_DECODE_QUE:
146             b25num=b25num+1
147             pid = os.fork()
148             if pid != 0:#親プロセスの場合
149                 ""
150             else:#子プロセスの場合 アップデートを行って終了
151                 time.sleep(5*b25num)
152                 type_decode_que(task["type"],chtxt, title, bt, et, opt)
153                 sys.exit()
154         elif task["type"] == recdblist.REC_ENCODE_QUE:
155             encodenum=encodenum+1
156             pid = os.fork()
157             if pid != 0:#親プロセスの場合
158                 ""
159             else:#子プロセスの場合 アップデートを行って終了
160                 time.sleep(5*encodenum)
161                 type_encode_que(task["type"],chtxt, title, bt, et, opt)
162                 sys.exit()
163         elif task["type"] == recdblist.REC_AVI_TO_MKV:
164             if dt < 10 * 60:
165                 pid = os.fork()
166                 if pid > 0:#親プロセスの場合
167                     ""
168                 else:
169                     recdb.del_reckey(recdblist.REC_AVI_TO_MKV, title, chtxt, btime)
170                     recdb.rec_reckey(recdblist.REC_CHANGING_CANTAINER, title, chtxt, btime, etime, opt)
171                     tv2mkv.avi2mkv(os.path.join(recpath,title+".avi"),os.path.join(recpath,title+".mkv"))
172                     recdb.del_reckey(recdblist.REC_CHANGING_CANTAINER, title, chtxt, btime)
173                     sys.exit()
174         elif task["type"] == recdblist.REC_AVI_TO_MP4:
175             if dt < 10 * 60:
176                 pid = os.fork()
177                 if pid > 0:#親プロセスの場合
178                     ""
179                 else:
180                     recdb.del_reckey(recdblist.REC_AVI_TO_MP4, title, chtxt, btime)
181                     recdb.rec_reckey(recdblist.REC_CHANGING_CANTAINER, title, chtxt, btime, etime, opt)
182                     tv2mp4.avi2mp4(os.path.join(recpath,title+".avi"),os.path.join(recpath,title+".mp4"))
183                     recdb.del_reckey(recdblist.REC_CHANGING_CANTAINER, title, chtxt, btime)
184                     sys.exit()
185         elif task["type"] == recdblist.REC_MKV_TO_MP4:
186             if dt < 10 * 60:
187                 pid = os.fork()
188                 if pid > 0:#親プロセスの場合
189                     ""
190                 else:
191                     recdb.del_reckey(recdblist.REC_AVI_TO_MP4, title, chtxt, btime)
192                     recdb.rec_reckey(recdblist.REC_CHANGING_CANTAINER, title, chtxt, btime, etime, opt)
193                     tv2mp4.mkv2mp4(os.path.join(recpath,title+".mkv"),os.path.join(recpath,title+".mp4"))
194                     recdb.del_reckey(recdblist.REC_CHANGING_CANTAINER, title, chtxt, btime)
195                     sys.exit()
196         elif task["type"] == recdblist.REC_AUTO_KEYWORD:#"key,"+chtxt+","+keyword+","+btime+","+deltatime+","+opt
197             deltatime = "24"
198             if dt < 90 * 60:
199                 recdatum = epgdb.searchtime_auto(title, btime, deltatime, chtxt)
200                 for recdata in recdatum:
201                     if recdata[1] != "":
202                         chtxtt = recdata[0]
203                         titlet = recdata[1]
204                         btimet = recdata[2]
205                         etimet = recdata[3]
206                         exp = recdata[4]
207                         longexp = recdata[5]
208                         category=recdata[6]
209                         btt = datetime.datetime.strptime(btimet, "%Y-%m-%d %H:%M:%S")
210                         ett = datetime.datetime.strptime(etimet, "%Y-%m-%d %H:%M:%S")
211                         btimet = btt.strftime("%Y-%m-%d %H:%M:%S")
212                         etimet = ett.strftime("%Y-%m-%d %H:%M:%S")
213                         try:
214                             recdb.rec_reckey(recdblist.REC_AUTO_SUGGEST_REC, titlet, chtxtt, btimet, etimet, opt)
215                         except Exception, inst:
216                             print type(inst)
217                             print inst
218                 dd = datetime.timedelta(days=1)
219                 bt = bt + dd
220                 et = et + dd
221                 btxt = bt.strftime("%Y-%m-%d %H:%M:%S")
222                 etxt = et.strftime("%Y-%m-%d %H:%M:%S")
223                 try:
224                     recdb.del_reckey(recdblist.REC_AUTO_KEYWORD, title, chtxt, btime)
225                     recdb.auto_keyreserv(title, chtxt, btxt, etxt, "24", opt)
226                 except Exception, inst:
227                     print type(inst)
228                     print inst
229         elif task["type"] == recdblist.REC_MOVE_AFTER_RECORD:#"res,"+chtxt+","+title+","+btime+","+etime+","+opt
230             pid = os.fork()
231             if pid != 0:#親プロセスの場合
232                 ""
233             else:#子プロセスの場合 アップデートを行って終了
234                 type_reserve(task["type"],chtxt,title,bt,et,opt)
235                 sys.exit()
236         elif task["type"] == recdblist.REC_MOVE_AFTER_DECODE:#"res,"+chtxt+","+title+","+btime+","+etime+","+opt
237             pid = os.fork()
238             if pid != 0:#親プロセスの場合
239                 ""
240             else:#子プロセスの場合 アップデートを行って終了
241                 type_reserve(task["type"],chtxt,title,bt,et,opt)
242                 sys.exit()
243         elif task["type"] == recdblist.REC_MOVE_AFTER_ENCODE:#"res,"+chtxt+","+title+","+btime+","+etime+","+opt
244             pid = os.fork()
245             if pid != 0:#親プロセスの場合
246                 ""
247             else:#子プロセスの場合 アップデートを行って終了
248                 type_reserve(task["type"],chtxt,title,bt,et,opt)
249                 sys.exit()
250         elif task["type"] == recdblist.REC_MOVE_AFTER_RECORD_FINAL:#"rec,"+chtxt+","+title+","+btime+","+etime+","+opt
251             pid = os.fork()
252             if pid != 0:#親プロセスの場合
253                 ""
254             else:#子プロセスの場合 アップデートを行って終了
255                 type_final(task["type"],chtxt, title, bt, et, opt)
256                 sys.exit()
257         elif task["type"] == recdblist.REC_MOVE_AFTER_DECODE_FINAL:#"rec,"+chtxt+","+title+","+btime+","+etime+","+opt
258             pid = os.fork()
259             if pid != 0:#親プロセスの場合
260                 ""
261             else:#子プロセスの場合 アップデートを行って終了
262                 type_final(task["type"],chtxt, title, bt, et, opt)
263                 sys.exit()
264         elif task["type"] == recdblist.REC_MOVE_AFTER_ENCODE_FINAL:#"rec,"+chtxt+","+title+","+btime+","+etime+","+opt
265             pid = os.fork()
266             if pid != 0:#親プロセスの場合
267                 ""
268             else:#子プロセスの場合 アップデートを行って終了
269                 type_final(task["type"],chtxt, title, bt, et, opt)
270                 sys.exit()
271         elif task["type"] == recdblist.REC_MOVE_AFTER_DECODE_DECODE_QUE:
272             b25num=b25num+1
273             pid = os.fork()
274             if pid != 0:#親プロセスの場合
275                 ""
276             else:#子プロセスの場合 アップデートを行って終了
277                 time.sleep(5*b25num)
278                 type_decode_que(task["type"],chtxt, title, bt, et, opt)
279                 sys.exit()
280         elif task["type"] == recdblist.REC_MOVE_AFTER_ENCODE_DECODE_QUE:
281             b25num=b25num+1
282             pid = os.fork()
283             if pid != 0:#親プロセスの場合
284                 ""
285             else:#子プロセスの場合 アップデートを行って終了
286
287                 time.sleep(5*b25num)
288                 type_decode_que(task["type"],chtxt, title, bt, et, opt)
289                 sys.exit()
290         elif task["type"] == recdblist.REC_MOVE_AFTER_ENCODE_ENCODE_QUE:
291             encodenum=encodenum+1
292             pid = os.fork()
293             if pid != 0:#親プロセスの場合
294                 ""
295             else:#子プロセスの場合 アップデートを行って終了
296                 time.sleep(5*encodenum)
297                 type_encode_que(task["type"],chtxt, title, bt, et, opt)
298                 sys.exit()
299     sys.exit()
300 def search_keyword(key):
301     tnow = datetime.datetime.now()
302     nows =tnow.strftime("%Y-%m-%d %H:%M:%S")
303     for k in key:
304         recdatum = epgdb.searchtime_auto(k,nows, "144")
305         for recdata in recdatum:
306             if recdata[1] != "":
307                 chtxtt = recdata[0]
308                 titlet = recdata[1]
309                 btimet = recdata[2]
310                 etimet = recdata[3]
311                 btt = datetime.datetime.strptime(btimet, "%Y-%m-%d %H:%M:%S")
312                 ett = datetime.datetime.strptime(etimet, "%Y-%m-%d %H:%M:%S")
313                 btimet = btt.strftime("%Y-%m-%d %H:%M:%S")
314                 etimet = ett.strftime("%Y-%m-%d %H:%M:%S")
315                 try:
316                     recdb.add_auto_keyword(chtxtt, titlet, btimet, etimet)
317                 except Exception, inst:
318                     print type(inst)
319                     print inst
320 def type_reserve(typetxt,chtxt,title,bt,et,opt):
321     btime = bt.strftime("%Y-%m-%d %H:%M:%S")
322     etime = et.strftime("%Y-%m-%d %H:%M:%S")
323     typetxtnow=typetxt
324     typetxtfinal=""
325     if typetxt==recdblist.REC_RESERVE:
326         typetxtfinal=recdblist.REC_FINAL_RESERVE
327     elif typetxt==recdblist.REC_MOVE_AFTER_DECODE:
328         typetxtfinal=recdblist.REC_MOVE_AFTER_DECODE_FINAL
329     elif typetxt==recdblist.REC_MOVE_AFTER_RECORD:
330         typetxtfinal=recdblist.REC_MOVE_AFTER_RECORD_FINAL
331     elif typetxt==recdblist.REC_MOVE_AFTER_ENCODE:
332         typetxtfinal=recdblist.REC_MOVE_AFTER_ENCODE_FINAL
333     tnow = datetime.datetime.now()
334     dtt = bt-tnow
335     dt = dtt.days * 24 * 60 * 60 + dtt.seconds
336     if (dt < 58 * 60 and dt > 20 * 60):
337         bctypet = chdb.chtxtsearch(chtxt)['bctype']
338         chdatat = rec10d.rec10db.select_by_bctype_epg_ch(bctypet)
339         dt1 = datetime.datetime.strptime(chdatat[0][5], "%Y-%m-%d %H:%M:%S")-datetime.datetime.now()
340         dt1 = dt1.days * 24 * 60 * 60 + dt1.seconds
341         if dt1 < 60 * 60:
342             recdata = epgdb.searchtime2(title, btime, "5", chtxt)
343             chtxtn = recdata[0]
344             titlen = recdata[1]
345             btimen = recdata[2]
346             etimen = recdata[3]
347             exp = recdata[4]
348             longexp = recdata[5]
349             category=recdata[6]
350             bt = datetime.datetime.strptime(btimen, "%Y-%m-%d %H:%M:%S")
351             et = datetime.datetime.strptime(etimen, "%Y-%m-%d %H:%M:%S")
352             btimen = bt.strftime("%Y-%m-%d %H:%M:%S")
353             etimen = et.strftime("%Y-%m-%d %H:%M:%S")
354             if chtxt != "":
355                 try:
356                     recdb.del_reckey(typetxtnow, title, chtxt, btime)
357                     recdb.rec_reckey(typetxtfinal, titlen, chtxtn, btimen, etimen, opt)
358                     recdb.rec_reclog(titlen, chtxtn, btimen, etimen, opt, exp, longexp, category)
359                     auto_rec.add_key(chtxt, titlen,exp+" "+longexp)
360                     auto_rec.add_key("ALL", titlen,exp+" "+longexp)
361                     print "Oikake "+title+" : "+titlen+" "+btimen+" "+etimen
362                 except Exception, inst:
363                     print "Error happended in Oikake DB"
364                     print type(inst)
365                     print inst
366             else:
367                 print "nothing match"
368         else:
369             if rec10d.rec10db.select_by_bctype_epg_ch(bctypet)[0][6] != "0":
370                 rec10d.rec10db.update_status_by_bctype_epg_ch(bctypet, "3")
371         sys.exit()
372     elif dt <= 20 * 60:
373         try:
374             recdb.del_reckey(typetxtnow, title, chtxt, btime)
375             recdb.rec_reckey(typetxtfinal, title, chtxt, btime, etime, opt)
376         except Exception, inst:
377             print type(inst)
378             print inst
379 def type_final(typetxt,chtxt,title,bt,et,opt):
380     btime = bt.strftime("%Y-%m-%d %H:%M:%S")
381     etime = et.strftime("%Y-%m-%d %H:%M:%S")
382     typetxtnow=typetxt
383     typetxting=""
384     typetxtdecque=""
385     if typetxt==recdblist.REC_FINAL_RESERVE:
386         typetxting=recdblist.REC_TS_RECORDING
387         typetxtdecque=recdblist.REC_TS_DECODE_QUE
388     elif typetxt==recdblist.REC_MOVE_AFTER_DECODE_FINAL:
389         typetxting=recdblist.REC_MOVE_AFTER_DECODE_RECORDING
390         typetxtdecque=recdblist.REC_MOVE_AFTER_DECODE_DECODE_QUE
391     elif typetxt==recdblist.REC_MOVE_AFTER_RECORD_FINAL:
392         typetxting=recdblist.REC_MOVE_AFTER_RECORD_RECORDING
393         typetxtdecque=""
394     elif typetxt==recdblist.REC_MOVE_AFTER_ENCODE_FINAL:
395         typetxting=recdblist.REC_MOVE_AFTER_ENCODE_RECORDING
396         typetxtdecque=recdblist.REC_MOVE_AFTER_ENCODE_DECODE_QUE
397     tnow = datetime.datetime.now()
398     dtt = bt-tnow
399     dt = dtt.days * 24 * 60 * 60 + dtt.seconds
400     print dt
401     if dt < 6 * 60 and dt > 0:
402         recdb.del_reckey(typetxtnow, title, chtxt, btime)
403         recdb.rec_reckey(typetxting, title, chtxt, btime, etime, opt)
404         print u"録画開始 "+title+" "+btime+" "+etime
405         ttitle=title
406         #print title
407         testpath=[os.path.join(recpath,title+".ts.b25")]
408         testpath.append(os.path.join(recpath,title+".ts"))
409         testpath.append(os.path.join(recpath,title+".avi"))
410         testpath.append(os.path.join(recpath,title+".mkv"))
411         testpath.append(os.path.join(recpath,title+".log"))
412         tcheck=0
413         for ti in testpath:
414             if os.path.exists(ti):
415                 tcheck=tcheck+1
416         if tcheck>0:
417             ttitle=title+"_"+datetime.datetime.now().strftime("%Y%m%d%H%M")
418         tv2avi.timetv2b25(recpath + "/" + ttitle + ".avi", chtxt, btime, etime, opt)
419         recdb.del_reckey(typetxting, title, chtxt, btime)
420         if typetxtdecque != "":
421             tnow = datetime.datetime.now()
422             bt = datetime.datetime.strptime(btime, "%Y-%m-%d %H:%M:%S")
423             et = datetime.datetime.strptime(etime, "%Y-%m-%d %H:%M:%S")
424             dt = tnow-bt
425             bt = tnow + datetime.timedelta(seconds=600)
426             et = et + dt + datetime.timedelta(seconds=600)
427             btime = bt.strftime("%Y-%m-%d %H:%M:%S")
428             etime = et.strftime("%Y-%m-%d %H:%M:%S")
429             recdb.rec_reckey(typetxtdecque, ttitle, chtxt, btime, etime, opt)
430         else:
431             shutil.copy(os.path.join(recpath,title+".ts.b25"), os.path.join(movepath,title+".ts.b25"))
432         sys.exit()
433 def type_keyword(typetxt,chtxt,title,bt,et,opt,deltatime):
434     btime = bt.strftime("%Y-%m-%d %H:%M:%S")
435     etime = et.strftime("%Y-%m-%d %H:%M:%S")
436     typetxtnow=typetxt
437     typetxtres=""
438     if typetxt==recdblist.REC_KEYWORD:
439         typetxtres=recdblist.REC_RESERVE
440     tnow = datetime.datetime.now()
441     dtt = bt-tnow
442     dt = dtt.days * 24 * 60 * 60 + dtt.seconds
443     print dt
444     if dt < 90 * 60:
445         recdata = epgdb.searchtime2(title, btime, deltatime, chtxt)
446         if recdata[1] != "":
447             chtxtt = recdata[0]
448             titlet = recdata[1]
449             btimet = recdata[2]
450             etimet = recdata[3]
451             exp = recdata[4]
452             longexp = recdata[5]
453             category=recdata[6]
454             bt = datetime.datetime.strptime(btimet, "%Y-%m-%d %H:%M:%S")
455             et = datetime.datetime.strptime(etimet, "%Y-%m-%d %H:%M:%S")
456             btimet = bt.strftime("%Y-%m-%d %H:%M:%S")
457             etimet = et.strftime("%Y-%m-%d %H:%M:%S")
458             #try:
459             recdb.del_reckey(typetxtnow, title, chtxt, btime)
460             recdb.rec_reckey(typetxtres, titlet, chtxtt, btimet, etimet, opt)
461             recdb.rec_reclog(titlet, chtxtt, btimet, etimet, opt, exp,longexp,category)
462             auto_rec.add_key(chtxt, titlet,exp+" "+longexp)
463             auto_rec.add_key("ALL", titlet,exp+" "+longexp)
464             print u"key "+title+u" : "+titlet+u" "+btimet+u" "+etimet
465             #except Exception, inst:
466             #    print "Error happened in REC_KEYWORD DB"
467             #    print type(inst)
468             #    print inst
469         else:
470             print "nothing match"
471
472 def type_keyword_every_day(type,chtxt,title,bt,et,opt,deltatime,deltaday):
473     btime = bt.strftime("%Y-%m-%d %H:%M:%S")
474     etime = et.strftime("%Y-%m-%d %H:%M:%S")
475     tnow = datetime.datetime.now()
476     dtt = bt-tnow
477     dt = dtt.days * 24 * 60 * 60 + dtt.seconds
478     dd = datetime.timedelta(days=int(deltaday))
479     if dtt.days < 0:
480         recdb.del_reckey(recdblist.REC_KEYWORD_EVERY_SOME_DAYS, title, chtxt, btime)
481         bt = bt + dd
482         et = et + dd
483         btxt = bt.strftime("%Y-%m-%d %H:%M:%S")
484         etxt = et.strftime("%Y-%m-%d %H:%M:%S")
485         recdb.everyreserv(title, chtxt, btxt, etxt, deltatime, opt, deltaday)
486     elif dt < 120 * 60:
487         recdb.keyreserv(title, chtxt, btime, etime, deltatime, opt)
488         recdb.del_reckey(recdblist.REC_KEYWORD_EVERY_SOME_DAYS, title, chtxt, btime)
489         bt = bt + dd
490         et = et + dd
491         btxt = bt.strftime("%Y-%m-%d %H:%M:%S")
492         etxt = et.strftime("%Y-%m-%d %H:%M:%S")
493         recdb.everyreserv(title, chtxt, btxt, etxt, deltatime, opt, deltaday)
494
495
496 def type_decode_que(typetxt,chtxt,title,bt,et,opt):
497     btime = bt.strftime("%Y-%m-%d %H:%M:%S")
498     etime = et.strftime("%Y-%m-%d %H:%M:%S")
499     tnow = datetime.datetime.now()
500     dtt = bt-tnow
501     dt = dtt.days * 24 * 60 * 60 + dtt.seconds
502     typetxtnow=typetxt
503     typetxting=""
504     typetxtmiss=""
505     typetxtencque=""
506     if typetxt== recdblist.REC_TS_DECODE_QUE:
507         typetxting=recdblist.REC_TS_DECODING
508         typetxtmiss=recdblist.REC_MISS_DECODE
509         typetxtencque=recdblist.REC_ENCODE_QUE
510     elif typetxt== recdblist.REC_MOVE_AFTER_DECODE_DECODE_QUE:
511         typetxting=recdblist.REC_MOVE_AFTER_DECODE_DECODING
512         typetxtmiss=recdblist.REC_MISS_DECODE
513         typetxtencque=""
514     elif typetxt== recdblist.REC_MOVE_AFTER_ENCODE_DECODE_QUE:
515         typetxting=recdblist.REC_MOVE_AFTER_ENCODE_DECODING
516         typetxtmiss=recdblist.REC_MISS_DECODE
517         typetxtencque=recdblist.REC_MOVE_AFTER_ENCODE_ENCODE_QUE
518     tnow = datetime.datetime.now()
519     dtt = bt-tnow
520     dt = dtt.days * 24 * 60 * 60 + dtt.seconds
521     if dt < 10 * 60:
522         if status.getB25Decoding() < 2:
523             pin = recpath + "/" + title
524             recdb.del_reckey(typetxtnow, title, chtxt, btime)
525             recdb.rec_reckey(typetxting, title, chtxt, btime, etime, opt)
526             tv2avi.b252ts(pin, chtxt, btime, etime, opt)
527             recdb.del_reckey(typetxting, title, chtxt, btime)
528             if not os.access(recpath + "/" + title + ".ts", os.F_OK):
529                 recdb.del_reckey(typetxting, title, chtxt, btime)
530                 recdb.rec_reckey(typetxtmiss, title, chtxt, btime, etime, opt)
531             bt = datetime.datetime.strptime(btime, "%Y-%m-%d %H:%M:%S")
532             et = datetime.datetime.strptime(etime, "%Y-%m-%d %H:%M:%S")
533             dt = et-bt
534             if not typetxtencque=="":
535                 tnow = datetime.datetime.now()
536                 bt = tnow + datetime.timedelta(seconds=600)
537                 et = bt + dt
538                 btime = bt.strftime("%Y-%m-%d %H:%M:%S")
539                 etime = et.strftime("%Y-%m-%d %H:%M:%S")
540                 recdb.rec_reckey(typetxtencque, title, chtxt, btime, etime, opt)
541             else:
542                 if opt.rfind("d")>=0:
543                     shutil.copy(os.path.join(recpath,title+".sa.avi"),os.path.join(movepath,title+".sa.avi"))
544                 elif opt.rfind("5")>=0:
545                     shutil.copy(os.path.join(recpath,title+".sa.avi"),os.path.join(movepath,title+".sa.avi"))
546                 else:
547                     shutil.copy(os.path.join(recpath,title+".ts"), os.path.join(movepath,title+".ts"))
548             #print checker.checkB25Decode(recpath + "/" + title + ".ts.b25", recpath + "/" + title + ".ts")
549             if checker.checkB25Decode(recpath + "/" + title + ".ts.b25", recpath + "/" + title + ".ts") == 1:
550                 os.remove(recpath + "/" + title + ".ts.b25")
551         else:
552             recdb.del_reckey(typetxtnow, title, chtxt, btime)
553             bt = bt + datetime.timedelta(seconds=600)
554             et = et + datetime.timedelta(seconds=600)
555             btime = bt.strftime("%Y-%m-%d %H:%M:%S")
556             etime = et.strftime("%Y-%m-%d %H:%M:%S")
557             recdb.rec_reckey(typetxtnow, title, chtxt, btime, etime, opt)
558     sys.exit()
559
560 def type_encode_que(typetxt,chtxt,title,bt,et,opt):
561     btime = bt.strftime("%Y-%m-%d %H:%M:%S")
562     etime = et.strftime("%Y-%m-%d %H:%M:%S")
563     tnow = datetime.datetime.now()
564     dtt = bt-tnow
565     dt = dtt.days * 24 * 60 * 60 + dtt.seconds
566     typetxtnow=typetxt
567     typetxting=""
568     typetxtfin=""
569     if typetxt==recdblist.REC_ENCODE_QUE:
570         typetxting=recdblist.REC_ENCODE_LOCAL
571         typetxtfin=recdblist.REC_FIN_LOCAL
572     elif typetxt==recdblist.REC_MOVE_AFTER_ENCODE_ENCODE_QUE:
573         typetxting=recdblist.REC_ENCODE_LOCAL
574         typetxtfin=recdblist.REC_MOVE_END
575     if dt < 10 * 60:
576         if status.getEncoding() < int(configreader.getenv("enc_max")):
577             print opt
578             pin = recpath + "/" + title + ".ts"
579             if re.search("d", opt):
580                 pin = recpath + "/" + title + ".sa.avi"
581             if re.search("5", opt):
582                 pin = recpath + "/" + title + ".sa.avi"
583             #pout = recpath + "/" + title + ".avi"
584             pout = recpath + "/" + title + ".mp4"
585             print [pin, pout, opt]
586             print pin
587             #print pin+":"+pout+":"+opt
588             recdb.del_reckey(typetxtnow, title, chtxt, btime)
589             recdb.rec_reckey(typetxting, title, chtxt, btime, etime, opt)
590             #tv2mkv.ts2mkv(pin, pout, opt)
591             tv2mp4.ts2mp4(pin, pout, opt)
592             #tv2avi.ts2avi(pin, pout, opt)
593             recdb.del_reckey(typetxting, title, chtxt, btime)
594             if typetxtfin==recdblist.REC_MOVE_END:
595                 shutil.copy(os.path.join(recpath,title+".mp4"), os.path.join(movepath,title+".mp4"))
596             recdb.rec_reckey(typetxtfin, title, chtxt, btime, etime, opt)
597             sys.exit()
598         else:
599             recdb.del_reckey(typetxtnow, title, chtxt, btime)
600             bt = bt + datetime.timedelta(seconds=600)
601             et = et + datetime.timedelta(seconds=600)
602             btime = bt.strftime("%Y-%m-%d %H:%M:%S")
603             etime = et.strftime("%Y-%m-%d %H:%M:%S")
604             recdb.rec_reckey(typetxtnow, title, chtxt, btime, etime, opt)
605             sys.exit()