#!/usr/bin/python
# coding: UTF-8
+# Rec10 TS Recording Tools
+# Copyright (C) 2009-2012 Yukikaze
#import sys # モジュール属性 argv を取得するため
import commands
import os
-import shutil
+import os.path
import time
-import sys
+import traceback
import configreader
import status
+import recdblist
+import recording_earth_pt1
mypath = str(os.path.dirname(os.path.abspath(__file__))) + "/"
-def tv2tsmix(pout, ch, time):
- tv2b25ts(pout + ".b25", ch, time)
- b252tsmix(pout + ".b25", pout)
+def tv2tsmix(pout, ch, time,tsid="0",getlog=0):
+ tv2b25ts(pout + ".b25", ch, time,tsid)
+ txt=b252tsmix(pout + ".b25", pout)
+ return txt
#if os.access(pout, os.F_OK):
# try:
# os.remove(pout + ".b25")
# except:
# ""
-def tv2ts(pout, ch, csch, time):
- ext = os.path.splitext(pout)[1]#ext=".なんたら"
- tempt = os.path.split(pout)
- path = tempt[0]
- if len(ch) > 2:#BS/CSは100とかCS??とかなので3文字以上
- status.changeBSCSRecording(1)
- else:
- status.changeTERecording(1)
- tv2b25ts(pout + ".b25", ch, time)
- if len(ch) > 2:#BS/CSは100とかCS??とかなので3文字以上
- status.changeBSCSRecording(-1)
+def tv2ts(pout, ch, csch, time,tsid):
+ if ch.replace(" ","").replace("CS","").isdigit():
+ if len(ch) > 2:#BS/CSは100とかCS??とかなので3文字以上
+ status.changeBSCSRecording(1)
+ else:
+ status.changeTERecording(1)
+ try:
+ tv2b25ts(pout + ".b25", ch, time,tsid)
+ except Exception, inst:
+ recdblist.addCommonlogEX(u"Error",u"tv2ts(tv2ts.py)", str(type(inst)),str(inst)+traceback.format_exc(),log_level=200)
+ if len(ch) > 2:#BS/CSは100とかCS??とかなので3文字以上
+ status.changeBSCSRecording(-1)
+ else:
+ status.changeTERecording(-1)
else:
- status.changeTERecording(-1)
+ ch="0"
+ csch="0"
b252tsmix(pout + ".b25", pout + ".tsmix")
tch="0"
- if csch!="0":
+ if csch!=u"0":
tch=csch
- elif ch=="101":
+ elif ch==u"101":
tch="101"
- elif ch=="102":
+ elif ch==u"102":
tch="102"
#else:
# tch=ch
except:
""
def b252ts(pout, ch, csch):
- ext = os.path.splitext(pout)[1]#ext=".なんたら"
- tempt = os.path.split(pout)
- path = tempt[0]
b252tsmix(pout + ".b25", pout + ".tsmix")
- tch="0"
- if csch!="0":
- tch=csch
- elif ch=="101":
- tch="101"
- elif ch=="102":
- tch="102"
- #else:
- # tch=ch
+ tch=u"0"
+ if ch.replace(" ","").replace("CS","").isdigit():
+ if csch!=u"0":
+ tch=csch
+ elif ch==u"101":
+ tch=u"101"
+ elif ch==u"102":
+ tch=u"102"
+ else:
+ tch="0"
tsmix2ts(pout + ".tsmix", pout, tch)
- if os.access(pout, os.F_OK):
+def tv2b25ts(pout, ch, time,tsid):
+ if recording_earth_pt1.useDVB()==0:
+ exe = configreader.getConfPath('recpt1')
+ if len(ch) > 2:#BS/CSは100とかCS??とかなので3文字以上
+ status.changeBSCSRecording(1)
+ else:
+ status.changeTERecording(1)
try:
- #os.remove(path + "/" + t + ext)
- ""
+ doexe = exe + ' ' + ch + ' ' + time + ' \'' + pout + '\''
+ recdblist.printutf8(doexe)
+ recdblist.addLog(pout, doexe, u"recpt1ログ-コマンド")
+ recdblist.addLog(pout, unicode(commands.getoutput(doexe.encode('utf-8')),'utf-8'), u"recpt1ログ-詳細")
+ except Exception, inst:
+ recdblist.addCommonlogEX(u"Error",u"tv2b25ts(tv2ts.py)", str(type(inst)),str(inst))
+ if len(ch) > 2:#BS/CSは100とかCS??とかなので3文字以上
+ status.changeBSCSRecording(-1)
+ else:
+ status.changeTERecording(-1)
+ elif recording_earth_pt1.useDVB()==1:
+ if len(ch) > 2:#BS/CSは100とかCS??とかなので3文字以上
+ status.changeBSCSRecording(1)
+ else:
+ status.changeTERecording(1)
+ try:
+ recording_earth_pt1.record(ch,tsid,pout,time,0)
+ except Exception, inst:
+ recdblist.addCommonlogEX(u"Error",u"tv2b25ts(tv2ts.py)", str(type(inst)),str(inst))
+ if len(ch) > 2:#BS/CSは100とかCS??とかなので3文字以上
+ status.changeBSCSRecording(-1)
+ else:
+ status.changeTERecording(-1)
+ if os.path.exists(pout):
+ try:
+ os.chmod(pout,0755)
except:
""
-def tv2b25ts(pout, ch, time):
- exe = configreader.getpath('recpt1')
- if len(ch) > 2:#BS/CSは100とかCS??とかなので3文字以上
- status.changeBSCSRecording(1)
- else:
- status.changeTERecording(1)
- doexe = exe + ' ' + ch + ' ' + time + ' \'' + pout + '\''
- print doexe
- txt="####recpt1-log####\n"
- txt = txt + commands.getoutput(doexe)
- logo=pout.replace(".ts.b25",".log")
- f=open(logo,'w')
- f.write(txt)
- f.close()
- if len(ch) > 2:#BS/CSは100とかCS??とかなので3文字以上
- status.changeBSCSRecording(-1)
- else:
- status.changeTERecording(-1)
-def tv2b25ts_b25(pout, ch, time):
- exe = configreader.getpath('recpt1')
- doexe = exe + ' --b25 ' + ch + ' ' + time + ' \'' + pout + '\''
- os.system(doexe)
def b252tsmix(pin, pout):
- if not (os.path.exists(pout) and os.path.getsize(pin)==os.path.getsize(pout)):
- exe = configreader.getpath('b25')
- #doexe = exe.encode('utf-8') + u' \"' + pin.encode('utf-8') + u'\" \"' + pout.encode('utf-8') + u'\"'
+ if not (os.path.exists(pout) and os.path.getsize(pin)>os.path.getsize(pout)*0.95 and os.path.getsize(pin)<os.path.getsize(pout)*1.05):
+ exe=""
+ if configreader.getConfPath('b25_remote')=="1":
+ try:
+ exe = configreader.getConfPath('b25_env')+" && "
+ except:
+ inst=u"b25_remoteがオンになっていますが、b25_envが設定されていないかコメントアウトされています。"
+ recdblist.addCommonlogEX(u"Error",u"b252tsmix(tv2ts.py)", "",inst)
+ exe = exe + "nice -n 17 " + configreader.getConfPath('b25')
doexe = exe + u' \"' + pin + u'\" \"' + pout + u'\"'
- doexe = "nice -n 17 " + doexe
- print doexe
- sys.stdout.flush()
- logo=pin.replace(".ts.b25",".log")
- txt = commands.getoutput(doexe)
- s=len(txt)
- stxt=""
- if s>1000:
- s=s-1000
- stxt=txt[s:]
- else:
- stxt=txt
- s=stxt.find("\n")
- if s>0:
- s=s+len("\n")
- stxt=stxt[s:]
- txt = "\n####b25-log####\n"+stxt
- f=open(logo,'a')
- f.write(txt)
- f.close()
+ recdblist.printutf8(doexe)
+ recdblist.addCommandSelfLog(pin,doexe)
+ txt = unicode(commands.getoutput(doexe.encode('utf-8')),'utf-8')
+ recdblist.addLog(pin, doexe, u"b25ログ-コマンド")
+ recdblist.addLog(pin, txt, u"b25ログ-詳細")
+ recdblist.addCommandLogZip(pin, "b25", "b25", doexe, txt)
+ return txt
def tsmix2ts(pin, pout, csch):#csch=0ならcsの処理をしない
- """if csch==0:
- shutil.move(pin,pout)
- else:"""
- doexe = configreader.getpath("tssplitter") + " \""+ pin + "\" \""+ pout + "\" " + str(csch)
+ tssplitterex=configreader.getConfPath("java")+" -jar "+configreader.getConfPath("jTsSplitter")
+ doexe =tssplitterex + " \""+ pin + "\" \""+ pout + "\" " + str(csch)
doexe = "nice -n 18 " + doexe
- logo=pin.replace(".ts.tsmix",".log")
os.environ['LANG']="ja_JP.UTF-8"
- txt = commands.getoutput(doexe)
- stxt=txt
- txt = "\n####tssplit-log####\nCommand:"+doexe+"\nlog:\n"+stxt
- f=open(logo,'a')
- f.write(txt)
- f.close()
+ txt = unicode(commands.getoutput(doexe.encode('utf-8')),'utf-8')
+ recdblist.addLog(pin, doexe, u"TsSplitログ-コマンド")
+ recdblist.addLog(pin, txt, u"TsSplitログ-詳細")
time.sleep(1)
- if os.access(pout, os.F_OK):
+ if os.access(pout, os.F_OK) and os.path.getsize(pout)>10*1000*1000:
os.remove(pin)