OSDN Git Service

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