#!/usr/bin/python
# coding: UTF-8
#import sys # モジュール属性 argv を取得するため
import commands
import os
import shutil
import time
import sys

import configreader
import status
mypath = str(os.path.dirname(os.path.abspath(__file__))) + "/"
def tv2tsmix(pout, ch, time):
    tv2b25ts(pout + ".b25", ch, time)
    b252tsmix(pout + ".b25", pout)
    #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)
    else:
        status.changeTERecording(-1)
    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
    tsmix2ts(pout + ".tsmix", pout, tch)
    if os.access(pout, os.F_OK):
        try:
            #os.remove(path + "/" + t + ext)
            ""
        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
    tsmix2ts(pout + ".tsmix", pout, tch)
    if os.access(pout, os.F_OK):
        try:
            #os.remove(path + "/" + t + ext)
            ""
        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'\"'
        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()
def tsmix2ts(pin, pout, csch):#csch=0ならcsの処理をしない
    """if csch==0:
        shutil.move(pin,pout)
    else:"""
    doexe = configreader.getpath("tssplitter") + " \""+ 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()
    time.sleep(1)
    if os.access(pout, os.F_OK):
        os.remove(pin)
        
