OSDN Git Service

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