# -*- 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

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

class source:    

    def __init__(self):
        print 'GenesisFR TV ; INIT'
        self.base_link = 'http://full-stream.me'
        self.search_link = 'http://full-stream.me/index.php?story=%s&do=search&subaction=search'

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

    def get_sources(self, url, hosthdDict, hostDict, locDict):
        try :
            tempVOSTFR = None
        
            print 'GenesisFR TV; TMDB'

            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'))


            url = 'http://full-stream.me/'

            cookie = client.request(url, output='cookie')
            post = 'action=login&login_name=ilovefrenchmovies&login_password=ilovefrenchmovies&Submit=&login=submit'
            cookie = client.request(url, post=post, output='cookie')
                
            result = client.request(url, cookie=cookie)
            
            
        except :
            pass



        try :
            print 'GenesisFR TV; FULLSTREAM'

            video_season = ' - Saison ' + season
            
            try : url = 'http://full-stream.me/index.php?story=%s&do=search&subaction=search' % urllib.quote_plus(titleF + ' ' + video_season)
            except : url = 'http://full-stream.me/index.php?story=%s&do=search&subaction=search' % urllib.quote_plus(titleE + ' ' + video_season)
            
            print 'Full-Stream = %s' % url
            result = cloudflare.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 = cloudflare.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
        
        

        try :
            print 'GenesisFR ; FULLSTREAM -> ALLVID'
            result = re.compile('http://allvid.ch/embed-(.+?)[\'|\"]').findall(result2)[0]
            result = cloudflare.source('http://allvid.ch/embed-' + result)
            
            tempVOSTFR = ''
            try:
                tempVOSTFR = re.compile('VOSTFR').findall(result2)[0]
                print '@@@@@@@@@@@@@@@ ALLVID    VOSTFR = %s' % (tempVOSTFR)
            except :
                tempVOSTFR = 'VF'

            video_id = re.compile('file:[\"](.+?)[\'|\"]').findall(result)[0]
            print '@@@@@@@@ ALLVID   video_id %s' % video_id 

            url = video_id
            url = url.encode('utf-8')

            sources.append({'source': '(Fr) - Allvid', 'quality': 'SD', 'provider': 'FullStream', 'url': url})

            j = 1

            while j <= len(result) - 1 :
                video_id = re.compile('file:[\"](.+?)[\'|\"]').findall(result)[j]
    
                url = video_id
                url = url.encode('utf-8')

                sources.append({'source': '(Fr) - Allvid - ' + tempVOSTFR, 'quality': 'SD', 'provider': 'FullStream', 'url': url})

                j = j + 1

            aFlag = 1 

        except :
            pass
        
        
        
        try :
            print 'GenesisFR ; FULLSTREAM -> YOUWATCH'
            result = re.compile('http://youwatch.org/embed-(.+?)[\'|\"]').findall(result2)[0]
            result = cloudflare.source('http://youwatch.org/embed-' + result)
            
            tempVOSTFR = ''
            try:
                tempVOSTFR = re.compile('VOSTFR').findall(result2)[0]
                print '@@@@@@@@@@@@@@@ ALLVID    VOSTFR = %s' % (tempVOSTFR)
            except :
                tempVOSTFR = 'VF'
                
            
            
            video_id = re.compile('src=[\"](.+?)[\'|\"]').findall(result)[0]

            result = cloudflare.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 - ' + tempVOSTFR, 'quality': 'SD', 'provider': 'FullStream', 'url': url})

            aFlag = 1

        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