OSDN Git Service

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