OSDN Git Service

tunerec: include <unistd.h> for usleep
[rec10/rec10-git.git] / rec10 / recdblist.py
1 #!/usr/bin/python
2 # coding: UTF-8
3 # Rec10 TS Recording Tools
4 # Copyright (C) 2009-2013 Yukikaze
5
6 """
7 task names
8 """
9 import datetime
10 import os
11 import os.path
12 import traceback
13
14 import configreader
15
16 global REC_RESERVE
17 global REC_FINAL_RESERVE
18 global REC_ENCODE_GRID
19 global REC_ENCODE_LOCAL
20 global REC_ENCODE_QUE
21 global REC_MISS_ENCODE
22 global REC_KEYWORD
23 global REC_KEYWORD_EVERY_SOME_DAYS
24 global REC_FIN_LOCAL
25 global REC_MISS_DECODE
26 global REC_TS_DECODE_QUE
27 global REC_TS_DECODING
28 global REC_TS_RECORDING
29 global REC_AVI_TO_MKV
30 global REC_AVI_TO_MP4
31 global REC_MKV_TO_MP4
32 global REC_CHANGING_CANTAINER
33
34 #ここから処理のちに移動
35
36 global REC_MOVE_END
37
38 #ここから自動で提起される処理。
39 global REC_AUTO_SUGGEST_REC
40 global REC_AUTO_SUGGEST_DECODE
41 global REC_AUTO_SUGGEST_ENCODE
42 global REC_AUTO_SUGGEST_AVI2MP4
43 global REC_AUTO_SUGGEST_MKV2MP4
44 global REC_AUTO_SUGGEST_AVI2FP
45 global REC_AUTO_SUGGEST_AP2FP
46 global REC_BAYES_SUGGEST
47 global REC_AUTO_KEYWORD
48 REC_RESERVE = "reserve_flexible"
49 REC_FINAL_RESERVE = "reserve_fixed"
50 REC_ENCODE_GRID = "convert_ts_mp4_network"
51 REC_ENCODE_LOCAL = "convert_ts_mp4_running"
52 REC_ENCODE_QUE = "convert_ts_mp4"
53 REC_MISS_ENCODE = "convert_avi_mp4_miss"
54 REC_KEYWORD = "search_today"
55 REC_KEYWORD_EVERY_SOME_DAYS = "search_everyday"
56 REC_FIN_LOCAL = "convert_ts_mp4_finished"
57 REC_MISS_DECODE = "convert_b25_ts_miss"
58 REC_TS_DECODE_QUE = "convert_b25_ts"
59 REC_TS_DECODING = "convert_b25_ts_running"
60 REC_TS_RECORDING = "reserve_running"
61 REC_CHANGING_CANTAINER = "convert_mkv_mp4_runnings"
62 REC_AVI_TO_MKV = "convert_avi_mkv"
63 REC_AVI_TO_MP4 = "convert_avi_mp4"
64 REC_MKV_TO_MP4 = "convert_mkv_mp4"
65
66 REC_MOVE_END = "move_end"
67
68 REC_AUTO_SUGGEST_REC = "auto_suggest_rec"
69 REC_AUTO_SUGGEST_DECODE = "auto_suggest_dec"
70 REC_AUTO_SUGGEST_ENCODE = "auto_suggest_enc"
71 REC_AUTO_SUGGEST_AVI2FP = "auto_suggest_avi2fp"
72 REC_AUTO_SUGGEST_AP2FP = "auto_suggest_ap2fp"
73 REC_AUTO_KEYWORD = "auto_keyword"
74 REC_BAYES_SUGGEST ="bayes_suggest"
75
76 global BONTSDEMUX_DELAY
77 BONTSDEMUX_DELAY="0"
78
79 version = 103
80 version_str="0.9.10"
81
82 global verbose_level_now
83 global log_level_now
84
85 try:
86     log_level_now=int(configreader.getConfLog("log_level"))
87     verbose_level_now=int(configreader.getConfLog("verbose_level"))
88 except:
89     log_level_now=900
90     verbose_level_now=400
91
92 os.environ['LANG'] = "ja_JP.UTF-8"
93 my_env = os.environ
94 my_env['LANG'] = "ja_JP.UTF-8"
95
96 def getEnv():
97     return my_env
98 def printutf8(unicode,verbose_level=500):
99     if verbose_level_now > verbose_level:
100         try:
101             str=unicode.encode('utf-8')
102             print str
103         except Exception, inst:
104             recdblist.addCommonlogEX("Error", "printutf8(recdblist.py)", str(type(inst)), str(inst)+traceback.format_exc(),log_level=200)
105 def printutf8ex(unicode,verbose_level=500,log_level=500):
106     str=unicode.encode('utf-8')
107     if verbose_level_now > verbose_level:
108         print str
109     logfname="/var/log/rec10"
110     mode="a"
111     if log_level_now > log_level:
112         if os.path.exists(logfname):
113             f=open(logfname,mode)
114             f.write(str+"\n")
115             f.close()
116 def printutf8_Important(unicode):
117     printutf8ex(unicode,100,100)
118 def printutf8_Normal(unicode):
119     printutf8ex(unicode,300,300)
120 def printutf8_Detailed(unicode):
121     printutf8ex(unicode,600,600)
122 def addCommonlogEX(type,place,inst,txt,verbose_level=500,log_level=500):
123     lt=unicode(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))+u":"
124     if txt=="":
125         lt=lt+u"["+type+u"] "+place+u" "+inst
126     else:
127         try:
128             lt=lt+u"["+type+u"] "+place+u" "+inst+u"\n"+txt
129         except:
130             print [type,place,inst,txt]
131     lt=lt.encode('utf-8')
132     logfname="/var/log/rec10"
133     mode="a"
134     if verbose_level_now > verbose_level:
135         print lt
136     if log_level_now > log_level:
137         if os.path.exists(logfname):
138             f=open(logfname,mode)
139             f.write(lt+"\n")
140             f.close()
141 def addCommandLog(tspath,log_title,cmd,cmd_log=""):
142     addLog(tspath,cmd,log_title+u"ログ-コマンド")
143     addLog(tspath,cmd_log,log_title+u"ログ-詳細")
144 def addCommandLogZip(tspath,log_title,log_filename_add,cmd,cmd_log=""):
145     logtitle=getLogTitle(tspath)
146     logo=logtitle+"."+log_filename_add+".log"
147     logzip=logtitle+".log.zip"
148     addLogAll(tspath,cmd+"\n\n"+cmd_log,log_title,logo)
149     import zip
150     zip.addFile2FileZip(logo,logzip)
151     os.remove(logo)
152 def addCommandSelfLog(tspath,command):
153     logpath=getLogTitle(tspath)+".command.log"
154     f=""
155     if os.path.exists(logpath):
156         f=open(logpath,'a')
157     else:
158         f=open(logpath,'w')
159     tc=command+u"\n\n"
160     tc=unicode(tc)
161     f.write(tc.encode("utf-8"))
162     #f.write(tc.encode('utf-8','ignore'))
163     f.close()
164 def getLogTitle(tspath):
165     logo=tspath
166     logo=logo.replace("_1.wav",".ts")
167     logo=logo.replace("_2.wav",".ts")
168     logo=logo.replace("_1.aac",".ts")
169     logo=logo.replace("_2.aac",".ts")
170     logo=logo.replace("_1.mp3",".ts")
171     logo=logo.replace("_2.mp3",".ts")
172     logo=logo.replace(".ts.tsmix",".ts")
173     logo=logo.replace(".ts.b25",".ts")
174     logo=logo.replace(".sa.avi",".ts")
175     logo=logo.replace(".m2v",".ts")
176     logo=logo.replace(".avi",".ts")
177     logo=logo.replace(".mkv",".ts")
178     logo=logo.replace(".wav",".ts")
179     logo=logo.replace(".mp4",".ts")
180     logo=logo.replace(".mp3",".ts")
181     logo=logo.replace(".aac",".ts")
182     logo=logo.replace(".srt",".ts")
183     logo=logo.replace(".264",".ts")
184     logo=logo.replace(".ts","")
185     return logo
186 def addLog(tspath,txt,log_title,maxtextlength=1500):
187     logo=getLogTitle(tspath)+".log"
188     f=open(logo,'a')
189     s=len(txt)
190     stxt=""
191     if s>maxtextlength*2 and maxtextlength>0:
192         stxt=txt[0:maxtextlength]+"\n\n(ry..)\n"
193         st=txt[s-maxtextlength:].find("\n")
194         if st>0:
195             stxt=stxt+txt[s-1500+st:]
196     else:
197         stxt=txt
198     txtw= datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
199     txtw=txtw+"\n####"+log_title+"####\n"+stxt
200     f.write(txtw.encode('utf-8'))
201     f.close()
202 def addLogAll(tspath,txt,log_title,logpath):
203     logo=logpath
204     f=open(logo,'a')
205     stxt=txt
206     txtw= datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
207     txtw=txtw+"\n####"+log_title+"####\n"+stxt
208     f.write(txtw.encode('utf-8'))
209     f.close()