# -*- 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
from resources.lib.libraries import cloudflare

class source:    

    def __init__(self):
        print 'GenesisFR ; 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):
        
        print 'GenesisFR ; FULLSTREAM; 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:
                imdb = params['imdb']
            except:
                imdb = None

            title = title.lower()

            title_english = title

            url = 'http://www.imdb.com/title/%s' % imdb
            
            result = cloudflare.source(url, headers={'Accept-Language': 'fr-FR'})
            
            title = client.parseDOM(result, 'title')[0]
            title = re.compile('(.+?) [(]\d{4}[)]').findall(title)[0]
            title = title.lower()
            title = client.replaceHTMLCodes(title)
            title = title.encode('utf-8')

            aFlag = 0
            sources = []
            
        except :
            pass



        try :
            print 'GenesisFR ; FULLSTREAM'
            
            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)
            
            j = 0

            title = title.replace(' ', '%20')
            title_english= title_english.replace(' ', '%20')
            
            url = 'http://full-stream.me/index.php?story={' + title + '}&do=search&subaction=search'
            
            print url
            result = cloudflare.source(url)
            
            
            while j <= len(result) :
    
                try :
                    video_id = re.compile('mov-title[\"]><a href=(.+?)h3>').findall(result)[j]
                    video_title = re.compile('>(.+?)<').findall(video_id)[0]
                    video_id = re.compile('mov-title[\"]><a href=["\"](.+?)["\"]').findall(result)[j]

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

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


                    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 = cloudflare.source(video_id)
            result2 = result
            

        except :
            pass



        try :
            print 'GenesisFR ; FULLSTREAM -> EASYWATCH'
            
            result = re.compile('http://easywatch.tv/embed-(.+?)[\'|\"]').findall(result2)[0]
            result = cloudflare.source('http://easywatch.tv/embed-' + 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': 'FullStream', 'url': url})

            j = 1

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

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

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

                j = j + 1
            

            aFlag = 1

        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)

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

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

            sources.append({'source': '(Fr) - Allvid', 'quality': 'HD', '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', 'quality': 'HD', 'provider': 'FullStream', 'url': url})

                j = j + 1

            aFlag = 1

        except :
            pass
        
        
        
        try :
            print 'GenesisFR ; FULLSTREAM -> EXASHARE'
            result = re.compile('http://exashare.com/embed-(.+?)[\'|\"]').findall(result2)[0]
            result = cloudflare.source('http://exashare.com/embed-' + result)
            
            result = re.compile('src=[\"](.+?)[\'|\"]').findall(result)[0]
            result = cloudflare.source(result)
            
            video_id = re.compile('file: [\"](.+?)[\'|\"]').findall(result)[0]
 
            url = video_id
            url = url.encode('utf-8')
            
            sources.append({'source': '(Fr) - Exashare', 'quality': 'SD', 'provider': 'FullStream', 'url': url})

            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)            
            
            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', 'quality': 'SD', 'provider': 'FullStream', 'url': url})

            aFlag = 1

        except :
            pass
        
        

        try :
            print 'GenesisFR ; FULLSTREAM -> SPEEDVIDEO'
        
            result = re.compile('http://speedvideo.net/embed-(.+?)[\'|\"]').findall(result2)[0]
            result = cloudflare.source('http://speedvideo.net/embed-' + 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': 'SD', 'provider': 'FullStream', 'url': url})
            
            aFlag = 1 
        
        except :
            pass
        
        
        
        try :
            print 'GenesisFR ; FULLSTREAM -> OPENLOAD'
            result = re.compile('https://openload.co/embed/(.+?)[\'|\"]').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': '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