diff --git a/plugin.video.vstream/resources/language/English/strings.po b/plugin.video.vstream/resources/language/English/strings.po index e931514d5d..376c7fa51f 100644 --- a/plugin.video.vstream/resources/language/English/strings.po +++ b/plugin.video.vstream/resources/language/English/strings.po @@ -1257,3 +1257,8 @@ msgstr "Add to existing list" msgctxt "#31212" msgid "Select a list" msgstr "Select a list" + +# for Platinsport +msgctxt "#350000" +msgid "(requires Plexus addon)" +msgstr "" \ No newline at end of file diff --git a/plugin.video.vstream/resources/language/French/strings.po b/plugin.video.vstream/resources/language/French/strings.po index ceae0020fd..fbe00ef289 100644 --- a/plugin.video.vstream/resources/language/French/strings.po +++ b/plugin.video.vstream/resources/language/French/strings.po @@ -1258,3 +1258,8 @@ msgstr "Ajouter à une liste existante" msgctxt "#31212" msgid "Select a list" msgstr "Choisissez une liste" + +# for Platinsport +msgctxt "#350000" +msgid "(requires Plexus addon)" +msgstr "(necessite l addon Plexus)" \ No newline at end of file diff --git a/plugin.video.vstream/resources/sites.json b/plugin.video.vstream/resources/sites.json index 6ff6c07db6..2b63d028e8 100644 --- a/plugin.video.vstream/resources/sites.json +++ b/plugin.video.vstream/resources/sites.json @@ -413,6 +413,11 @@ "label": "Zone Streaming", "active": "True", "url": "https://www.zone-streaming.fr/" + }, + "platinsport": { + "label": "Platinsport", + "active": "True", + "url": "https://www.platinsport.com/" } } } diff --git a/plugin.video.vstream/resources/sites/platinsport.py b/plugin.video.vstream/resources/sites/platinsport.py new file mode 100644 index 0000000000..8f1438c66e --- /dev/null +++ b/plugin.video.vstream/resources/sites/platinsport.py @@ -0,0 +1,284 @@ +# -*- coding: utf-8 -*- +# vStream https://github.com/Kodi-vStream/venom-xbmc-addons +# Ovni-crea +import base64 +import re +import xbmc + +from resources.lib.comaddon import progress, isMatrix, siteManager +from resources.lib.gui.gui import cGui +from resources.lib.gui.hoster import cHosterGui +from resources.lib.handler.inputParameterHandler import cInputParameterHandler +from resources.lib.handler.outputParameterHandler import cOutputParameterHandler +from resources.lib.handler.requestHandler import cRequestHandler +from resources.lib.handler.pluginHandler import cPluginHandler +from resources.lib.packer import cPacker +from resources.lib.parser import cParser +from resources.lib.util import cUtil, Unquote +from resources.lib.comaddon import VSlog, addon + +try: + import json +except: + import simplejson as json + +addons = addon() + +SITE_IDENTIFIER = 'platinsport' +SITE_NAME = 'PlatinSport' + " " + addons.VSlang(350000) +SITE_DESC = 'Evénements sportifs en direct' + +#URL_MAIN = 'https://www.platinsport.com/' +URL_MAIN = siteManager().getUrlMain(SITE_IDENTIFIER) +# URL_MAIN = dans sites.json + +# SPORT_GENRES = (URL_MAIN + '/frx/allupcoming/', 'showMovies') # Liste de diffusion des sports +SPORT_LIVE = (URL_MAIN + '', 'showLive') # streaming Actif +SPORT_SPORTS = (True, 'load') + + +def load(): + oGui = cGui() + + oOutputParameterHandler = cOutputParameterHandler() + + #oOutputParameterHandler.addParameter('siteUrl', SPORT_GENRES[0]) + #oGui.addDir(SITE_IDENTIFIER, SPORT_GENRES[1], 'Les sports (Genres)', 'genres.png', oOutputParameterHandler) + + + oOutputParameterHandler.addParameter('siteUrl', SPORT_LIVE[0] ) + oGui.addDir(SITE_IDENTIFIER, SPORT_LIVE[1], 'Les sports (En direct)', 'news.png', oOutputParameterHandler) + + oGui.setEndOfDirectory() + + +def showLive(): + VSlog(SITE_NAME+ ' - showLive - URL_MAIN'+ URL_MAIN) + oGui = cGui() + oInputParameterHandler = cInputParameterHandler() + sUrl = oInputParameterHandler.getValue('siteUrl') + + VSlog(SITE_NAME + ' - showLive - puling: '+ sUrl) + oRequestHandler = cRequestHandler(sUrl) + sHtmlContent = oRequestHandler.request() + + oParser = cParser() + #sPattern = '([^<]+)<.a>\s*
\s*([^<]+)' + #sPattern = '0: + #streamurl = urllib.quote_plus(streamurl) + #lien = "ActivateWindow(10025,plugin://program.plexus/?url="+streamurl+"&mode=2&name=SportDevils)" + lien = 'XBMC.RunPlugin(plugin://program.plexus/?url='+streamurl+'&mode=2&name='+sMovieTitle2+')' + xbmc.executebuiltin( lien ) + + if streamurl.count('acestream') > 0: + #streamurl = urllib.quote_plus(streamurl) + #lien = "ActivateWindow(10025,plugin://program.plexus/?url="+streamurl+"&mode=1&name=SportDevils)" + lien = 'XBMC.RunPlugin(plugin://program.plexus/?url='+streamurl+'&mode=1&name='+sMovieTitle2+')' + xbmc.executebuiltin( lien ) + + # play_item = xbmcgui.ListItem(path=streamurl,label=sMovieTitle2) + # play_item.setInfo(type="Video", infoLabels={"title": sMovieTitle2,'plot':sMovieTitle2}) + # xbmcplugin.setResolvedUrl(iHandler, True, listitem=play_item) + + + + +def getHosterVar16(url, referer): + oRequestHandler = cRequestHandler(url) + oRequestHandler.addHeaderEntry('Referer', referer) + sHtmlContent = oRequestHandler.request() + + sPattern = 'file:\"([^"]+)\"' + aResult = re.findall(sPattern, sHtmlContent) + if aResult: + return aResult[0] + '|referer=' + url + + sPattern = 'src=\"(.+?)\"' + aResult = re.findall(sPattern, sHtmlContent) + if aResult: + referer = url + url = 'http://var16.ru/' + aResult[0] + return getHosterVar16(url, referer) + + +# Traitement générique +def getHosterIframe(url, referer): + oRequestHandler = cRequestHandler(url) + oRequestHandler.addHeaderEntry('Referer', referer) + sHtmlContent = str(oRequestHandler.request()) + if not sHtmlContent: + return False + + referer = url + + + sPattern = '(\s*eval\s*\(\s*function(?:.|\s)+?{}\)\))' + aResult = re.findall(sPattern, sHtmlContent) + if aResult: + sstr = aResult[0] + if not sstr.endswith(';'): + sstr = sstr + ';' + sHtmlContent = cPacker().unpack(sstr) + + sPattern = '.atob\("(.+?)"' + aResult = re.findall(sPattern, sHtmlContent) + if aResult: + import base64 + code = aResult[0] + try: + if isMatrix(): + code = base64.b64decode(code).decode('ascii') + else: + code = base64.b64decode(code) +# return code + '|User-Agent=' + UA + '&Referer=' + Quote(referer) + return code + '|Referer=' + referer + except Exception as e: + pass + + sPattern = '