#!/usr/bin/env python2

import threading
import os, sys, urllib, urllib2, re
sys.path.append('/var/lib/python/')
import signal
import base64
from utilitM import *
import json
import requests
import datetime, time, subprocess
import shutil

proc = None
workerRtn = False
s = requests.Session()

def getMlnfo(mediafile,chNl):
    if "ffconcat version 1.0" not in mediafile:
        from mutagen.mp4 import MP4
        mediafile = mediafile.replace("file ","").replace("'","")
        audio = MP4(mediafile)         
        temptime = datetime.timedelta(seconds=audio.info.length)
        return ':'.join(str(temptime).split(':')[:2])
    else:
        return ""

def removeDir(chNl,tdDate,ytDate, yytDate):    
    for dirs in os.listdir(chNl):        
        if dirs ==  tdDate or dirs == ytDate or dirs == yytDate or "tempts" in dirs:
            continue
        else:
            if os.path.isdir(chNl+"/"+dirs):
                shutil.rmtree(chNl+"/"+dirs)
                print dirs

def ListFile(dirpath):
    return [("file '"+dirpath+"/"+f+"'") for f in os.listdir(dirpath)]
    
def make_p(dir,dir1=None):
    if not os.path.isdir(dir):
        os.makedirs(dir,0777)
        if dir1:
            if not os.path.isdir(dir1):
                os.makedirs(dir1,0777)        
        return True
    else:
        return False
def makefile(fpath, data):    
    text_file = open(fpath, "w")
    text_file.write(data)
    text_file.close()
def makefileA(fpath, data):    
    text_file = open(fpath, "a")
    text_file.write(data)
    text_file.close()
  
def readfile(fpath):
    data = ''
    text_file = open(fpath, "r")
    data = text_file.read()
    text_file.close()
    return data


def do_work1(id, stop):    
    makefile(sName+"/strStatus", "ON")
    while True: 
        if workerRtn:
            return 
        #try:
        makefile(sName+"/strMsg", "Sleeping")
        time.sleep(1800)
        #except:
        #    try:makefile(sName+"/strMsg", "Sleeping...")
        #    except:pass
        #    time.sleep(600)        

def clean(*args):
    global workerRtn
    iThread = "False"
    workerRtn = True
    print "Goodbye!"     
    makefile(sName+"/strStatus", "OFF")
    makefile(sName+"/strMsg", "Stream OFFLINE")
    makefile(sName+"/output.m3u8", "")
    os._exit(0)


def iWorker2(id):
    try:
        while True:
            print "waiting",time.strftime("%H:%M")
            if iThread == "False":
                break      
            if not os.path.isfile(sName+"/output.m3u8"):
                makefile(sName+"/output.m3u8", "")            
            if time.strftime("%H:%M") == "3:30" or time.strftime("%H:%M") == "03:30" or forceEpg:
                iIiiIiIIii = [dI for dI in os.listdir('.') if os.path.isdir(os.path.join('.',dI)) and 'images' not in dI and 'cssjs' not in dI and '1MovieEpg' not in dI]
                print iIiiIiIIii
                for iIiiIiIIi in iIiiIiIIii:
                  print IiIiiIiIIi(iIiiIiIIi, "1."+iIiiIiIIi)                
                
                data = '<?xml version="1.0" encoding="ISO-8859-1"?>\n<!DOCTYPE tv SYSTEM "xmltv.dtd">\n<tv source-info-url="http://www.schedulesdirect.org/" source-info-name="Schedules Direct" generator-info-name="XMLTV/$Id: tv_grab_na_dd.in,v 1.70 2008/03/03 15:21:41 rmeden Exp $" generator-info-url="http://www.xmltv.org/">'
                for xml_file in iIiiIiIIii:
                  try:ndata=readfile(xml_file+"/epgA")
                  except:ndata=""
                  data = data+"\n"+ndata
                data = data+"\n</tv>"
                makefile("epgm.xml",data)
                print "master epg generated"
                
                time.sleep(24*60*60)
            time.sleep(2)
    except:pass

def get_ldata(url, headers = None):
    req = urllib2.Request(url)
    response = urllib2.urlopen(req)
    data = response.read()
    response.close()
    return data
    
forceEpg = False
idT = '0'
sName = sys.argv[0].replace('.py','')

try:
    pid = readfile(sName+"/pid")
    os.system("kill -9 "+pid)
except:pass
time.sleep(2)
makefile(sName+"/strStatus","OFF")
makefile(sName+"/pid",str(os.getpid()))
iThread = "True"
if readfile(sName+"/strStatus") == "OFF":
    for sig in (signal.SIGABRT, signal.SIGINT, signal.SIGTERM):
        signal.signal(sig, clean)    
    mainthrd1 = threading.Thread(target=iWorker2, args=(idT))
    mainthrd1.daemon=True
    mainthrd1.start()    
    do_work1(0, False)
clean()