astrXbian/.install/.kodi/addons/plugin.video.vstream/resources/hosters/viki.py

142 lines
4.1 KiB
Python

# -*- coding: utf-8 -*-
# vStream https://github.com/Kodi-vStream/venom-xbmc-addons
# ==>vikki
from resources.hosters.hoster import iHoster
from resources.lib.parser import cParser
# from resources.lib.comaddon import VSlog
import xbmcgui
class cHoster(iHoster):
def __init__(self):
self.__sDisplayName = 'Viki'
self.__sFileName = self.__sDisplayName
self.__sHD = ''
def getDisplayName(self):
return self.__sDisplayName
def setDisplayName(self, sDisplayName):
self.__sDisplayName = sDisplayName + ' [COLOR skyblue]' + self.__sDisplayName + '[/COLOR]'
def setFileName(self, sFileName):
self.__sFileName = sFileName
def getFileName(self):
return self.__sFileName
def getPluginIdentifier(self):
return 'viki'
def setHD(self, sHD):
self.__sHD = ''
def getHD(self):
return self.__sHD
def isDownloadable(self):
return True
def setUrl(self, sUrl):
self.__sUrl = str(sUrl)
def checkUrl(self, sUrl):
return True
def __getUrl(self, media_id):
return
def getMediaLink(self):
return self.__getMediaLinkForGuest()
def __getMediaLinkForGuest(self, api_call=None):
sUrl = self.__sUrl
# srtsubs_path = xbmc.translatePath('special://temp/vikir.English.srt')
# Methode 1 on recoit une liste sUrl=[ urlstream,sub,q1,q2...urlq1,urlq2
# if false sub=french
bSelectSub=True
# https://manifest-viki.viki.io/v1/1159945v/limelight/domain_4/mpd/normal/viki/high/mpd_mob/ww/na/manifest.mpd?
bsupportedMdp = False # manifest.mpd
url = []
qual = []
pathsub = []
namesub = ['French', 'English']
oParser = cParser()
sPattern = ".'([^']*)"
aResult = oParser.parse(sUrl, sPattern)
if (aResult[0] == True):
sub1 = aResult[1][0]
sub2 = aResult[1][1]
pathsub.append(sub1)
pathsub.append(sub2)
offset = 2
numberQ = (len(aResult[1])-offset)/2
for i in range(offset, offset + numberQ):
if 'mpd' in aResult[1][i]:
if bsupportedMdp:
qual.append(aResult[1][i] + ' !')
continue
qual.append(aResult[1][i])
for i in range(offset + numberQ, len(aResult[1])):
if 'manifest.mpd' in aResult[1][i]:
if bsupportedMdp:
url.append(aResult[1][i])
continue
url.append(aResult[1][i])
sub = sub1
if bSelectSub:
pathsub.append('')
namesub.append('None')
sub = self.mydialog().VSselect(namesub, pathsub, 'Viki Select subtile :')
api_call = self.mydialog().VSselect(qual, url, 'Viki Select quality :')
# api_call = self.VSselectsub(qual, url)
if api_call:
if sub:
return True,api_call, sub
else:
return True, api_call
else: # user canceled !# file not found
return False, False
# Methode 2 on recoit une chaine sUrl=urlstream + ';' urlsub
if ';' in sUrl:
sUrl, sub = sUrl.split(';')
api_call = sUrl
if api_call:
return True, api_call, sub
else:
# VSlog('hoster vikki no find sub : use ";" to split url and sub')
api_call = sUrl
if api_call:
return True, api_call
# api_call = "https://cloudfront.viki.net/1133753v/dash/1133753v_dash_high_480p_2d3e72_1809180448_track1_dashinit.mp4"
# jamais atteint
return False, False
class mydialog(xbmcgui.Dialog):
def VSselect(self, list_alias, list_toreturn, sTitle):
if len(list_toreturn) == 0:
return ''
if len(list_toreturn) == 1:
return list_toreturn[0]
ret = self.select(sTitle, list_alias)
if ret > -1:
return list_toreturn[ret]
return ''