#-*- coding: utf-8 -*-
#Vstream https://github.com/Kodi-vStream/venom-xbmc-addons
# Ovni-crea
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
from resources.lib.util import cUtil, Unquote
import re, base64
from resources.lib.packer import cPacker
SITE_IDENTIFIER = 'livetv'
SITE_NAME = 'Live TV'
SITE_DESC = 'Site pour regarder du sport en direct gratuitement'
URL_MAIN = 'http://livetv.sx'
URL_SEARCH = (URL_MAIN + '/frx/fanclubs/?q=', 'showMovies4')
FUNCTION_SEARCH = 'showMovies4'
SPORT_SPORTS = (URL_MAIN + '/frx/allupcoming/', 'showMovies') #Les matchs en directs
#SPORT_SPORTSCLASS = (URL_MAIN + '/frx/calendar/411/', 'showClass')# Les classements
NETS_GENRES = (True, 'showGenres') #Les clubs de football
def load():
oGui = cGui()
oOutputParameterHandler = cOutputParameterHandler()
oOutputParameterHandler.addParameter('siteUrl', 'http://venom/')
oGui.addDir(SITE_IDENTIFIER, 'showSearch', 'Rechercher l\'équipe', 'search.png', oOutputParameterHandler)
oOutputParameterHandler = cOutputParameterHandler()
oOutputParameterHandler.addParameter('siteUrl', SPORT_SPORTS[0])
oGui.addDir(SITE_IDENTIFIER, SPORT_SPORTS[1], 'Les matchs en direct', 'news.png', oOutputParameterHandler)
oOutputParameterHandler = cOutputParameterHandler()
oOutputParameterHandler.addParameter('siteUrl', NETS_GENRES[0])
oGui.addDir(SITE_IDENTIFIER, NETS_GENRES[1], 'Les clubs de foot (urlresolver requis)', 'genres.png', oOutputParameterHandler)
oGui.setEndOfDirectory()
def showSearch():
oGui = cGui()
sSearchText = oGui.showKeyBoard()
if (sSearchText != False):
sUrl = URL_SEARCH[0] + sSearchText
showMovies4(sUrl) #showMovies4 car c'est pour afficher le club recherché'
oGui.setEndOfDirectory()
return
def showGenres(): #affiche les clubs de foot
oGui = cGui()
liste = []
liste.append( ['PSG', URL_MAIN + '/frx/team/1_4_216_psg/fanclub/'] )
liste.append( ['Marseille (OM)', URL_MAIN + '/frx/team/1_310_383_marseille/fanclub/'] )
liste.append( ['Barcelone', URL_MAIN + '/frx/team/1_3_227_barcelona/fanclub/'] )
liste.append( ['Real-Madrid', URL_MAIN + '/frx/team/1_163_317_real_madrid/fanclub/'] )
liste.append( ['Marchester Utd', URL_MAIN + '/frx/team/1_350_421_manchester_utd/fanclub/'] )
liste.append( ['Chelsea', URL_MAIN + '/frx/team/1_351_397_chelsea/fanclub/'] )
liste.append( ['Bayern Munich', URL_MAIN + '/frx/team/1_5_227_bayern/fanclub/'] )
liste.append( ['Juventus', URL_MAIN + '/frx/team/1_244_365_juventus/fanclub/'] )
liste.append( ['Arsenal', URL_MAIN + '/frx/team/1_353_406_arsenal/fanclub/'] )
liste.append( ['Liverpool', URL_MAIN + '/frx/team/1_352_412_liverpool/fanclub/'] )
liste.append( ['Manchester City', URL_MAIN + '/frx/team/1_363_446_manchester_city/fanclub/'] )
liste.append( ['France', URL_MAIN + '/frx/team/1_77_258_france/fanclub/'] )
liste.append( ['Dortmund', URL_MAIN + '/frx/team/1_136_296_dortmund/fanclub/'] )
liste.append( ['Monaco', URL_MAIN + '/frx/team/1_319_383_monaco/fanclub/'] )
liste.append( ['Portugal', URL_MAIN + '/frx/team/1_79_269_portugal/fanclub/'] )
liste.append( ['Argentine', URL_MAIN + '/frx/team/1_62_253_argentina/fanclub/'] )
liste.append( ['Belgique', URL_MAIN + '/frx/team/1_83_270_belgium/fanclub/'] )
for sTitle, sUrl in liste:
oOutputParameterHandler = cOutputParameterHandler()
oOutputParameterHandler.addParameter('siteUrl', sUrl)
oGui.addDir(SITE_IDENTIFIER, 'showMenu', sTitle, 'genres.png', oOutputParameterHandler)
#showMenu car c'est pour afficher les infos du club seul resultat est fonctionnel pour l'instant''
oGui.setEndOfDirectory()
def showMovies(sSearch = ''):#affiche les catégories qui ont des lives'
oGui = cGui()
if sSearch:
sUrl = sSearch
else:
oInputParameterHandler = cInputParameterHandler()
sUrl = oInputParameterHandler.getValue('siteUrl')
oRequestHandler = cRequestHandler(sUrl)
sHtmlContent = oRequestHandler.request()
sPattern = '([^"]+).+?\s*\s*
\s*([^"]+)'
oParser = cParser()
aResult = oParser.parse(sHtmlContent, sPattern)
#VSlog(str(aResult))
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
sUrl2 = aEntry[0]
sUrl2 = URL_MAIN + sUrl2
sTitle = aEntry[1]
try:
sTitle = sTitle.decode("iso-8859-1", 'ignore')
sTitle = cUtil().unescape(sTitle)
sTitle = sTitle.encode("utf-8", 'ignore')
except:
pass
oOutputParameterHandler = cOutputParameterHandler()
oOutputParameterHandler.addParameter('siteUrl2', sUrl2)
oOutputParameterHandler.addParameter('sMovieTitle', sTitle)
oGui.addDir(SITE_IDENTIFIER, 'showMovies2', sTitle, 'sport.png', oOutputParameterHandler)
progress_.VSclose(progress_)
if not sSearch:
oGui.setEndOfDirectory()
def showMovies2(): #affiche les matchs en direct depuis la section showMovie
oGui = cGui()
oInputParameterHandler = cInputParameterHandler()
sUrl2 = oInputParameterHandler.getValue('siteUrl2')
oRequestHandler = cRequestHandler(sUrl2)
sHtmlContent = oRequestHandler.request()
sPattern = '([^>]+)\s*(?:
| )\s*([^>]+)\s* \s*([^>]+)'
oParser = cParser()
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
sTitle2 = aEntry[1].replace(' ', ' ')
sUrl3 = aEntry[0]
sThumb = ''
#sLang = aEntry[3]
sQual = aEntry[3]
sHoster = aEntry[2]
try:
sTitle2 = sTitle2.decode("iso-8859-1", 'ignore')
sHoster = sHoster.decode("iso-8859-1", 'ignore')
sQual = sQual.decode("iso-8859-1", 'ignore')
except:
pass
sTitle2 = cUtil().unescape(sTitle2)
sTitle2 = sTitle2.encode("utf-8", 'ignore')
sHoster = cUtil().unescape(sHoster)
sHoster = sHoster.encode("utf-8", 'ignore')
sQual = cUtil().unescape(sQual)
sQual = sQual.encode("utf-8", 'ignore')
try:
sTitle2 = str(sTitle2, encoding="utf8", errors='ignore')
sHoster = str(sHoster, encoding="utf8", errors='ignore')
sQual = str(sQual, encoding="utf8", errors='ignore')
except:
pass
sTitle2 = ('%s (%s) [COLOR yellow]%s[/COLOR]') % (sTitle2, sHoster, sQual)
sUrl3 = URL_MAIN + sUrl3
#VSlog(sUrl3)
oOutputParameterHandler = cOutputParameterHandler()
oOutputParameterHandler.addParameter('siteUrl3', sUrl3)
oOutputParameterHandler.addParameter('sMovieTitle2', sTitle2)
oOutputParameterHandler.addParameter('sThumb', sThumb)
oGui.addDir(SITE_IDENTIFIER, 'showMovies3', sTitle2, 'sport.png', oOutputParameterHandler)
progress_.VSclose(progress_)
oGui.setEndOfDirectory()
def showMovies3(): #affiche les videos disponible du live
oGui = cGui()
oInputParameterHandler = cInputParameterHandler()
sUrl3 = oInputParameterHandler.getValue('siteUrl3')
oRequestHandler = cRequestHandler(sUrl3)
sHtmlContent = oRequestHandler.request()
sMovieTitle2 = oInputParameterHandler.getValue('sMovieTitle2')
sPattern = 'id=\'(.+?)\''
aResult2 = re.findall(sPattern3, sHtmlContent3)
if aResult2:
sHosterUrl3 = aResult2[0]
sHosterUrl3 = "http://hdcast.pw/stream_jw2.php?id=" + sHosterUrl3
#VSlog(str(sHosterUrl3))
oRequestHandler = cRequestHandler(sHosterUrl3)
sHtmlContent4 = oRequestHandler.request()
sPattern4 = 'curl = "([^"]+)";'
aResult3 = re.findall(sPattern4, sHtmlContent4)
if aResult3:
sHosterUrl = aResult3[0]
sHosterUrl = base64.b64decode(sHosterUrl)
#VSlog(sHosterUrl)
if 'stream365' in url:#Terminé
oRequestHandler = cRequestHandler(url)
sHtmlContent2 = oRequestHandler.request()
sPattern2 = 'var a[ 0-9]+="(.+?)"'
aResult = re.findall(sPattern2, sHtmlContent2)
if aResult:
gameId = int(aResult[2]) + int(aResult[0]) - int(aResult[1]) - int(aResult[2])
sHosterUrl = 'http://91.192.80.210/edge0/xrecord/' + str(gameId) + '/prog_index.m3u8'
if 'youtube' in url:#Je sais pas
sPattern2 = 'youtube.com/embed/(.+?)[?]autoplay=1'
aResult = re.findall(sPattern2, url)
if aResult:
video_id = aResult[0]
#VSlog(video_id)
#url1 = url.replace('/embed/', '/watch?v=').replace('?autoplay=1', '')
url2 = 'https://youtube.com/get_video_info?video_id=' + video_id + '&sts=17488&hl=fr'
oRequestHandler = cRequestHandler(url2)
oRequestHandler.addHeaderEntry('User-Agent', UA)
sHtmlContent3 = Unquote(oRequestHandler.request())
sPattern3 = 'hlsManifestUrl":"(.+?)"'
aResult = re.findall(sPattern3, sHtmlContent3)
if aResult:
sHosterUrl = aResult[0] + '|User-Agent=' + UA + '&Host=manifest.googlevideo.com'
if 'streamup.me' in url:#Terminé
oRequestHandler = cRequestHandler(url)
sHtmlContent2 = oRequestHandler.request()
sPattern2 = ' |