# -*- coding: utf-8 -*-

'''
    Genesis Add-on
    Copyright (C) 2015 lambda

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
'''

import re,urllib,urlparse,sys,unicodedata,base64

from resources.lib.libraries import cleantitle
from resources.lib.libraries import client
from resources.lib.resolvers import googleplus
from resources.lib.resolvers import openload


class source:    

    def __init__(self):
        print 'GenesisFR TV; INIT'
        self.base_link = 'http://zmovie.altervista.org/'
        self.search_link = 'http://zmovie.altervista.org/?s='

    def get_movie(self, imdb, title, year):
        print ''

    def get_sources(self, url, hosthdDict, hostDict, locDict):
        
        print 'GenesisFR TV; ZMOVIE_ALTERVISTA; GET_SOURCES'
        
        try :
            
            tempVOSTFR = None
            
            params = dict(urlparse.parse_qsl(sys.argv[2].replace('?','')))        

            try:
                name = params['name']
            except:
                name = None

            try:
                title = params['title']
            except:
                title = None

            try:
                year = params['year']
            except:
                year = None

            try:
                season = params['season']
            except:
                season = None

            try:
                episode = params['episode']
            except:
                episode = None

            try:
                tvshowtitle = params['tvshowtitle']
            except:
                tvshowtitle = None

            try:
                show = params['show']
            except:
                show = None

            try:
                imdb = params['imdb']
            except:
                imdb = None

            try:
                tmdb = params['tmdb']
            except:
                tmdb = None

            titleE = tvshowtitle
            titleF =''

            aFlag = 0
            sources = []

            query = 'http://www.thetvdb.com/api/GetSeriesByRemoteID.php?imdbid=%s&language=fr' % imdb
            result = client.request(query)

            titleF = client.parseDOM(result, 'SeriesName')[0]
            titleF = ''.join((i for i in unicodedata.normalize('NFD', titleF) if unicodedata.category(i) !='Mn'))

            aFlag = 0
            sources = []
            
        except :
            pass



        try :
            print 'GenesisFR TV; ZMOVIE_ALTERVISTA'
            
            #url = 'http://zmovie.altervista.org/'
            
            #cookie = client.request(url, output='cookie')
            #post = 'action=login&login_name=ilovestreaming&login_password=ilovestreaming&Submit=&login=submit'
            #cookie = client.request(url, post=post, output='cookie')
            #result = client.request(url, cookie=cookie)
            
            j = 0
            
 
            try :
                print 'GenesisFR TV; ZMOVIE_ALTERVISTA'
    
                video_season = ' - Saison ' + season
                print 'GenesisFR TV; ZMOVIE_ALTERVISTA video_season= %s' % video_season
                
                try : url = 'http://zmovie.altervista.org/?s=%s' % urllib.quote_plus(titleF + ' ' + video_season)
                except : url = 'http://zmovie.altervista.org/?s=%s' % urllib.quote_plus(titleE + ' ' + video_season)
                
                print 'GenesisFR TV; ZMOVIE_ALTERVISTA = URL = %s' % url
                
                result = client.source(url)
                
    
                
                video_id = re.compile('mov-title[\"]><a href=(.+?)h3>').findall(result)[0]
                video = re.compile('mov-title[\"]><a href=(.+?)h3>').findall(result)[0]
                print video
                video_title = re.compile('>(.+?)<').findall(video_id)[0]
                video_id = re.compile('mov-title[\"]><a href=["\"](.+?)["\"]').findall(result)[0]
                print video_id
    
                
                result = client.source(video_id)
                #print result
                result2 = result
                
                video_episode = 'episode' + episode
                
                try:
                    tempSearchEpisode = 'title=\"Episode ' + episode
                    tempEpisode = re.compile(tempSearchEpisode + '(.+?)<i').findall(result)[0]
                    tempEpisode = re.compile('data-rel=\"(.+?)["\"]').findall(tempEpisode)[0]
                    
                    video_search = '<div id=\"'+ tempEpisode+ '\"(.+?)</ul>'
                    video_id = re.compile(video_search, re.MULTILINE|re.DOTALL).findall(result)[0]
                    
                except:
                    video_search = '<div id=\"'+ video_episode + '\"(.+?)</ul>'
                    video_id = re.compile(video_search, re.MULTILINE|re.DOTALL).findall(result)[0]            
    
                result2 = video_id
                #print result2
                
            except :
                pass
            
            

            while j <= len(result) :
    
                try :
                    video_id = re.compile('movief[\"]><a href=[\"](.+?)/a>').findall(result)[j]
                    print video_id
                    video_id1 =  video_id
                    video_title = re.compile('>(.+?)<').findall(video_id)[0]
                    print video_title
                    video_id = re.compile('movief[\"]><a href=["\"](.+?)["\"]').findall(result)[j]
                    print video_id

                    video_title = video_title.replace(':', '')
                    video_title = video_title.replace('  ', ' ')
                    video_title = video_title.replace('   ', ' ')
                    video_title = video_title.replace('    ', ' ')
                    video_title = video_title.lower()
                    video_title = video_title.replace(' ', '%20')
                    print video_title

                    title = title.replace(':', '')
                    title = title.replace('  ', ' ')
                    title = title.replace('   ', ' ')
                    title = title.replace('    ', ' ')
                    #title = title.replace(' ', '')
                    print title


                    title = ud.name(unicode(title))
                    
                    

                    if (title.lower() in video_title.lower()) or (video_title.lower() in title.lower()) or (title_english.lower() in video_title.lower()) or (video_title.lower() in title_english.lower()) :
                        break
                    else :
                        j = j + 1
                        video_id = ''

                except :
                    break

            result = client.source(video_id)
            result2 = result

            aFlag = 0
            
            try:
                if int(episode) == 1:
                    url = video_id
                    tempUrl1 = url
                    tempHDFlag = 'SD'
                else:
                    url = video_id + episode + '/'
                    tempHDFlag = 'SD'
                    
                print 'GenesisFR TV; ZMOVIE_ALTERVISTA = ******** URL           %s' % url
                
                result = client.source(url)
                result2 = result
                
                
            except :
                pass
                
                
            try :
                if aFlag == 0:
                    print 'GenesisFR ; ZMOVIE_ALTERVISTA -> EASYWATCH'
                    
                    result = re.compile('<iframe src=\"(.+?)[\'|\"]').findall(result2)[0]
                    result = client.source(result)
        
                    video_id = re.compile('file:[\"](.+?)[\'|\"]').findall(result)[0]
                    label_id = re.compile('label:[\"](.+?)[\'|\"]').findall(result)[0]
        
                    url = video_id
                    url = url.encode('utf-8')
        
                    sources.append({'source': '(Fr) - Easywatch', 'quality': label_id, 'provider': 'ZmovieAltervista', 'url': url})
        
                    aFlag = 1
                    
                    
    
            except :
                pass
            
    
    
            try :
                if aFlag == 0:
                    print 'GenesisFR ; ZMOVIE_ALTERVISTA -> ALLVID'
                    result = re.compile('<iframe src=\"(.+?)[\'|\"]').findall(result2)[0]
                    result = client.source(result)
        
                    video_id = re.compile('file:[\"](.+?)[\'|\"]').findall(result)[0]
        
                    url = video_id
                    url = url.encode('utf-8')
        
                    sources.append({'source': '(Fr) - Allvid', 'quality': tempHDFlag, 'provider': 'ZmovieAltervista', 'url': url})
        
                    aFlag = 1
                    
                    
    
            except :
                pass
            
            
            
            try :
                if aFlag == 0:
                    print 'GenesisFR ; ZMOVIE_ALTERVISTA -> EXASHARE'
                    result = re.compile('<iframe src=\"(.+?)[\'|\"]').findall(result2)[0]
                    result = client.source(result)
                    
                    result = re.compile('src=[\"](.+?)[\'|\"]').findall(result)[0]
                    result = client.source(result)
                    
                    video_id = re.compile('file: [\"](.+?)[\'|\"]').findall(result)[0]
         
                    url = video_id
                    url = url.encode('utf-8')
                    print '$#@$#@$#@    Exashare %d' % i
                    
                    sources.append({'source': '(Fr) - Exashare', 'quality': tempHDFlag, 'provider': 'ZmovieAltervista', 'url': url})
    
                    
                    aFlag = 1
                    
                    
    
            except :
                pass
            
            
            
            try :
                if aFlag == 0:
                    print 'GenesisFR ; ZMOVIE_ALTERVISTA -> YOUWATCH'
                    result = re.compile('<iframe src=\"(.+?)[\'|\"]').findall(result2)[0]
                    result = client.source(result)            
                    
                    video_id = re.compile('src=[\"](.+?)[\'|\"]').findall(result)[0]
                    result = client.source(video_id)
        
                    video_info = re.compile('\\|provider\\|(.+?)\\|setup').findall(result)[0]
                    video_info_split = video_info.split('|')
                    
                    video_type = video_info_split[0]
                    video_name = video_info_split[1]
                    video_ref = video_info_split[2]
                    video_port = video_info_split[3]
                    video_url_prefix = video_info_split[4]
                    
                    url = 'http://' + video_url_prefix + '.youwatch.org:' + video_port + '/' + video_ref + '/' + video_name + '.' + video_type
                    url = url.encode('utf-8')
        
                    sources.append({'source': '(Fr) - Youwatch', 'quality': tempHDFlag, 'provider': 'ZmovieAltervista', 'url': url})
        
                    aFlag = 1
                    
                   
    
            except :
                pass
            
            
    
            try :
                if aFlag == 0:
                    print 'GenesisFR ; ZMOVIE_ALTERVISTA -> SPEEDVIDEO'
                
                    result = re.compile('<iframe src=\"(.+?)[\'|\"]').findall(result2)[0]
                    result = client.source(result)
                    
                    video_base64 = re.compile('file: base64_decode\([\"](.+?)[\)]').findall(result)[0]
                    video_base64_split = video_base64.split('\", ')
                    video_base64 = video_base64_split[0]
                    video_keyId = video_base64_split[1]
                    
                    tempLook = 'var ' + video_keyId + ' = '
                    
                    video_keyInt = int(re.compile(tempLook + '(.+?)[;]').findall(result)[0])
                    video_part_one = video_base64[:video_keyInt]
                    video_part_two = video_base64[(video_keyInt + 10):]
                    
                    video_url = video_part_one + video_part_two
                    
                    url = base64.b64decode(video_url)
                    url = url.encode('utf-8')
                    
                    sources.append({'source': '(Fr) - Speedvideo', 'quality': tempHDFlag, 'provider': 'ZmovieAltervista', 'url': url})
                    
                    aFlag = 1
                    
                    
            
            except :
                pass
            
            
            
            try :
                if aFlag == 0:
                    print 'GenesisFR ; ZMOVIE_ALTERVISTA -> OPENLOAD'
                    result = re.compile('<iframe src=\"(.+?)[\'|\"]').findall(result2)[0]
                    result = 'https://openload.co/embed/' + result
                   
                    url = openload.resolve(result)            
                    url = url.encode('utf-8')
                    
                    sources.append({'source': '(Fr) - Openload', 'quality': '1080p', 'provider': 'ZmovieAltervista', 'url': url})
                    
                    aFlag = 1 
            
            except :
                pass

            #<iframe src='http://turbovid.net/embed-kgzqftoakzjj-630x360.html' allowfullscreen='true' FRAMEBORDER=0 MARGINWIDTH=0 MARGINHEIGHT=0 SCROLLING=NO WIDTH=630 HEIGHT=360></iframe></p>		</div>
            #<iframe src="http://embed.nowvideo.sx/embed.php?v=c1dae08a0eb55" height="480" width="600" frameborder="0" scrolling="no"></iframe>

            

        except :
            pass


        
        return sources


    def resolve(self, url):

        try:
            if url.startswith('stack://'): return url

            url = client.request(url, output='geturl')

            if 'requiressl=yes' in url: url = url.replace('http://', 'https://')

            else: url = url.replace('https://', 'http://')

            return url

        except:
            return