OSDN Git Service

put sources in order.
[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 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
29     print tasks
30     if len(tasks)==0:
31         update=chdb.update()
32         print "番組表更新処理"
33         print update
34         if len(update)>0:
35             print "番組表を更新"
36             print update
37             pid=os.fork()
38             if pid>0:#親プロセスの場合
39                 ""
40             else:#子プロセスの場合 アップデートを行って終了
41                 for bctype in update:
42                     time.sleep(1)
43                     print bctype
44                     epgdb.updatebc(bctype)
45                 sys.exit(0)
46
47     for task in tasks:
48         try:
49             chtxt=task['chtxt']
50         except:
51             chtxt=""
52         try:
53             title=task['title']
54         except:
55             title=""
56         try:
57             btime=task['btime']
58             bt=datetime.datetime.strptime(btime,"%Y-%m-%d %H:%M:%S")
59         except:
60             btime=""
61             bt=datetime.datetime.strptime("2009-01-01 00:00:00","%Y-%m-%d %H:%M:%S")
62         try:
63             etime=task['etime']
64             et=datetime.datetime.strptime(etime,"%Y-%m-%d %H:%M:%S")
65         except:
66             etime=""
67             et=datetime.datetime.strptime("2009-01-01 00:00:00","%Y-%m-%d %H:%M:%S")
68         try:
69             opt=task['opt']
70         except:
71             opt=""
72         tnow=datetime.datetime.now()
73         dtt=bt-tnow#
74         dt=dtt.days*24*60*60+dtt.seconds
75         #value=line.split(",")
76         if task["type"]==recdb.REC_RESERVE:#"res,"+chtxt+","+title+","+btime+","+etime+","+opt
77             if dt<58*60*60:
78                 recdb.del_reckey(recdb.REC_RESERVE, title, chtxt, btime)
79                 #recdb.delrec(title,chtxt,btime)
80                 recdb.rec_reckey(recdb.REC_FINAL_RESERVE, title, chtxt, btime, etime, opt)
81                 #recdb.lastrecreserv(title,chtxt,btime,etime,opt)
82                 """if dt >30*60:
83                     pid=os.fork()
84                     if pid>0:#親プロセスの場合
85                         ""
86                     else:#子プロセスの場合 アップデートを行って終了
87                         epgdb.update(chtxt)
88                         sys.exit(0)
89                 """
90                 
91         elif task["type"]==recdb.REC_KEYWORD:#"key,"+chtxt+","+keyword+","+btime+","+deltatime+","+opt
92             deltatime=task['deltatime']
93
94             if dt<30*60*60:
95                 recdatum=epgdb.searchtime(title,btime,deltatime)
96                 if len(recdatum)>0:
97                     #recdb.delkey(title,chtxt,btime,deltatime)
98                     recdb.del_reckey(recdb.REC_KEYWORD, title, chtxt, btime)
99                     for recdata in recdatum:
100                         #recdata=recdata[0]
101                         #print recdata
102                         recds=recdata.split(",")
103                         chtxt=recds[0]
104                         title=recds[1]
105                         btime=recds[2]
106                         etime=recds[3]
107                         bt=datetime.datetime.strptime(btime,"%Y-%m-%d %H:%M:%S")
108                         et=datetime.datetime.strptime(etime,"%Y-%m-%d %H:%M:%S")
109                         btime=bt.strftime("%Y-%m-%d %H:%M:%S")
110                         etime=et.strftime("%Y-%m-%d %H:%M:%S")
111                         recdb.rec_reckey(recdb.REC_FINAL_RESERVE, title, chtxt, btime, etime, opt)
112                 else :
113                     print "nothing match"
114         elif task["type"]==recdb.REC_KEYWORD_EVERY_SOME_DAYS:#"keyevery,"+chtxt+","+keyword+","+btime+","+deltatime+","+opt+","+deltaday
115             deltatime=task['deltatime']
116             deltaday=task['deltaday']
117             dd=datetime.timedelta(days=int(deltaday))
118             if dtt.days<0:
119                 recdb.del_reckey(recdb.REC_KEYWORD_EVERY_SOME_DAYS, title, chtxt, btime)
120                 bt=bt+dd
121                 et=et+dd
122                 btxt=bt.strftime("%Y-%m-%d %H:%M:%S")
123                 etxt=et.strftime("%Y-%m-%d %H:%M:%S")
124                 recdb.everyreserv(title,chtxt,btxt,etxt,deltatime,opt,deltaday)
125             elif dt<30*60*60:
126                 recdb.keyreserv(title,chtxt,btime,etime,deltatime,opt)
127                 recdb.del_reckey(recdb.REC_KEYWORD_EVERY_SOME_DAYS, title, chtxt, btime)
128                 #recdb.delevery(keyword,chtxt,btime,deltatime,deltaday)
129                 bt=bt+dd
130                 et=et+dd
131                 btxt=bt.strftime("%Y-%m-%d %H:%M:%S")
132                 etxt=et.strftime("%Y-%m-%d %H:%M:%S")
133                 recdb.everyreserv(title,chtxt,btxt,etxt,deltatime,opt,deltaday)
134         elif task["type"]==recdb.REC_FINAL_RESERVE:#"rec,"+chtxt+","+title+","+btime+","+etime+","+opt
135             if dt<6*60*60:
136                 #recdb.dellastrec(title,chtxt,btime)
137                 recdb.del_reckey(recdb.REC_FINAL_RESERVE, title, chtxt, btime)
138                 #recdb.recend(title,chtxt,btime,etime,opt)
139                 recdb.rec_reckey(recdb.REC_TS_DECODING, title, chtxt, btime, etime, opt)
140                 print "録画開始"
141                 pid=os.fork()
142                 if pid>0:#親プロセスの場合
143                     ""
144                 else:
145                     #print title
146                     tv2avi.timetv2avi(recpath+"/"+title+".avi",chtxt,btime,etime,opt)
147                     if not os.access(recpath+"/"+title+".ts", os.F_OK):
148                         #recdb.del_reckey("tsfin", title, chtxt, btime)
149                         recdb.del_reckey(recdb.REC_TS_DECODING, title, chtxt, btime)
150                         recdb.rec_reckey(recdb.REC_MISS_DECODE, title, chtxt, btime, etime, opt)
151                     else:
152                         recdb.rec_reckey(recdb.REC_ENCODE_QUE,title,chtxt,btime,etime,opt)
153                         recdb.del_reckey(recdb.REC_TS_DECODING, title, chtxt, btime)
154                         recdb.rec_reckey(recdb.REC_FIN_DECODE,title,chtxt,btime,etime,opt)
155                     sys.exit(0)
156         elif task["type"]==recdb.REC_ENCODE_QUE:
157             if dt<10*60:
158                 if status.getEncoding()<2:
159                     pid=os.fork()
160                     if pid>0:#親プロセスの場合
161                             ""
162                     else:
163                         #print title
164                         #tv2avi.b252avi(recpath+"/"+title+".avi", chtxt,opt)
165                         pin=recpath+"/"+title+".ts"
166                         if re.search("d",opt):
167                             pin=recpath+"/"+title+"sa.avi"
168                         if re.search("5",opt):
169                             pin=recpath+"/"+title+"sa.avi"
170                         pout=recpath+"/"+title+".avi"
171                         print pin+":"+pout+":"+opt
172                         recdb.del_reckey("ts2avi",title,chtxt,btime)
173                         recdb.rec_reckey("local", title, chtxt, btime, etime, opt)
174                         ts2x264.ts2x264(pin, pout, opt)
175                         
176                         #tv2avi.timetv2avi(recpath+"/"+title+".avi",chtxt,btime,etime,opt)
177                         sys.exit(0)
178                 else:
179                     recdb.del_reckey(recdb.REC_ENCODE_QUE,title,chtxt,btime)
180                     bt=bt+datetime.timedelta(seconds=600)
181                     et=et+datetime.timedelta(seconds=600)
182                     btime=bt.strftime("%Y-%m-%d %H:%M:%S")
183                     etime=et.strftime("%Y-%m-%d %H:%M:%S")
184                     recdb.rec_reckey(recdb.REC_ENCODE_QUE,title,chtxt,btime,etime,opt)