forked from axiom-team/astrXbian
555 lines
20 KiB
Python
555 lines
20 KiB
Python
# -*- coding: utf-8 -*-
|
|
# vStream https://github.com/Kodi-vStream/venom-xbmc-addons
|
|
# source 26 https://dpstream.ch/ creation 18/10/2020
|
|
# update 22/11/2020
|
|
|
|
import re
|
|
|
|
from resources.lib.gui.hoster import cHosterGui
|
|
from resources.lib.gui.gui import cGui
|
|
from resources.lib.handler.inputParameterHandler import cInputParameterHandler
|
|
from resources.lib.handler.outputParameterHandler import cOutputParameterHandler
|
|
from resources.lib.handler.requestHandler import cRequestHandler
|
|
from resources.lib.parser import cParser
|
|
from resources.lib.comaddon import progress #,VSlog
|
|
|
|
SITE_IDENTIFIER = 'dpstream'
|
|
SITE_NAME = 'Dpstream'
|
|
SITE_DESC = 'Series et Films en VF ou VOSTFR '
|
|
|
|
URL_MAIN = 'https://dpstream.ch/'
|
|
|
|
MOVIE_NEWS = (URL_MAIN + 'film-en-streaming', 'showMovies')
|
|
MOVIE_GENRES = (True, 'showGenres')
|
|
MOVIE_VIEWS = (URL_MAIN + 'film-box-office', 'showMovies')
|
|
|
|
SERIE_NEWS = (URL_MAIN + 'series-en-streming', 'showMovies')
|
|
|
|
key_search_movies = '#searchsomemovies'
|
|
key_search_series = '#searchsomeseries'
|
|
URL_SEARCH = ('', 'showMovies')
|
|
URL_SEARCH_MOVIES = (URL_SEARCH[0] + key_search_movies, 'showMovies')
|
|
URL_SEARCH_SERIES = (URL_SEARCH[0] + key_search_series, 'showMovies')
|
|
|
|
# recherche utilisé quand on n'utilise pas le globale
|
|
MY_SEARCH_MOVIES = ( key_search_movies , 'MyshowSearchMovie')
|
|
MY_SEARCH_SERIES = ( key_search_series, 'MyshowSearchSerie')
|
|
|
|
FUNCTION_SEARCH = 'showMovies'
|
|
|
|
# Menu GLOBALE HOME
|
|
MOVIE_MOVIE = (True, 'showMoviesSource')
|
|
SERIE_SERIES = (True, 'showTvshowSource')
|
|
|
|
def load():
|
|
oGui = cGui()
|
|
|
|
oOutputParameterHandler = cOutputParameterHandler()
|
|
oOutputParameterHandler.addParameter('siteUrl', 'http://venom/')
|
|
oGui.addDir(SITE_IDENTIFIER, 'showSearch', 'Recherche Films & Series', 'search.png', oOutputParameterHandler)
|
|
|
|
oOutputParameterHandler = cOutputParameterHandler()
|
|
oOutputParameterHandler.addParameter('siteUrl', MY_SEARCH_MOVIES[0] )
|
|
oGui.addDir(SITE_IDENTIFIER, MY_SEARCH_MOVIES[1], 'Recherche Films', 'search.png', oOutputParameterHandler)
|
|
|
|
oOutputParameterHandler = cOutputParameterHandler()
|
|
oOutputParameterHandler.addParameter('siteUrl', MOVIE_NEWS[0])
|
|
oGui.addDir(SITE_IDENTIFIER, MOVIE_NEWS[1], 'Films (Derniers ajouts)', 'news.png', oOutputParameterHandler)
|
|
|
|
oOutputParameterHandler = cOutputParameterHandler()
|
|
oOutputParameterHandler.addParameter('siteUrl', MOVIE_VIEWS[0])
|
|
oGui.addDir(SITE_IDENTIFIER, MOVIE_VIEWS[1], 'Films (les plus vus)', 'views.png', oOutputParameterHandler)
|
|
|
|
oOutputParameterHandler = cOutputParameterHandler()
|
|
oOutputParameterHandler.addParameter('siteUrl', MOVIE_GENRES[0])
|
|
oGui.addDir(SITE_IDENTIFIER, MOVIE_GENRES[1], 'Films (Genres)', 'genres.png', oOutputParameterHandler)
|
|
|
|
oOutputParameterHandler = cOutputParameterHandler()
|
|
oOutputParameterHandler.addParameter('siteUrl', MY_SEARCH_SERIES[0] )
|
|
oGui.addDir(SITE_IDENTIFIER, MY_SEARCH_SERIES[1], 'Recherche Series ', 'search.png', oOutputParameterHandler)
|
|
|
|
oOutputParameterHandler = cOutputParameterHandler()
|
|
oOutputParameterHandler.addParameter('siteUrl', SERIE_NEWS[0])
|
|
oGui.addDir(SITE_IDENTIFIER, SERIE_NEWS[1], 'Series (Derniers ajouts)', 'news.png', oOutputParameterHandler)
|
|
|
|
oGui.setEndOfDirectory()
|
|
|
|
|
|
def showMoviesSource():
|
|
oGui = cGui()
|
|
|
|
oOutputParameterHandler = cOutputParameterHandler()
|
|
oOutputParameterHandler.addParameter('siteUrl', MY_SEARCH_MOVIES[0] )
|
|
oGui.addDir(SITE_IDENTIFIER, MY_SEARCH_MOVIES[1], 'Recherche Films ', 'search.png', oOutputParameterHandler)
|
|
|
|
oOutputParameterHandler = cOutputParameterHandler()
|
|
oOutputParameterHandler.addParameter('siteUrl', MOVIE_NEWS[0])
|
|
oGui.addDir(SITE_IDENTIFIER, MOVIE_NEWS[1], 'Films (Derniers ajouts)', 'news.png', oOutputParameterHandler)
|
|
|
|
oOutputParameterHandler = cOutputParameterHandler()
|
|
oOutputParameterHandler.addParameter('siteUrl', MOVIE_VIEWS[0])
|
|
oGui.addDir(SITE_IDENTIFIER, MOVIE_VIEWS[1], 'Films (les plus vus)', 'views.png', oOutputParameterHandler)
|
|
|
|
oOutputParameterHandler = cOutputParameterHandler()
|
|
oOutputParameterHandler.addParameter('siteUrl', MOVIE_GENRES[0])
|
|
oGui.addDir(SITE_IDENTIFIER, MOVIE_GENRES[1], 'Films (Genres)', 'genres.png', oOutputParameterHandler)
|
|
|
|
oGui.setEndOfDirectory()
|
|
|
|
|
|
def showTvshowSource():
|
|
oGui = cGui()
|
|
|
|
oOutputParameterHandler = cOutputParameterHandler()
|
|
oOutputParameterHandler.addParameter('siteUrl', MY_SEARCH_SERIES[0] )
|
|
oGui.addDir(SITE_IDENTIFIER, MY_SEARCH_SERIES[1], 'Recherche Series ', 'search.png', oOutputParameterHandler)
|
|
|
|
oOutputParameterHandler = cOutputParameterHandler()
|
|
oOutputParameterHandler.addParameter('siteUrl', SERIE_NEWS[0])
|
|
oGui.addDir(SITE_IDENTIFIER, SERIE_NEWS[1], 'Series (Derniers ajouts)', 'news.png', oOutputParameterHandler)
|
|
|
|
oGui.setEndOfDirectory()
|
|
|
|
|
|
def MyshowSearchSerie():
|
|
oGui = cGui()
|
|
sSearchText = oGui.showKeyBoard()
|
|
if (sSearchText != False):
|
|
sUrl = MY_SEARCH_SERIES[0] + sSearchText
|
|
showMovies(sUrl)
|
|
oGui.setEndOfDirectory()
|
|
return
|
|
|
|
|
|
def MyshowSearchMovie():
|
|
oGui = cGui()
|
|
sSearchText = oGui.showKeyBoard()
|
|
if (sSearchText != False):
|
|
sUrl = MY_SEARCH_MOVIES[0] + sSearchText
|
|
showMovies(sUrl)
|
|
oGui.setEndOfDirectory()
|
|
return
|
|
|
|
|
|
def showSearch():
|
|
oGui = cGui()
|
|
|
|
sSearchText = oGui.showKeyBoard()
|
|
if (sSearchText != False):
|
|
sUrl = sSearchText
|
|
showMovies(sUrl)
|
|
oGui.setEndOfDirectory()
|
|
return
|
|
|
|
|
|
def showGenres():
|
|
oGui = cGui()
|
|
|
|
liste = []
|
|
|
|
# recherche science-fiction-fantastique
|
|
listegenre = ['action ', 'action-adventure ', 'animation', 'aventure'
|
|
, 'comedie', 'crime', 'documentaire', 'drame ', 'familial'
|
|
, 'fantastique', 'guerre' , 'histoire', 'horreur', 'kids ', 'musique'
|
|
, 'mystere ', 'news', 'reality', 'romance' , 'science-fiction'
|
|
, 'soap' , 'science-fiction-fantastique'
|
|
, 'talk', 'telefilm', 'thriller' , 'politics', 'western']
|
|
|
|
url1g = URL_MAIN + 'categories/'
|
|
|
|
for igenre in listegenre:
|
|
liste.append([igenre.capitalize(), url1g + igenre])
|
|
|
|
for sTitle, sUrl in liste:
|
|
oOutputParameterHandler = cOutputParameterHandler()
|
|
oOutputParameterHandler.addParameter('siteUrl', sUrl)
|
|
oGui.addDir(SITE_IDENTIFIER, 'showMovies', sTitle, 'genres.png', oOutputParameterHandler)
|
|
|
|
oGui.setEndOfDirectory()
|
|
|
|
|
|
def showMovies(sSearch=''):
|
|
oGui = cGui()
|
|
oParser = cParser()
|
|
bSearchMovie = False
|
|
bSearchSerie = False
|
|
if sSearch:
|
|
sSearch = sSearch.replace(' ', '+').replace('%20', '+')
|
|
if key_search_movies in sSearch:
|
|
sSearch = sSearch.replace( key_search_movies , '')
|
|
bSearchMovie = True
|
|
if key_search_series in sSearch:
|
|
sSearch = sSearch.replace( key_search_series , '')
|
|
bSearchSerie = True
|
|
|
|
bvalid, stoken, scookie = GetTokens()
|
|
if bvalid:
|
|
pdata = '_token=' + stoken + '&search=' + sSearch
|
|
sUrl = URL_MAIN + 'search'
|
|
oRequestHandler = cRequestHandler(sUrl )
|
|
oRequestHandler.setRequestType(1)
|
|
oRequestHandler.addHeaderEntry('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:70.0) Gecko/20100101 Firefox/70.0')
|
|
oRequestHandler.addHeaderEntry('Referer', URL_MAIN)
|
|
oRequestHandler.addHeaderEntry('Cookie', scookie)
|
|
oRequestHandler.addParametersLine(pdata)
|
|
sHtmlContent = oRequestHandler.request()
|
|
else:
|
|
oGui.addText(SITE_IDENTIFIER)
|
|
return
|
|
|
|
else:
|
|
oInputParameterHandler = cInputParameterHandler()
|
|
sUrl = oInputParameterHandler.getValue('siteUrl')
|
|
oRequestHandler = cRequestHandler(sUrl)
|
|
sHtmlContent = oRequestHandler.request()
|
|
|
|
# ref thumb title year
|
|
sPattern = 'class="item mb-4">.+?ref="([^"]*).+?src=([^\s]*).+?alt="([^"]*).+?muted">([^<]*).*?type">([^<]*)'
|
|
|
|
aResult = oParser.parse(sHtmlContent, sPattern)
|
|
|
|
if (aResult[0] == False):
|
|
oGui.addText(SITE_IDENTIFIER)
|
|
|
|
if (aResult[0] == True):
|
|
total = len(aResult[1])
|
|
progress_ = progress().VScreate(SITE_NAME)
|
|
|
|
for aEntry in aResult[1]:
|
|
progress_.VSupdate(progress_, total)
|
|
if progress_.iscanceled():
|
|
break
|
|
|
|
sDesc = ''
|
|
sUrl2 = aEntry[0]
|
|
sThumb = aEntry[1]
|
|
sTitle = aEntry[2]
|
|
sYear = aEntry[3]
|
|
Stype = aEntry[4].lower()
|
|
|
|
if bSearchMovie:
|
|
if Stype == 'serie':
|
|
continue
|
|
if bSearchSerie:
|
|
if Stype == 'film':
|
|
continue
|
|
|
|
sDisplayTitle = sTitle + '(' + sYear +')'
|
|
|
|
if 'http' not in sUrl2: # search
|
|
sUrl2 = URL_MAIN[:-1] + sUrl2
|
|
|
|
if sSearch and not bSearchMovie and not bSearchSerie:
|
|
sDisplayTitle = sDisplayTitle + ' [' + aEntry[4] + ']'
|
|
|
|
oOutputParameterHandler = cOutputParameterHandler()
|
|
oOutputParameterHandler.addParameter('siteUrl', sUrl2)
|
|
oOutputParameterHandler.addParameter('sMovieTitle', sTitle)
|
|
oOutputParameterHandler.addParameter('sThumb', sThumb)
|
|
oOutputParameterHandler.addParameter('sDesc', sDesc)
|
|
oOutputParameterHandler.addParameter('sYear', sYear)
|
|
|
|
if sSearch:
|
|
oGui.addLink(SITE_IDENTIFIER, 'showSelectType', sDisplayTitle, sThumb, sDesc, oOutputParameterHandler)
|
|
|
|
elif SERIE_NEWS[0] not in sUrl:
|
|
oGui.addMovie(SITE_IDENTIFIER, 'showLink', sDisplayTitle, '', sThumb, sDesc, oOutputParameterHandler)
|
|
else:
|
|
oGui.addTV(SITE_IDENTIFIER, 'showSaisons', sDisplayTitle, '', sThumb, sDesc, oOutputParameterHandler)
|
|
|
|
progress_.VSclose(progress_)
|
|
|
|
if not sSearch:
|
|
bNextPage,urlNextpage,pagination = __checkForNextPage(sHtmlContent)
|
|
if (bNextPage != False):
|
|
|
|
oOutputParameterHandler = cOutputParameterHandler()
|
|
oOutputParameterHandler.addParameter('siteUrl', urlNextpage)
|
|
oGui.addNext(SITE_IDENTIFIER, 'showMovies', '[COLOR teal] ' + pagination + ' >>>[/COLOR]', oOutputParameterHandler)
|
|
|
|
oGui.setEndOfDirectory()
|
|
|
|
|
|
def __checkForNextPage(sHtmlContent):
|
|
oParser = cParser()
|
|
urlNextpage = ''
|
|
snumberNext = ''
|
|
pagination = ''
|
|
|
|
sPattern = '<.li><li class="page-item"><a class="page-link.*?href="([^"]+)">(?!\d).+?footer'
|
|
aResult = oParser.parse(sHtmlContent, sPattern)
|
|
if (aResult[0] == True):
|
|
urlNextpage = aResult[1][0]
|
|
try:
|
|
snumberNext = re.search('page.([0-9]+)', urlNextpage).group(1)
|
|
except:
|
|
pass
|
|
if snumberNext:
|
|
pagination = 'Page ' + str(snumberNext)
|
|
if urlNextpage:
|
|
return True, urlNextpage, pagination
|
|
|
|
return False, 'none', 'none'
|
|
|
|
|
|
def showSelectType():
|
|
oGui = cGui()
|
|
|
|
oInputParameterHandler = cInputParameterHandler()
|
|
sUrl = oInputParameterHandler.getValue('siteUrl')
|
|
sMovieTitle = oInputParameterHandler.getValue('sMovieTitle')
|
|
sThumb = oInputParameterHandler.getValue('sThumb')
|
|
sDesc = oInputParameterHandler.getValue('sDesc')
|
|
sYear = oInputParameterHandler.getValue('sYear')
|
|
|
|
oRequest = cRequestHandler(sUrl)
|
|
sHtmlContent = oRequest.request()
|
|
|
|
sDesc = ''
|
|
oParser = cParser()
|
|
sPattern = 'mb-3 d-block">([^<]+)'
|
|
aResult = oParser.parse(sHtmlContent, sPattern)
|
|
sDesc = 'no description'
|
|
|
|
oOutputParameterHandler = cOutputParameterHandler()
|
|
oOutputParameterHandler.addParameter('siteUrl', sUrl)
|
|
oOutputParameterHandler.addParameter('sMovieTitle', sMovieTitle)
|
|
oOutputParameterHandler.addParameter('sThumb', sThumb)
|
|
oOutputParameterHandler.addParameter('sDesc', sDesc)
|
|
oOutputParameterHandler.addParameter('sYear', sYear)
|
|
sDisplayTitle = sMovieTitle + '(' + str(sYear) +')'
|
|
|
|
# (a modifier car ce n'est plus la ces )
|
|
# dans le cas d'une recherche on ne sait pas si c'est un film ou une serie
|
|
#class="description">.*?<br>([^<]+)
|
|
|
|
if (aResult[0] == True):
|
|
sDesc = ('[I][COLOR grey]%s[/COLOR][/I] %s') % ('Synopsis :', aResult[1][0])
|
|
|
|
if '<meta name=description content="serie' in sHtmlContent :
|
|
oGui.addTV(SITE_IDENTIFIER, 'showSaisons', sDisplayTitle, '', sThumb, sDesc, oOutputParameterHandler)
|
|
else:#VideoObject.+?"description":"([^"]+)
|
|
oGui.addMovie(SITE_IDENTIFIER, 'showLink', sDisplayTitle, '', sThumb, sDesc, oOutputParameterHandler)
|
|
|
|
oGui.setEndOfDirectory()
|
|
|
|
|
|
def showSaisons():
|
|
oGui = cGui()
|
|
oParser = cParser()
|
|
oInputParameterHandler = cInputParameterHandler()
|
|
sUrl = oInputParameterHandler.getValue('siteUrl')
|
|
sThumb = oInputParameterHandler.getValue('sThumb')
|
|
sMovieTitle = oInputParameterHandler.getValue('sMovieTitle')
|
|
sYear = oInputParameterHandler.getValue('sYear')
|
|
sDesc = oInputParameterHandler.getValue('sDesc')
|
|
|
|
oRequestHandler = cRequestHandler(sUrl)
|
|
sHtmlContent = oRequestHandler.request()
|
|
|
|
sPattern = 'mb-3 d-block">([^<]+)'
|
|
aResult = oParser.parse(sHtmlContent, sPattern)
|
|
sDesc = 'no description'
|
|
if (aResult[0] == True):
|
|
sDesc = ('[I][COLOR grey]%s[/COLOR][/I] %s') % ('Synopsis :', aResult[1][0])
|
|
|
|
sPattern = 'class="seasonbar.+?href="([^"]+).+?arrow-right.+?>(\d+)'
|
|
aResult = oParser.parse(sHtmlContent, sPattern)
|
|
|
|
if (aResult[0] == False):
|
|
oGui.addText(SITE_IDENTIFIER)
|
|
|
|
if (aResult[0] == True):
|
|
for aEntry in reversed(aResult[1]):
|
|
sUrl2 = aEntry[0]
|
|
saison = aEntry[1]
|
|
|
|
sTitle = ("%s %s") % (sMovieTitle, ' Saison ' + saison)
|
|
|
|
oOutputParameterHandler = cOutputParameterHandler()
|
|
oOutputParameterHandler.addParameter('siteUrl', sUrl2)
|
|
oOutputParameterHandler.addParameter('sThumb', sThumb)
|
|
oOutputParameterHandler.addParameter('sDesc', sDesc)
|
|
oOutputParameterHandler.addParameter('sMovieTitle', sMovieTitle)
|
|
oOutputParameterHandler.addParameter('sYear', sYear)
|
|
oGui.addEpisode(SITE_IDENTIFIER, 'ShowEpisodes', sTitle, '', sThumb, sDesc, oOutputParameterHandler)
|
|
|
|
oGui.setEndOfDirectory()
|
|
|
|
|
|
def ShowEpisodes():
|
|
oGui = cGui()
|
|
oParser = cParser()
|
|
oInputParameterHandler = cInputParameterHandler()
|
|
sUrl = oInputParameterHandler.getValue('siteUrl')
|
|
sMovieTitle = oInputParameterHandler.getValue('sMovieTitle')
|
|
sThumb = oInputParameterHandler.getValue('sThumb')
|
|
sDesc = oInputParameterHandler.getValue('sDesc')
|
|
sYear = oInputParameterHandler.getValue('sYear')
|
|
oRequestHandler = cRequestHandler(sUrl)
|
|
sHtmlContent = oRequestHandler.request()
|
|
|
|
isaison = ''
|
|
sPattern = 'saison.(.+?)'
|
|
aResult = oParser.parse(sUrl , sPattern)
|
|
if (aResult[0] == True):
|
|
isaison = ' Saison ' + aResult[1][0]
|
|
|
|
sPattern = 'class="seasonbar".+?href="([^"]+).+?rrow-right"><.span>([^<]+)'
|
|
aResult = oParser.parse(sHtmlContent, sPattern)
|
|
|
|
if (aResult[0] == False):
|
|
oGui.addText(SITE_IDENTIFIER)
|
|
|
|
if (aResult[0] == True):
|
|
for aEntry in aResult[1]:
|
|
sUrl2 = aEntry[0]
|
|
nepisode = aEntry[1]
|
|
|
|
sTitle = sMovieTitle + isaison + ' episode' + nepisode
|
|
|
|
oOutputParameterHandler = cOutputParameterHandler()
|
|
oOutputParameterHandler.addParameter('siteUrl', sUrl2)
|
|
oOutputParameterHandler.addParameter('sThumb', sThumb)
|
|
oOutputParameterHandler.addParameter('sMovieTitle', sMovieTitle)
|
|
oOutputParameterHandler.addParameter('sYear', sYear)
|
|
oOutputParameterHandler.addParameter('sDesc', sDesc)
|
|
oGui.addEpisode(SITE_IDENTIFIER, 'showLink', sTitle, '', sThumb, sDesc, oOutputParameterHandler)
|
|
|
|
oGui.setEndOfDirectory()
|
|
|
|
|
|
def showLink():
|
|
oGui = cGui()
|
|
|
|
oParser = cParser()
|
|
oInputParameterHandler = cInputParameterHandler()
|
|
sUrl = oInputParameterHandler.getValue('siteUrl')
|
|
sMovieTitle = oInputParameterHandler.getValue('sMovieTitle')
|
|
sThumb = oInputParameterHandler.getValue('sThumb')
|
|
sDesc = oInputParameterHandler.getValue('sDesc')
|
|
sYear = oInputParameterHandler.getValue('sYear')
|
|
|
|
oRequest = cRequestHandler(sUrl)
|
|
sHtmlContent = oRequest.request()
|
|
|
|
# dans le cas d'une erreur si serie (pas de controle année et genre)
|
|
if '<meta name=description content="serie' in sHtmlContent and 'episode' not in sUrl:
|
|
sDisplayTitle = sMovieTitle + '(' + str(sYear) +')'
|
|
|
|
oOutputParameterHandler = cOutputParameterHandler()
|
|
oOutputParameterHandler.addParameter('siteUrl', sUrl)
|
|
oOutputParameterHandler.addParameter('sMovieTitle', sMovieTitle)
|
|
oOutputParameterHandler.addParameter('sThumb', sThumb)
|
|
oOutputParameterHandler.addParameter('sDesc', sDesc)
|
|
oOutputParameterHandler.addParameter('sYear', sYear)
|
|
oGui.addTV(SITE_IDENTIFIER, 'showSaisons', sDisplayTitle, '', sThumb, sDesc, oOutputParameterHandler)
|
|
|
|
oGui.setEndOfDirectory()
|
|
return
|
|
|
|
sPattern = 'mb-3 d-block">([^<]+)'
|
|
aResult = oParser.parse(sHtmlContent, sPattern)
|
|
sDesc = 'no description'
|
|
if (aResult[0] == True):
|
|
sDesc = ('[I][COLOR grey]%s[/COLOR][/I] %s') % ('Synopsis :', aResult[1][0])
|
|
|
|
sPattern = 'data-url="([^"]+).+?class="p-.+?alt="([^"]+).+?alt="([^"]+)' #p-1 movie p-2 serie
|
|
aResult = oParser.parse(sHtmlContent, sPattern)
|
|
if (aResult[0] == False):
|
|
oGui.addText(SITE_IDENTIFIER)
|
|
|
|
if (aResult[0] == True):
|
|
for aEntry in aResult[1]:
|
|
skey = aEntry[0]
|
|
sHost = aEntry[1]
|
|
vSlang = aEntry[2].upper()
|
|
sUrl2 = URL_MAIN + 'll/captcha?hash=' + skey
|
|
sTitle = sMovieTitle
|
|
|
|
if sYear:
|
|
sTitle = sTitle + '(' + sYear + ')'
|
|
|
|
sTitle = ('%s %s [COLOR coral]%s[/COLOR]') % (sTitle,'[' + vSlang + ']', sHost )
|
|
|
|
oOutputParameterHandler = cOutputParameterHandler()
|
|
oOutputParameterHandler.addParameter('siteUrl', sUrl2)
|
|
oOutputParameterHandler.addParameter('referer', sUrl)
|
|
oOutputParameterHandler.addParameter('sMovieTitle', sMovieTitle)
|
|
oOutputParameterHandler.addParameter('sThumb', sThumb)
|
|
oGui.addLink(SITE_IDENTIFIER, 'showHosters', sTitle, sThumb, sDesc, oOutputParameterHandler)
|
|
|
|
oGui.setEndOfDirectory()
|
|
|
|
|
|
def showHosters():
|
|
|
|
oGui = cGui()
|
|
oInputParameterHandler = cInputParameterHandler()
|
|
sUrl = oInputParameterHandler.getValue('siteUrl')
|
|
sMovieTitle = oInputParameterHandler.getValue('sMovieTitle')
|
|
sThumb = oInputParameterHandler.getValue('sThumb')
|
|
|
|
oRequestHandler = cRequestHandler(sUrl)
|
|
sHtmlContent = oRequestHandler.request()
|
|
|
|
sPattern = '<iframe.*?src=([^\s]+)'
|
|
aResult = re.findall(sPattern, sHtmlContent)
|
|
if aResult:
|
|
sHosterUrl = aResult[0]
|
|
|
|
oHoster = cHosterGui().checkHoster(sHosterUrl)
|
|
if (oHoster != False):
|
|
oHoster.setDisplayName(sMovieTitle)
|
|
oHoster.setFileName(sMovieTitle)
|
|
cHosterGui().showHoster(oGui, oHoster, sHosterUrl, sThumb)
|
|
|
|
oGui.setEndOfDirectory()
|
|
|
|
|
|
def GetTokens():
|
|
oParser = cParser()
|
|
oRequestHandler = cRequestHandler(URL_MAIN )
|
|
sHtmlContent = oRequestHandler.request()
|
|
sHeader = oRequestHandler.getResponseHeader()
|
|
|
|
cook = ''
|
|
token = ''
|
|
XSRF_TOKEN = ''
|
|
site_session = ''
|
|
|
|
sHeader = oRequestHandler.getResponseHeader()
|
|
sPattern ='name=_token.+?value="([^"]+).+?<div class="typeahead'
|
|
aResult = oParser.parse(sHtmlContent, sPattern)
|
|
|
|
if (aResult[0] == False):
|
|
return False, 'none', 'none'
|
|
|
|
if (aResult[0] == True):
|
|
token = aResult[1][0]
|
|
|
|
sPattern = 'XSRF-TOKEN=([^;]+).+?dpstream_session=([^;]+)'
|
|
aResult = oParser.parse(sHeader, sPattern)
|
|
|
|
if (aResult[0] == False):
|
|
return False, 'none', 'none'
|
|
|
|
if (aResult[0] == True):
|
|
XSRF_TOKEN = aResult[1][0][0]
|
|
site_session = aResult[1][0][1]
|
|
|
|
cook = 'XSRF-TOKEN=' + XSRF_TOKEN + '; dpstream_session=' + site_session + ';'
|
|
return True, token, cook
|
|
|
|
|
|
def cleanDesc(sdesc):
|
|
list_comment = [
|
|
'Voir film '
|
|
, 'en streaming'
|
|
, 'Voir Serie '
|
|
]
|
|
for s in list_comment:
|
|
sdesc = sdesc.replace(s, '')
|
|
|
|
return sdesc
|