OSDN Git Service

This is the first branches of rec10 0.4
[rec10/rec10-git.git] / rec10 / branches / 0.4 / trunk / src / timerec.py
1 #!/usr/bin/python
2 # coding: UTF-8
3 # Rec10 TS Recording Tools
4 # Copyright (C) 2009 Yukikaze
5 import sys
6 import time
7 import os
8 import datetime
9 import epgdb
10 import configreader
11 #import japanesenkf
12 import ts2x264
13 import tv2avi
14 import recdb
15 import chdb
16 import status
17 import re
18 #japanesenkf.overrideEncodings()
19 recpath=configreader.getpath('recpath')
20 path=str(os.path.dirname(os.path.abspath(__file__)))+"/"
21 def task():
22     """
23     数分毎に実行されるタスク処理
24     予定によって子プロセスを生成し処理する。
25     """
26     recdb.delete_old("6")
27     tasks=recdb.getnow("1")
28     if len(tasks)==0:
29         update=chdb.update()
30         print "番組表更新処理"
31         print update
32         if len(update)>0:
33             print "番組表を更新"
34             print update
35             pid=os.fork()
36             if pid>0:#親プロセスの場合
37                 ""
38             else:#子プロセスの場合 アップデートを行って終了
39                 for bctype in update:
40                     time.sleep(1)
41                     print bctype
42                     epgdb.updatebc(bctype)
43                 sys.exit(0)
44
45     for task in tasks:
46         try:
47             chtxt=task['chtxt']
48         except:
49             chtxt=""
50         try:
51             title=task['title']
52         except:
53             title=""
54         try:
55             btime=task['btime']
56             bt=datetime.datetime.strptime(btime,"%Y-%m-%d %H:%M:%S")
57         except:
58             btime=""
59             bt=datetime.datetime.strptime("2009-01-01 00:00:00","%Y-%m-%d %H:%M:%S")
60         try:
61             etime=task['etime']
62             et=datetime.datetime.strptime(etime,"%Y-%m-%d %H:%M:%S")
63         except:
64             etime=""
65             et=datetime.datetime.strptime("2009-01-01 00:00:00","%Y-%m-%d %H:%M:%S")
66         try:
67             opt=task['opt']
68         except:
69             opt=""
70         tnow=datetime.datetime.now()
71         dtt=bt-tnow#
72         dt=dtt.days*24*60*60+dtt.seconds
73         #value=line.split(",")
74         if task["type"]==recdb.REC_RESERVE:#"res,"+chtxt+","+title+","+btime+","+etime+","+opt
75             if dt<58*60:
76                 recdb.del_reckey(recdb.REC_RESERVE, title, chtxt, btime)
77                 #recdb.delrec(title,chtxt,btime)
78                 recdb.rec_reckey(recdb.REC_FINAL_RESERVE, title, chtxt, btime, etime, opt)
79                 #recdb.lastrecreserv(title,chtxt,btime,etime,opt)
80                 """if dt >30*60:
81                     pid=os.fork()
82                     if pid>0:#親プロセスの場合
83                         ""
84                     else:#子プロセスの場合 アップデートを行って終了
85                         epgdb.update(chtxt)
86                         sys.exit(0)
87                 """
88                 
89         elif task["type"]==recdb.REC_KEYWORD:#"key,"+chtxt+","+keyword+","+btime+","+deltatime+","+opt
90             deltatime=task['deltatime']
91
92             if dt<30*60:
93                 recdatum=epgdb.searchtime(title,btime,deltatime)
94                 if len(recdatum)>0:
95                     #recdb.delkey(title,chtxt,btime,deltatime)
96                     recdb.del_reckey(recdb.REC_KEYWORD, title, chtxt, btime)
97                     for recdata in recdatum:
98                         #recdata=recdata[0]
99                         #print recdata
100                         recds=recdata.split(",")
101                         chtxt=recds[0]
102                         title=recds[1]
103                         btime=recds[2]
104                         etime=recds[3]
105                         bt=datetime.datetime.strptime(btime,"%Y-%m-%d %H:%M:%S")
106                         et=datetime.datetime.strptime(etime,"%Y-%m-%d %H:%M:%S")
107                         btime=bt.strftime("%Y-%m-%d %H:%M:%S")
108                         etime=et.strftime("%Y-%m-%d %H:%M:%S")
109                         recdb.rec_reckey(recdb.REC_FINAL_RESERVE, title, chtxt, btime, etime, opt)
110                 else :
111                     print "nothing match"
112         elif task["type"]==recdb.REC_KEYWORD_EVERY_SOME_DAYS:#"keyevery,"+chtxt+","+keyword+","+btime+","+deltatime+","+opt+","+deltaday
113             deltatime=task['deltatime']
114             deltaday=task['deltaday']
115             dd=datetime.timedelta(days=int(deltaday))
116             if dtt.days<0:
117                 recdb.del_reckey(recdb.REC_KEYWORD_EVERY_SOME_DAYS, title, chtxt, btime)
118                 bt=bt+dd
119                 et=et+dd
120                 btxt=bt.strftime("%Y-%m-%d %H:%M:%S")
121                 etxt=et.strftime("%Y-%m-%d %H:%M:%S")
122                 recdb.everyreserv(title,chtxt,btxt,etxt,deltatime,opt,deltaday)
123             elif dt<30*60*60:
124                 recdb.keyreserv(title,chtxt,btime,etime,deltatime,opt)
125                 recdb.del_reckey(recdb.REC_KEYWORD_EVERY_SOME_DAYS, title, chtxt, btime)
126                 #recdb.delevery(keyword,chtxt,btime,deltatime,deltaday)
127                 bt=bt+dd
128                 et=et+dd
129                 btxt=bt.strftime("%Y-%m-%d %H:%M:%S")
130                 etxt=et.strftime("%Y-%m-%d %H:%M:%S")
131                 recdb.everyreserv(title,chtxt,btxt,etxt,deltatime,opt,deltaday)
132         elif task["type"]==recdb.REC_FINAL_RESERVE:#"rec,"+chtxt+","+title+","+btime+","+etime+","+opt
133             print dt
134             if dt<6*60:
135                 #recdb.dellastrec(title,chtxt,btime)
136                 recdb.del_reckey(recdb.REC_FINAL_RESERVE, title, chtxt, btime)
137                 #recdb.recend(title,chtxt,btime,etime,opt)
138                 recdb.rec_reckey(recdb.REC_TS_DECODING, title, chtxt, btime, etime, opt)
139                 print "録画開始"
140                 pid=os.fork()
141                 if pid>0:#親プロセスの場合
142                     ""
143                 else:
144                     #print title
145                     tv2avi.timetv2avi(recpath+"/"+title+".avi",chtxt,btime,etime,opt)
146                     if not os.access(recpath+"/"+title+".ts", os.F_OK):
147                         #recdb.del_reckey("tsfin", title, chtxt, btime)
148                         recdb.del_reckey(recdb.REC_TS_DECODING, title, chtxt, btime)
149                         recdb.rec_reckey(recdb.REC_MISS_DECODE, title, chtxt, btime, etime, opt)
150                     else:
151                         recdb.del_reckey(recdb.REC_TS_DECODING, title, chtxt, btime)
152                         tnow=datetime.datetime.now()
153                         bt=datetime.datetime.strptime(btime,"%Y-%m-%d %H:%M:%S")
154                         et=datetime.datetime.strptime(etime,"%Y-%m-%d %H:%M:%S")
155                         dt=tnow-bt
156                         bt=tnow+datetime.timedelta(seconds=600)
157                         et=et+dt+datetime.timedelta(seconds=600)
158                         btime=bt.strftime("%Y-%m-%d %H:%M:%S")
159                         etime=et.strftime("%Y-%m-%d %H:%M:%S")
160                         recdb.rec_reckey(recdb.REC_ENCODE_QUE,title,chtxt,btime,etime,opt)
161                         recdb.rec_reckey(recdb.REC_FIN_DECODE,title,chtxt,btime,etime,opt)
162                     sys.exit(0)
163         elif task["type"]==recdb.REC_ENCODE_QUE:
164             if dt<10*60:
165                 if status.getEncoding()<2:
166                     pid=os.fork()
167                     if pid>0:#親プロセスの場合
168                             ""
169                     else:
170                         #print title
171                         #tv2avi.b252avi(recpath+"/"+title+".avi", chtxt,opt)
172                         pin=recpath+"/"+title+".ts"
173                         if re.search("d",opt):
174                             pin=recpath+"/"+title+"sa.avi"
175                         if re.search("5",opt):
176                             pin=recpath+"/"+title+"sa.avi"
177                         pout=recpath+"/"+title+".avi"
178                         print pin+":"+pout+":"+opt
179                         recdb.del_reckey(recdb.REC_ENCODE_QUE,title,chtxt,btime)
180                         recdb.rec_reckey("local", title, chtxt, btime, etime, opt)
181                         ts2x264.ts2x264(pin, pout, opt)
182                         
183                         #tv2avi.timetv2avi(recpath+"/"+title+".avi",chtxt,btime,etime,opt)
184                         sys.exit(0)
185                 else:
186                     recdb.del_reckey(recdb.REC_ENCODE_QUE,title,chtxt,btime)
187                     bt=bt+datetime.timedelta(seconds=600)
188                     et=et+datetime.timedelta(seconds=600)
189                     btime=bt.strftime("%Y-%m-%d %H:%M:%S")
190                     etime=et.strftime("%Y-%m-%d %H:%M:%S")
191                     recdb.rec_reckey(recdb.REC_ENCODE_QUE,title,chtxt,btime,etime,opt)