Advertisement
Guest User

Untitled

a guest
Dec 17th, 2018
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.47 KB | None | 0 0
  1. #-*- coding: utf-8 -*-
  2. #Vstream https://github.com/Kodi-vStream/venom-xbmc-addons
  3. #
  4. from resources.lib.handler.requestHandler import cRequestHandler
  5. from resources.lib.parser import cParser
  6. from resources.hosters.hoster import iHoster
  7. from resources.lib.comaddon import dialog, VSlog, xbmc
  8. from resources.lib.handler.premiumHandler import cPremiumHandler
  9.  
  10. from resources.lib.config import GestionCookie
  11.  
  12. import urllib, urllib2
  13. import re
  14.  
  15. UA = 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0'
  16.  
  17. class cHoster(iHoster):
  18.  
  19.     def __init__(self):
  20.         self.__sDisplayName = '1Fichier'
  21.         self.__sFileName = self.__sDisplayName
  22.         self.__sHD = ''
  23.         self.oPremiumHandler = False
  24.  
  25.     def getDisplayName(self):
  26.         return  self.__sDisplayName
  27.  
  28.     def setDisplayName(self, sDisplayName):
  29.         self.__sDisplayName = sDisplayName + ' [COLOR violet]' + self.__sDisplayName + '[/COLOR]'
  30.  
  31.     def setFileName(self, sFileName):
  32.         self.__sFileName = sFileName
  33.  
  34.     def getFileName(self):
  35.         return self.__sFileName
  36.  
  37.     def getPluginIdentifier(self):
  38.         return 'onefichier'
  39.  
  40.     def setHD(self, sHD):
  41.         self.__sHD = ''
  42.  
  43.     def getHD(self):
  44.         return self.__sHD
  45.  
  46.     def isDownloadable(self):
  47.         return True
  48.  
  49.     def isJDownloaderable(self):
  50.         return True
  51.  
  52.     def __getIdFromUrl(self, sUrl):
  53.         #http://kzu0y3.1fichier.com/
  54.         #https://1fichier.com/?s6gdceia9y
  55.         id = sUrl.replace('https://', '')
  56.         id = id.replace('http://', '')
  57.         id = id.replace('1fichier.com/?', '')
  58.         id = id.replace('.1fichier.com', '')
  59.         id = id.replace('/', '')
  60.  
  61.         return id
  62.  
  63.     def setUrl(self, sUrl):
  64.         self.__sUrl = str(sUrl)
  65.  
  66.     def checkUrl(self, sUrl):
  67.         return True
  68.  
  69.     def __getUrl(self, media_id):
  70.         return
  71.  
  72.     def getMediaLink(self):
  73.  
  74.         self.oPremiumHandler = cPremiumHandler(self.getPluginIdentifier())
  75.         #print self.oPremiumHandler.isPremiumModeAvailable()
  76.  
  77.         import sys
  78.         if ('site=cDownload&function' not in sys.argv[2]) and not (self.oPremiumHandler.isPremiumModeAvailable()):
  79.             oDialog = dialog().VSok('Pas de streaming sans premium\nPour voir le film passer par l\'option "DL et Visualiser" du menu contextuel.')
  80.             return False, False
  81.  
  82.         if (self.oPremiumHandler.isPremiumModeAvailable()):
  83.             return self.__getMediaLinkByPremiumUser()
  84.  
  85.         return self.__getMediaLinkForGuest()
  86.  
  87.  
  88.     def __getMediaLinkByPremiumUser(self):
  89.         api_call = False
  90.  
  91.         #if not self.oPremiumHandler.Authentificate():
  92.         if not self.Authentication_test():
  93.             return False, False
  94.  
  95.         url = 'https://1fichier.com/?' + self.__getIdFromUrl(self.__sUrl)
  96.         #La partie ci-dessous permet d'utiliser l'option "Forcer l'affichage du menu pour les téléchargements" permettant notamment de choisir depuis l'interface web de télécharger ou d'ajouter un fichier.
  97.         #Pour cela, on va ajouter le paramètre e=1 (cf. https://1fichier.com/hlp.html#dev ) à la requête permettant d'obtenir le lien direct
  98.         url2 = url + '&e=1'
  99.        
  100.         sHtmlContent = self.oPremiumHandler.GetHtml(url2)
  101.        
  102.         if "L'accès à ce fichier est protégé par un mot de passe" in sHtmlContent:
  103.             VSlog("Fichier protege par MDP")
  104.            
  105.             cookie = self.oPremiumHandler.AddCookies().replace('Cookie=', '', 1)
  106.             data = {'pass':'annuaire-telechargement.com'}
  107.             #Seul le Cookie est nécessaire, néanmoins autant rendre les headers cohérents
  108.             headers = {
  109.                 'User-Agent': UA,
  110.                 'Host': '1fichier.com',
  111.                 'Referer': url ,
  112.                 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  113.                 'Accept-Language': 'fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3',
  114.                 'Cookie': cookie,
  115.                 'Content-Length': str(len(urllib.urlencode(data))),
  116.                 'Content-Type': 'application/x-www-form-urlencoded',
  117.                 'Connection' :  'keep-alive'
  118.             }
  119.             request = urllib2.Request(url, urllib.urlencode(data), headers)
  120.             response = urllib2.urlopen(request)
  121.  
  122.             url = response.geturl()
  123.             response.close()
  124.            
  125.             #tempo de 5s
  126.             xbmc.sleep(5*1000)
  127.            
  128.         else:
  129.             VSlog("Fichier non protege par MDP")
  130.             url = 'https://1fichier.com/?' + self.__getIdFromUrl(self.__sUrl)
  131.        
  132.         VSlog( url )
  133.        
  134.         #Pour tester premiere partie
  135.         #return False,False
  136.  
  137.         api_call = url + '|' + self.oPremiumHandler.AddCookies() + '&User-Agent=' + UA
  138.  
  139.         #VSlog( api_call )
  140.  
  141.         if (api_call):
  142.             return True, api_call
  143.  
  144.         return False, False
  145.  
  146.     def __getMediaLinkForGuest(self):
  147.         import random
  148.         api_call = False
  149.         url = 'https://1fichier.com/?' + self.__getIdFromUrl(self.__sUrl)
  150.  
  151.         headers = {'User-Agent': UA ,
  152.                    'Host': '1fichier.com',
  153.                    'Referer': self.__sUrl ,
  154.                    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  155.                    'Accept-Language': 'fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3'
  156.                    #'Content-Type': 'application/x-www-form-urlencoded'
  157.                    }
  158.  
  159.         adcode = random.uniform(000.000000000, 999.999999999)
  160.  
  161.         Mode = ''
  162.         #Mode = {'dl_no_ssl' : 'on' , 'dlinline' : 'on'}
  163.         Mode = {'dl_no_ssl' : 'on' ,'adzone' : adcode}
  164.         postdata = urllib.urlencode( Mode )
  165.  
  166.         req = urllib2.Request(url, postdata, headers)
  167.  
  168.         try:
  169.             #import ssl
  170.             #context = ssl._create_unverified_context()
  171.             #response = urllib2.urlopen(req,context=context)
  172.             response = urllib2.urlopen(req)
  173.         except URLError, e:
  174.             print e.read()
  175.             print e.reason
  176.  
  177.         sHtmlContent = response.read()
  178.         response.close()
  179.  
  180.         #fh = open('c:\\test.txt', "w")
  181.         #fh.write(sHtmlContent)
  182.         #fh.close()
  183.  
  184.         api_call = self.GetMedialinkDL(sHtmlContent)
  185.  
  186.         if (api_call):
  187.             return True, api_call
  188.  
  189.         return False, False
  190.  
  191.     def GetMedialinkDL(self, sHtmlContent):
  192.  
  193.         oParser = cParser()
  194.         api_call = False
  195.  
  196.         sPattern = 'Vous devez attendre encore [0-9]+ minutes'
  197.         aResult = oParser.parse(sHtmlContent, sPattern)
  198.         if (aResult[0] == True):
  199.             dialog().VSinfo('Erreur - Limitation %s' % aResult[1][0])
  200.             return False
  201.  
  202.         sPattern = '<a href="([^<>"]+?)"  style="float:none;margin:auto;font-weight:bold;padding: 10px;margin: 10px;font-size:\+1\.6em;border:2px solid red" class="ok btn-general btn-orange">'
  203.         aResult = oParser.parse(sHtmlContent, sPattern)
  204.  
  205.         #print aResult
  206.  
  207.         if (aResult[0] == True):
  208.             #xbmc.sleep(1*1000)
  209.             #VSlog(  aResult[1][0] )
  210.             api_call = aResult[1][0] + '|User-Agent=' + UA# + '&Referer=' + self.__sUrl
  211.             return api_call
  212.  
  213.         return False
  214.  
  215.     def Authentication_test(self):
  216.         if (GestionCookie().Readcookie('onefichier') != ''):
  217.             return True
  218.         else:
  219.             Connection = self.oPremiumHandler.Authentificate()
  220.             if (Connection == False):
  221.                 return False
  222.             else:
  223.                 return True
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement