#!/usr/bin/python
# coding: UTF-8
#import sys # モジュール属性 argv を取得するため
import os
import shutil
import configreader
#import japanesenkf
import random
import base64
#import re
#import glob
import time
import hashlib
#japanesenkf.overrideEncodings()

mypath=str(os.path.dirname(os.path.abspath(__file__)))+"/"
def tv2tsmix(pout,ch,time):
    tv2b25ts(pout+".b25",ch,time)
    b252tsmix(pout+".b25",pout)
    #os.remove(pout+".b25")
    if os.access(pout, os.F_OK):
        try:
            os.remove(pout+".b25")
        except:
            ""
def tv2ts(pout,ch,csch,time):
    #print "1"+pout
    #print "2"+temp[0]
    #print "3"+temp[1]
    #tv2tsmix(temp[0]+"mix."+temp[1],ch,time)
    #tsmix2ts(temp[0]+"mix."+temp[1],pout,csch)
    #os.remove(temp[0]+"mix."+temp[1])
    temp=pout.split(".")
    #t=base64.b16encode(pout)
    #t=t[0:30]
    t=hashlib.md5(pout).hexdigest()
    #m.update(pout)
    #t=m.hexdigest()
    #t=str(random.randint(10000,90000))
    tempt=os.path.split(pout)
    path=tempt[0]
    tv2b25ts(pout+".b25",ch,time)
    b252tsmix(pout+".b25",path+"/"+t+"."+temp[1])
    tsmix2ts(path+"/"+t+"."+temp[1],pout,csch)
    #os.remove(path+"/"+t+"."+temp[1])
    if os.access(pout, os.F_OK):
        try:
            os.remove(path+"/"+t+"."+temp[1])
        except:
            ""

def b252ts(pout,ch,csch):
    temp=pout.split(".")
    #m=hashlib.md5
    #m.update(pout)
    #t=m.hexdigest()
    t=hashlib.md5(pout).hexdigest()
    #t=base64.b16encode(pout)
    #t=t[0:30]
    #t=str(random.randint(10000,90000))
    tempt=os.path.split(pout)
    path=tempt[0]
    #tv2b25ts(pout+".b25",ch,time)
    b252tsmix(pout+".b25",path+"/"+t+"."+temp[1])
    tsmix2ts(path+"/"+t+"."+temp[1],pout,csch)
    #os.remove(path+"/"+t+"."+temp[1])
    if os.access(pout, os.F_OK):
        try:
            os.remove(path+"/"+t+"."+temp[1])
        except:
            ""

def tv2b25ts(pout,ch,time):
    exe=configreader.getpath('recpt1')
    #print exe+' '+ch
    doexe=exe+' '+ch+' '+time+' \''+pout+'\''
    #print doexe
    os.system(doexe)
def tv2b25ts_b25(pout,ch,time):
    exe=configreader.getpath('recpt1')
    #print exe+' '+ch
    doexe=exe+' --b25 '+ch+' '+time+' \''+pout+'\''
    #print doexe
    os.system(doexe)
def b252tsmix(pin,pout):
    #print "t1"
    exe=configreader.getpath('b25')
    doexe=exe.encode('utf-8')+u' \''+pin.encode('utf-8')+u'\' \''+pout.encode('utf-8')+u'\''
    #print doexe
    doexe="/usr/bin/nice -n 17 "+doexe
    os.system(doexe)
    #print "t2"
def tsmix2ts(pin,pout,csch):#csch=0ならcsの処理をしない
    wine=configreader.getpath('wine')
    exe=configreader.getpath('splitt')
    if csch == "0":
        time.sleep(1)
        #mvexe="mv \'"+outpath+"\' \'"+pout+"\'"
        #print mvexe
        #print outpath
        #os.rename(outpath,pout)
        #i=0
        shutil.move(pin.encode('utf-8'),pout.encode('utf-8'))
    else:
        csopt='-CS'+str(csch)+" "
        dirname=os.path.dirname(pin)
        filename=os.path.basename(pin)
        fn=os.path.splitext(filename)[0]		
        fileext=os.path.splitext(filename)[1]
        outpath=dirname+"/"+fn+'_CS1('+str(csch)+')'+fileext
        #print dirname+" : "+filename+" : "+fn+" : "+fileext
        path=dirname
        outpath=os.path.join(dirname,fn+'_CS1('+str(csch)+')'+fileext)
        time.sleep(1)
        #doexe=wine+u' '+exe+u' -SD -1SEG -EIT '+csopt+u'-SEPA3 -OUT '+path+'/ '+pin
        doexe=wine+u' '+exe+u' -SD -1SEG -EIT '+csopt+' -OUT '+path.encode('utf-8')+'/ '+pin.encode('utf-8')
        doexe='xvfb-run -a -e xvfberror.txt '+doexe
        doexe="/usr/bin/nice -n 18 "+doexe
        os.system(doexe)
        time.sleep(1)
        for i in xrange(10):
            try:
                shutil.move(outpath.encode('utf-8'),pout.encode('utf-8'))
                break
            except:
                time.sleep(1)
        if os.access(pout, os.F_OK):
            os.remove(pin.encode('utf-8'))
        
