# Rec10 TS Recording Tools
# Copyright (C) 2009 Yukikaze
import sqlite3
+
import os
#CS放送では複数のチャンネルを指定する必要があるためチャンネル名をテキストデータで持っておき(chtxt)、必要に応じて変換する
#ontvはepgデータなどで指定されている名前
# db.commit()
#db.commit()
db.close()
-def chadd(bctype, ontv, chtxt, ch, csch,station,station_name):#すべて文字列
+def chadd(bctype, ontv, chtxt, ch, csch, station, station_name):#すべて文字列
"""
ChannelDBに指定したデータを追加する
bctype:放送種別,bs/cs/te10などが入る。
チャンネルの数字を足したものにする
"""
db = sqlite3.connect(dbpath)
- value = "(\'" + bctype + "\',\'" + ontv + "\',\'" + chtxt + "\',\'" + ch + "\',\'" + csch +"\',\'"+station+ "\',\'" +station_name+ "\',datetime(\'2009-04-01 00:00:00\'))"
+ value = "(\'" + bctype + "\',\'" + ontv + "\',\'" + chtxt + "\',\'" + ch + "\',\'" + csch + "\',\'" + station + "\',\'" + station_name + "\',datetime(\'2009-04-01 00:00:00\'))"
print value
value = unicode(value)
db.execute('insert into chdata values ' + value)
#iEPGDigitalはテレビ王国のサイトでiEPGはサイトによってまちまちのようなので自分の使うサイトに即したものにしてください
#指定しない場合はnoneなどにしておけば動作はします(自動でチャンネルを設定する部分が動かないためチャンネルをRec10WEBから指定する必要があります。)
#CS放送(スカパーe2)主に基本パックには言ってるものを中心に
-chadd('cs', '1204.ontvjapan.com', 'natiogeo', 'CS6', '343','CSDT343','none')
-chadd('cs', '1070.ontvjapan.com', 'bbc', 'CS12', '353','CSDT353','BBCワールド')
-chadd('cs', '1069.ontvjapan.com', 'cnn', 'CS12', '354','CSDT354','CNNインターナショナル')
-chadd('cs', '1045.ontvjapan.com', 'kids', 'CS22', '330','CSDT330','キッズステーション')
-chadd('cs', '1007.ontvjapan.com', 'movieplus', 'CS18', '240','CSDT240','ムービープラス')
-chadd('cs', '1016.ontvjapan.com', 'fox', 'CS4', '312','CSDT312','FOX')
-chadd('cs', '1014.ontvjapan.com', 'axn', 'CS6', '311','CSDT311','AXN')
-chadd('cs', '1201.ontvjapan.com', 'atx', 'CS16', '333','CSDT333','アニメシアターX')
-chadd('cs', '1050.ontvjapan.com', 'hisch', 'CS16', '342','CSDT342','LET’sTRY')
-chadd('cs', '1047.ontvjapan.com', 'animax', 'CS20', '332','CSDT332','AXNアニマックス')
-chadd('cs', '1062.ontvjapan.com', 'disch', 'CS20', '340','CSDT340','ディスカバリーチャンネル')
-chadd('cs', '1193.ontvjapan.com', 'anipla', 'CS20', '341','CSDT341','アニマルプラネット')
-chadd('cs', '1008.ontvjapan.com', 'neco', 'CS6', '223','CSDT223','SPTV261')
-chadd('cs', '1015.ontvjapan.com', 'family', 'CS22', '293','CSDT293','ファミリー劇場')
-chadd('cs', '1213.ontvjapan.com', 'disney', 'CS4', '334','CSDT334','ディズニーチャンネル')
-chadd('cs', '1009.ontvjapan.com', 'yo-ga', 'CS6', '224','CSDT224','シネフィル・イマジカ')
-chadd('cs2', '1217.ontvjapan.com', 'thecinema', 'CS10', '228','CSDT228','none')
-chadd('cs2', '1086.ontvjapan.com', 'nihoneiga', 'CS2', '239','CSDT239','日本映画専門チャンネル')
+chadd('cs', '1204.ontvjapan.com', 'natiogeo', 'CS6', '343', 'CSDT343', 'none')
+chadd('cs', '1070.ontvjapan.com', 'bbc', 'CS12', '353', 'CSDT353', 'BBCワールド')
+chadd('cs', '1069.ontvjapan.com', 'cnn', 'CS12', '354', 'CSDT354', 'CNNインターナショナル')
+chadd('cs', '1045.ontvjapan.com', 'kids', 'CS22', '330', 'CSDT330', 'キッズステーション')
+chadd('cs', '1007.ontvjapan.com', 'movieplus', 'CS18', '240', 'CSDT240', 'ムービープラス')
+chadd('cs', '1016.ontvjapan.com', 'fox', 'CS4', '312', 'CSDT312', 'FOX')
+chadd('cs', '1014.ontvjapan.com', 'axn', 'CS6', '311', 'CSDT311', 'AXN')
+chadd('cs', '1201.ontvjapan.com', 'atx', 'CS16', '333', 'CSDT333', 'アニメシアターX')
+chadd('cs', '1050.ontvjapan.com', 'hisch', 'CS16', '342', 'CSDT342', 'LET’sTRY')
+chadd('cs', '1047.ontvjapan.com', 'animax', 'CS20', '332', 'CSDT332', 'AXNアニマックス')
+chadd('cs', '1062.ontvjapan.com', 'disch', 'CS20', '340', 'CSDT340', 'ディスカバリーチャンネル')
+chadd('cs', '1193.ontvjapan.com', 'anipla', 'CS20', '341', 'CSDT341', 'アニマルプラネット')
+chadd('cs', '1008.ontvjapan.com', 'neco', 'CS6', '223', 'CSDT223', 'SPTV261')
+chadd('cs', '1015.ontvjapan.com', 'family', 'CS22', '293', 'CSDT293', 'ファミリー劇場')
+chadd('cs', '1213.ontvjapan.com', 'disney', 'CS4', '334', 'CSDT334', 'ディズニーチャンネル')
+chadd('cs', '1092.ontvjapan.com', 'teroasa', 'CS12', '303', 'CSDT303', '糞朝チャンネル')
+chadd('cs', '1009.ontvjapan.com', 'yo-ga', 'CS6', '224', 'CSDT224', 'シネフィル・イマジカ')
+chadd('cs2', '1217.ontvjapan.com', 'thecinema', 'CS10', '228', 'CSDT228', 'none')
+chadd('cs2', '1086.ontvjapan.com', 'nihoneiga', 'CS2', '239', 'CSDT239', '日本映画専門チャンネル')
#bs放送の設定 全国共通のはず
-chadd('bs', '3001.ontvjapan.com', 'bs-nhk-1', '101', '0','BSDT101','NHK衛星第一')
-chadd('bs', '3002.ontvjapan.com', 'bs-nhk-2', '102', '0','BSDT102','NHK衛星第二')
-chadd('bs', '3003.ontvjapan.com', 'bs-nhk-hi', '103', '0','BSDT103','NHKハイビジョン')
-chadd('bs', '3004.ontvjapan.com', 'bs-nittere', '141', '0','BSDT141','BS日テレ')
-chadd('bs', '3005.ontvjapan.com', 'bs-asahi', '151', '0','BSDT151','BS朝日')
-chadd('bs', '3006.ontvjapan.com', 'bs-tbs', '161', '0','BSDT161','BS−i')
-chadd('bs', '3007.ontvjapan.com', 'bs-japan', '171', '0','BSDT171','BSジャパン')
-chadd('bs', '3008.ontvjapan.com', 'bs-fuji', '181', '0','BSDT181','BSフジ')
-chadd('bs', '3013.ontvjapan.com', 'bs-11', '211', '0','BSDT211','')
+chadd('bs', '3001.ontvjapan.com', 'bs-nhk-1', '101', '0', 'BSDT101', 'NHK衛星第一')
+chadd('bs', '3002.ontvjapan.com', 'bs-nhk-2', '102', '0', 'BSDT102', 'NHK衛星第二')
+chadd('bs', '3003.ontvjapan.com', 'bs-nhk-hi', '103', '0', 'BSDT103', 'NHKハイビジョン')
+chadd('bs', '3004.ontvjapan.com', 'bs-nittere', '141', '0', 'BSDT141', 'BS日テレ')
+chadd('bs', '3005.ontvjapan.com', 'bs-asahi', '151', '0', 'BSDT151', 'BS朝日')
+chadd('bs', '3006.ontvjapan.com', 'bs-tbs', '161', '0', 'BSDT161', 'BS−i')
+chadd('bs', '3007.ontvjapan.com', 'bs-japan', '171', '0', 'BSDT171', 'BSジャパン')
+chadd('bs', '3008.ontvjapan.com', 'bs-fuji', '181', '0', 'BSDT181', 'BSフジ')
+chadd('bs', '3013.ontvjapan.com', 'bs-11', '211', '0', 'BSDT211', '')
#地上波の設定 愛知県向け
-chadd('te13', '0442.ontvjapan.com', 'nhk-k', '13', '0','DFS00C08','NHK教育')
-chadd('te20', '0432.ontvjapan.com', 'nhk-s', '20', '0','DFS08400','NHK総合')
-chadd('te22', '0404.ontvjapan.com', 'me-tere', '22', '0','DFS00C20','名古屋テレビ')
-chadd('te18', '0405.ontvjapan.com', 'cbc', '18', '0','DFS00C18','中京テレビ')
-chadd('te21', '0406.ontvjapan.com', 'toukai', '21', '0','DFS00C10','東海テレビ')
-chadd('te19', '0407.ontvjapan.com', 'chukyo', '19', '0','DFS00C28','中京テレビ')
-chadd('te23', '0420.ontvjapan.com', 'aichi', '23', '0','DFS08430','テレビ愛知')
+chadd('te13', '0442.ontvjapan.com', 'nhk-k', '13', '0', 'DFS00C08', 'NHK教育')
+chadd('te20', '0432.ontvjapan.com', 'nhk-s', '20', '0', 'DFS08400', 'NHK総合')
+chadd('te22', '0404.ontvjapan.com', 'me-tere', '22', '0', 'DFS00C20', '名古屋テレビ')
+chadd('te18', '0405.ontvjapan.com', 'cbc', '18', '0', 'DFS00C18', '中京テレビ')
+chadd('te21', '0406.ontvjapan.com', 'toukai', '21', '0', 'DFS00C10', '東海テレビ')
+chadd('te19', '0407.ontvjapan.com', 'chukyo', '19', '0', 'DFS00C28', '中京テレビ')
+chadd('te23', '0420.ontvjapan.com', 'aichi', '23', '0', 'DFS08430', 'テレビ愛知')
# coding: UTF-8
# Rec10 TS Recording Tools
# Copyright (C) 2009 Yukikaze
+import shutil
import time
import chdb
import configreader
if pentaaudio ==1:
dualaudiots2avi(aviin, tsout + "sa.avi")
aviin = tsout + "sa.avi"
- """
- if makexvid==1:
- ts2xvid.ts2xvid(aviin, pout,opts)
- else:
- ts2x264.ts2x264(aviin, pout,opts)
- """
bt=datetime.datetime.now()+datetime.timedelta(seconds=600)
btime=bt.strftime("%Y-%m-%d %H:%M:%S")
et=datetime.datetime.now()+datetime.timedelta(seconds=600)
time = str(time)
extt = os.path.splitext(pout)
tsout = extt[0]
- #tsout=pout####
- #print "4"+tsout
- #print tsout+".ts,"+chdb.chtxtsearch(chtxt)['ch']+","+chdb.chtxtsearch(chtxt)['csch']+","+time
tv2ts.tv2ts(tsout + ".ts", chdb.chtxtsearch(chtxt)['ch'], chdb.chtxtsearch(chtxt)['csch'], time)
aviin = tsout + ".ts"
dualaudio = 0
ts2x264.ts2x264(aviin, pout,opts)
#os.remove(aviin)
def b252avi(pout, chtxt,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]
- #tsout=pout####
- #print "4"+tsout
- #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.b252ts(tsout + ".ts", chdb.chtxtsearch(chtxt)['ch'], chdb.chtxtsearch(chtxt)['csch'])
- #tv2ts.tv2ts(tsout + ".ts", chdb.chtxtsearch(chtxt)['ch'], chdb.chtxtsearch(chtxt)['csch'], rectime)
aviin = tsout + ".ts"
dualaudio = 0
pentaaudio = 0
#except:
# ""
- """
- pout = pout.encode('utf-8')
- extt = os.path.splitext(pout)
- tsout = extt[0]
- #print tsout+".ts,"+chdb.chtxtsearch(chtxt)['ch']+","+chdb.chtxtsearch(chtxt)['csch']+","+time
- tv2ts.b252ts(tsout + ".ts", chdb.chtxtsearch(chtxt)['ch'], chdb.chtxtsearch(chtxt)['csch'])
- aviin = tsout + ".ts"
- dualaudio = 0
- if re.search("d",opt):
- dualaudio = 1
- if re.search('\[二\]', pout):
- dualaudio = 1
- elif re.search('(二)', pout):
- dualaudio = 1
- elif re.search('\(二\)', 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"
- ts2x264.ts2x264(aviin, pout,opts)
- #os.remove(aviin)
-
- """
-
def dualaudiots2avi(pin, pout):
bontsdemux = configreader.getpath('bontsdemux')
wine = configreader.getpath('wine')
os.system(exe)
os.remove(ffpin1)
os.remove(ffpin2)
+def dualaudio2sep(pin,pout,delay):
+ bontsdemux = configreader.getpath('bontsdemux')
+ wine = configreader.getpath('wine')
+ cmdwine = configreader.getpath('cmdwine')
+ 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"
+ #print exe
+ exe = 'xvfb-run -a ' + exe
+ #exe='export Display=:2&&'+exe
+ print exe
+ os.system(exe)
+ ffpin=pin.replace(".ts","")
+ ffpin1 = pin.replace("ts", "wav")
+ ffpin2 = pin.replace("ts", "m2v")
+ ffpout1=ffpin+"1_delay"+delay+".wav"
+ ffpout2=ffpin+"2_delay"+delay+".wav"
+ shutil.move(ffpin1, ffpout1)
+ exe = 'wine ' + bontsdemux + " -i \"" + bonpin + "\" -delay "+delay+" -nd -sound 2 -encode Demux\(wav\) -o \"" + bonpout + "\" -start -quit"
+ exe = 'xvfb-run -a ' + exe
+ os.system(exe)
+ shutil.move(ffpin1, ffpout2)
+ ffpout21=ffpout1.replace(".wav",".ogg")
+ ffpout22=ffpout2.replace(".wav",".ogg")
+ aexe1="ffmpeg -i "+ffpout1+" -vn -acodec vorbis -ar 48000 -ab 128k "+ffpout21
+ aexe2="ffmpeg -i "+ffpout2+" -vn -acodec vorbis -ar 48000 -ab 128k "+ffpout22
+ os.system(aexe1)
+ os.system(aexe2)
+
+ #exe = "ffmpeg -y -i \'" + ffpin1 + "\' -i \'" + ffpin2 + "\' -r 29.97 -vsync 200 -vcodec copy -acodec libmp3lame -async 200 -ab 128k -f avi \'" + pout + "\'"
+ #print exe
+
+ #os.remove(ffpin1)
+ #os.remove(ffpin2)
def pentaaudiots2avi(pin, pout):
bontsdemux = configreader.getpath('bontsdemux')