OSDN Git Service

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