-#!/usr/bin/python
-# coding: UTF-8
-# Rec10 TS Recording Tools
-# Copyright (C) 2009-2010 Yukikaze
-import commands
-import datetime
-import os
-import re
-import shutil
-import time
-import os.path
-
-import chdb
-import configreader
-import status
-import ts2x264
-import tv2ts
-import recdblist
-import tv2audio
-
-
-global Bitrate_SD
-global Bitrate_HD
-global Bitrate_FHD
-global Bitrate_Short
-global Bitrate_LowHD
-Bitrate_SD = 1250
-Bitrate_HD = 3750
-Bitrate_LowHD = 2500
-Bitrate_FHD = 5000
-Bitrate_Short = 1250
-#Bitrate_Tall = 2500
-#Bitrate_Grande = 3750
-#Bitrate_Venti = 5000
-def timetv2b25(pout, chtxt, btime, etime, opt):
- """
- poutはタイトル
- """
- bt = datetime.datetime.strptime(btime, "%Y-%m-%d %H:%M:%S")
- et = datetime.datetime.strptime(etime, "%Y-%m-%d %H:%M:%S")
- extt = os.path.splitext(pout)
- tsout = extt[0]
- tnow = datetime.datetime.now()
- wt = bt-tnow
- waitt = wt.seconds-5
- time.sleep(waitt)
- tnow = datetime.datetime.now()
- dt = et-tnow
- rectime = dt.seconds-10
- rectime = str(rectime)
- tv2ts.tv2b25ts(tsout + ".ts.b25", chdb.chtxtsearch(chtxt)['ch'], rectime)
-def b252ts(pout, chtxt, btime, etime, opt):
- """
- poutはタイトル(自動的にtitle.b25 title.tsと名前がつきます。)
- """
- #status.setB25Decoding(status.getB25Decoding() + 1)
- status.changeB25Decoding(1)
- try:
- tv2ts.b252ts(pout + ".ts", chdb.chtxtsearch(chtxt)['ch'], chdb.chtxtsearch(chtxt)['csch'])
- tsout = pout
- aviin = pout + ".ts"
- dualaudio = 0
- pentaaudio = 0
- if re.search("5", opt):
- pentaaudio = 1
- if re.search("d", opt):
- dualaudio = 1
- if re.search(u"\[二\]", pout):
- dualaudio = 1
- elif re.search(u'(二)', pout):
- dualaudio = 1
- elif re.search(u'\(二\)', pout):
- dualaudio = 1
- if dualaudio == 1:
- dualaudio2sep(aviin,"167")
- if pentaaudio == 1:
- pentaaudiots2avi(aviin, tsout + ".sa.avi")
- except Exception, inst:
- print "Error happend in b252ts in tv2avi"
- print type(inst)
- print inst
- status.changeB25Decoding(-1)
-"""def timetv2avi(pout, chtxt, btime, etime, opt):
- bt = datetime.datetime.strptime(btime, "%Y-%m-%d %H:%M:%S")
- et = datetime.datetime.strptime(etime, "%Y-%m-%d %H:%M:%S")
- extt = os.path.splitext(pout)
- tsout = extt[0]
- tnow = datetime.datetime.now()
- wt = bt-tnow
- waitt = wt.seconds-5
- time.sleep(waitt)
- tnow = datetime.datetime.now()
- dt = et-tnow
- rectime = dt.seconds-10
- rectime = str(rectime)
- #recdblist.printutf8(tsout+".ts,"+chdb.chtxtsearch(chtxt)['ch']+","+chdb.chtxtsearch(chtxt)['csch']+","+rectime)
- tv2ts.tv2ts(tsout + ".ts", chdb.chtxtsearch(chtxt)['ch'], chdb.chtxtsearch(chtxt)['csch'], rectime)
- aviin = tsout + ".ts"
- dualaudio = 0
- pentaaudio = 0
- if re.search("5", opt):
- pentaaudio = 1
- if re.search("d", opt):
- dualaudio = 1
- if re.search(u"\[二\]", pout):
- dualaudio = 1
- elif re.search(u'(二)', pout):
- dualaudio = 1
- elif re.search(u'\(二\)', pout):
- dualaudio = 1
- if opt == "":
- opts = ""
- if chdb.chtxtsearch(chtxt)['bctype'] == 'cs':
- opts = opts + "S2"
- if chtxt == "disch":
- ""
- elif chtxt == "hisch":
- ""
- else:
- opts = opts + "a"
- else:
- opts = opts + "Ha2"
- else:
- opts = opt
- if dualaudio == 1:
- dualaudiots2avi(aviin, tsout + ".sa.avi")
- aviin = tsout + ".sa.avi"
- if pentaaudio == 1:
- dualaudiots2avi(aviin, tsout + ".sa.avi")
- aviin = tsout + ".sa.avi"
-"""
-def ts2avi(pin, pout, opt):
- status.changeEncoding(1)
- try:
- ts2x264.ts2x264(pin, pout, opt)
- except Exception, inst:
- print "error occures in tv2avi.py tv2avi"
- print type(inst)
- print inst
- status.changeEncoding(-1)
-"""def tv2avi(pout, chtxt, btime, etime, opt):
- bt = datetime.datetime.strptime(btime, "%Y-%m-%d %H:%M:%S")
- et = datetime.datetime.strptime(etime, "%Y-%m-%d %H:%M:%S")
- dt = et-bt
- time = dt.seconds-10
- time = str(time)
- extt = os.path.splitext(pout)
- tsout = extt[0]
- tv2ts.tv2ts(tsout + ".ts", chdb.chtxtsearch(chtxt)['ch'], chdb.chtxtsearch(chtxt)['csch'], time)
- aviin = tsout + ".ts"
- dualaudio = 0
- pentaaudio = 0
- if re.search("5", opt):
- pentaaudio = 1
- if re.search("d", opt):
- dualaudio = 1
- if re.search(u'\[二\]', pout):
- dualaudio = 1
- elif re.search(u'(二)', pout):
- dualaudio = 1
- elif re.search(u'\(二\)', pout):
- dualaudio = 1
- opts = ""
- if chdb.chtxtsearch(chtxt)['bctype'] == 'cs':
- opts = opts + "S2"
- if chtxt == "disch":
- ""
- elif chtxt == "hisch":
- ""
- else:
- opts = opts + "a"
- else:
- opts = opts + "Ha2"
- if dualaudio == 1:
- dualaudiots2avi(aviin, tsout + ".sa.avi")
- aviin = tsout + ".sa.avi"
- if pentaaudio == 1:
- dualaudiots2avi(aviin, tsout + ".sa.avi")
- aviin = tsout + ".sa.avi"
- ts2x264.ts2x264(aviin, pout, opts)
- #os.remove(aviin)
- """
-"""def b252avi(pout, chtxt, opt):
- extt = os.path.splitext(pout)
- tsout = extt[0]
- tv2ts.b252ts(tsout + ".ts", chdb.chtxtsearch(chtxt)['ch'], chdb.chtxtsearch(chtxt)['csch'])
- aviin = tsout + ".ts"
- dualaudio = 0
- pentaaudio = 0
- if re.search("5", opt):
- pentaaudio = 1
- if re.search("d", opt):
- dualaudio = 1
- if re.search(u'\[二\]', pout):
- dualaudio = 1
- elif re.search(u'(二)', pout):
- dualaudio = 1
- elif re.search(u'\(二\)', pout):
- dualaudio = 1
- if opt == "":
- opts = ""
- if chdb.chtxtsearch(chtxt)['bctype'] == 'cs':
- opts = opts + "S2"
- if chtxt == "disch":
- ""
- elif chtxt == "hisch":
- ""
- else:
- opts = opts + "a"
- else:
- opts = opts + "Ha2"
- else:
- opts = opt
- if dualaudio == 1:
- dualaudiots2avi(aviin, tsout + ".sa.avi")
- aviin = tsout + ".sa.avi"
- if pentaaudio == 1:
- dualaudiots2avi(aviin, tsout + ".sa.avi")
- aviin = tsout + ".sa.avi"
- ts2x264.ts2x264(aviin, pout, opts)"""
-def dualaudiots2avi(pin, pout):
- bontsdemux = configreader.getpath('bontsdemux')
- bonpin = "Z:\\" + pin[1:]
- outf = os.path.splitext(pin)[0]
- bonpout = "Z:\\" + outf[1:]
- xvfb = configreader.getpath('xvfb-run')
- logpath=pin.replace("ts","log")
- exe = 'wine ' + bontsdemux + " -i \"" + bonpin + "\" -delay 167 -nd -sound 0 -o \"" + bonpout + "\" -start -quit"
- #recdblist.printutf8(exe)
- exe = xvfb + ' -a ' + exe
- recdblist.printutf8(exe)
- os.system(exe.encode('utf-8'))
- ffpin1 = pin.replace("ts", "wav")
- ffpin2 = pin.replace("ts", "m2v")
- exe = "ffmpeg -y -i \'" + ffpin1 + "\' -i \'" + ffpin2 + "\' -r 29.97 -vsync 200 -vcodec copy -acodec libmp3lame -async 200 -ab 128k -f avi \'" + pout + "\'"
- recdblist.printutf8(exe)
- #commands.getoutput(exe)
- os.system(exe.encode('utf-8'))
- os.remove(ffpin1)
- os.remove(ffpin2)
-def dualaudio2sep(pin, delay):
- """
- delay is string
- """
- bontsdemux = configreader.getpath('bontsdemux')
- wine = configreader.getpath('wine')
- xvfb = configreader.getpath('xvfb-run')
- bonpin = "Z:\\" + pin[1:]
- outf = os.path.splitext(pin)[0]
- bonpout = "Z:\\" + outf[1:]
- exe = wine + ' ' + bontsdemux + " -i \"" + bonpin + "\" -delay " + delay + " -nd -sound 1 -o \"" + bonpout + "\" -start -quit"
- exe = xvfb + ' -a ' + exe
- recdblist.printutf8(exe)
- commands.getoutput(exe.encode('utf-8'))
- ffpin = pin.replace(".ts", "")
- ffpin1 = pin.replace("ts", "wav")
- ffpin2 = pin.replace("ts", "m2v")
- ffpout1 = ffpin + "_1.wav"
- ffpout2 = ffpin + "_2.wav"
- ffpout3 = ffpin + ".m2v"
- shutil.move(ffpin1, ffpout1)
- exe = 'wine ' + bontsdemux + " -i \"" + bonpin + "\" -delay " + delay + " -nd -sound 2 -encode Demux\(wav\) -o \"" + bonpout + "\" -start -quit"
- exe = xvfb + ' -a ' + exe
- recdblist.printutf8(exe)
- commands.getoutput(exe.encode('utf-8'))
- #os.system(exe)
- shutil.move(ffpin1, ffpout2)
- shutil.move(ffpin2, ffpout3)
- ffpout21=ffpout1.replace(".wav",".mp3")
- ffpout22=ffpout2.replace(".wav",".mp3")
- if os.path.exists(configreader.getpath("NeroAAC")):
- ffpout21=ffpout1.replace(".wav",".aac")
- ffpout22=ffpout2.replace(".wav",".aac")
- tv2audio.wav2aac_nero(ffpout1, ffpout21)
- tv2audio.wav2aac_nero(ffpout2, ffpout22)
- else:
- tv2audio.wav2mp3_lame(ffpout1, ffpout21)
- tv2audio.wav2mp3_lame(ffpout2, ffpout22)
- time.sleep(3)
- os.remove(ffpout1)
- os.remove(ffpout2)
-
-def pentaaudiots2avi(pin, pout):
- bontsdemux = configreader.getpath('bontsdemux')
- bonpin = "Z:\\" + pin[1:]
- xvfb = configreader.getpath('xvfb-run')
- outf = os.path.splitext(pin)[0]
- bonpout = "Z:\\" + outf[1:]
- exe = 'wine ' + bontsdemux + " -i \"" + bonpin + "\" -delay 167 -nd -sound 3 -o \"" + bonpout + "\" -start -quit"
- exe = xvfb + ' -a ' + exe
- recdblist.printutf8(exe)
- commands.getoutput(exe.encode('utf-8'))
- ffpin1 = pin.replace("ts", "wav")
- ffpin2 = pin.replace("ts", "m2v")
- exe = "ffmpeg -y -i \'" + ffpin1 + "\' -i \'" + ffpin2 + "\' -r 29.97 -vsync 200 -vcodec copy -acodec libmp3lame -async 200 -ab 128k -f avi \'" + pout + "\'"
- recdblist.printutf8(exe)
- commands.getoutput(exe.encode('utf-8'))
- os.remove(ffpin1)
- os.remove(ffpin2)
-
+#!/usr/bin/python\r
+# coding: UTF-8\r
+# Rec10 TS Recording Tools\r
+# Copyright (C) 2009-2010 Yukikaze\r
+import commands\r
+import datetime\r
+import os\r
+import re\r
+import shutil\r
+import time\r
+import os.path\r
+import traceback\r
+\r
+import chdb\r
+import configreader\r
+import status\r
+import ts2x264\r
+import tv2ts\r
+import recdblist\r
+import tv2audio\r
+\r
+\r
+global Bitrate_SD\r
+global Bitrate_HD\r
+global Bitrate_FHD\r
+global Bitrate_Short\r
+global Bitrate_LowHD\r
+Bitrate_SD = 1250\r
+Bitrate_HD = 3750\r
+Bitrate_LowHD = 2500\r
+Bitrate_FHD = 5000\r
+Bitrate_Short = 1250\r
+def timetv2b25(pout, chtxt, btime, etime, opt):\r
+ """\r
+ poutはタイトル\r
+ """\r
+ bt = datetime.datetime.strptime(btime, "%Y-%m-%d %H:%M:%S")\r
+ et = datetime.datetime.strptime(etime, "%Y-%m-%d %H:%M:%S")\r
+ extt = os.path.splitext(pout)\r
+ tsout = extt[0]\r
+ tnow = datetime.datetime.now()\r
+ wt = bt-tnow\r
+ waitt = wt.seconds\r
+ if waitt>0:\r
+ time.sleep(waitt)\r
+ tnow = datetime.datetime.now()\r
+ dt = et-tnow\r
+ rectime = dt.seconds-5\r
+ rectime = str(rectime)\r
+ tv2ts.tv2b25ts(tsout + ".ts.b25", chdb.searchCHFromChtxt(chtxt)['ch'], rectime)\r
+def b252ts(pout, chtxt, btime, etime, opt):\r
+ """\r
+ poutはタイトル(自動的にtitle.b25 title.tsと名前がつきます。)\r
+ """\r
+ #status.setB25Decoding(status.getB25Decoding() + 1)\r
+ status.changeB25Decoding(1)\r
+ try:\r
+ try:\r
+ ch=chtxt.split("_")[0]\r
+ csch=chtxt.split("_")[1]\r
+ except:\r
+ ch=0\r
+ csch=0\r
+ tv2ts.b252ts(pout + ".ts", ch, csch)\r
+ tsout = pout\r
+ aviin = pout + ".ts"\r
+ dualaudio = 0\r
+ pentaaudio = 0\r
+ singleaudiosplit = 0\r
+ if re.search("5", opt):\r
+ pentaaudio = 1\r
+ if re.search("d", opt):\r
+ dualaudio = 1\r
+ if re.search(u"\[二\]", pout):\r
+ dualaudio = 1\r
+ elif re.search(u'(二)', pout):\r
+ dualaudio = 1\r
+ elif re.search(u'\(二\)', pout):\r
+ dualaudio = 1\r
+ if dualaudio == 1:\r
+ tv2audio.ts2dualaudio_BonTsDemux(aviin, recdblist.BONTSDEMUX_DELAY, opt)\r
+ if pentaaudio == 1:\r
+ tv2audio.ts2pentaaudio_BonTsDemux(aviin, recdblist.BONTSDEMUX_DELAY, opt)\r
+ except Exception, inst:\r
+ recdblist.addCommonlogEX("Error", "b252ts(tv2avi.py)", str(type(inst))+traceback.format_exc(), str(inst))\r
+ status.changeB25Decoding(-1)\r
+def ts2avi(pin, pout, opt):\r
+ status.changeEncoding(1)\r
+ try:\r
+ ts2x264.ts2x264(pin, pout, opt)\r
+ except Exception, inst:\r
+ recdblist.printutf8("error occures in tv2avi.py ts2avi")\r
+ recdblist.printutf8(str(type(inst)))\r
+ recdblist.printutf8(str(inst)+traceback.format_exc())\r
+ status.changeEncoding(-1)\r
+def ts2raw(pin, pout, opt):\r
+ status.changeEncoding(1)\r
+ try:\r
+ ts2x264.ts2x264(pin, pout, opt)\r
+ except Exception, inst:\r
+ recdblist.printutf8("error occures in tv2avi.py ts2raw")\r
+ recdblist.printutf8(str(type(inst)))\r
+ recdblist.printutf8(str(inst)+traceback.format_exc())\r
+ status.changeEncoding(-1)\r
+\r