Skip to content

Commit

Permalink
Version 2.7.3
Browse files Browse the repository at this point in the history
Version 2.7.3
  • Loading branch information
sizanic authored Nov 26, 2023
2 parents c97d22c + 82f8187 commit 009820f
Show file tree
Hide file tree
Showing 14 changed files with 279 additions and 217 deletions.
2 changes: 1 addition & 1 deletion addons.xml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addons>
<addon id="plugin.video.vstream" name="vStream" version="2.7.2" provider-name="venom-xbmc-addons">
<addon id="plugin.video.vstream" name="vStream" version="2.7.3" provider-name="venom-xbmc-addons">
<requires>

<trycatch>
Expand Down
2 changes: 1 addition & 1 deletion addons.xml.md5
Original file line number Diff line number Diff line change
@@ -1 +1 @@
d571d86457fca5621bcf0fb7fd614fd3
428fe7749c70c893128c315b04c48b44
2 changes: 1 addition & 1 deletion plugin.video.vstream/addon.xml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="plugin.video.vstream" name="vStream" version="2.7.2" provider-name="venom-xbmc-addons">
<addon id="plugin.video.vstream" name="vStream" version="2.7.3" provider-name="venom-xbmc-addons">
<requires>

<trycatch>
Expand Down
6 changes: 6 additions & 0 deletions plugin.video.vstream/resources/hosters/oneupload.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,12 @@ def _getMediaLinkForGuest(self):
if aResult[0] is True:
api_call = aResult[1][0]

if not api_call:
sPattern = 'jwplayer\("vplayer"\)\.setup\({ *sources: \[\{file:"([^"]+)'
aResult = oParser.parse(sHtmlContent, sPattern)
if aResult[0] is True:
api_call = aResult[1][0]

if api_call:
return True, api_call #+ '|User-Agent=' + UA + '&Referer=' + self._url + '&Origin=https://vidfast.co'

Expand Down
12 changes: 6 additions & 6 deletions plugin.video.vstream/resources/lib/gui/gui.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,8 @@ def addNewDir(self, Type, sId, sFunction, sLabel, sIcon, sThumbnail='', sDesc=''
# dir ou link => CONTENT par défaut = files
if Type != 'dir' and Type != 'link':
cGui.CONTENT = Type
if sCat is not None:
oGuiElement.setCat(sCat)
oGuiElement.setSiteName(sId)
oGuiElement.setFunction(sFunction)
oGuiElement.setTitle(sLabel)
Expand All @@ -51,9 +53,6 @@ def addNewDir(self, Type, sId, sFunction, sLabel, sIcon, sThumbnail='', sDesc=''

oGuiElement.setDescription(sDesc)

if sCat is not None:
oGuiElement.setCat(sCat)

# Pour addLink on recupere le sCat et sMeta precedent.
if Type == 'link':
oInputParameterHandler = cInputParameterHandler()
Expand Down Expand Up @@ -397,9 +396,9 @@ def _createListItem(self, oGuiElement, oListItem=None):
oListItem = listitem(itemTitle)

if data.get('cast'):
credits = json.loads(data['cast'])
casts = json.loads(data['cast'])
data['cast'] = []
for i in credits:
for i in casts:
if isNexus():
data['cast'].append(xbmc.Actor(i['name'], i['character'], i['order'], i.get('thumbnail', "")))
else:
Expand All @@ -425,7 +424,8 @@ def _createListItem(self, oGuiElement, oListItem=None):
videoInfoTag.setMpaa(data.get('mpaa', ""))
videoInfoTag.setDuration(int(data.get('duration', 0)))
videoInfoTag.setPlaycount(int(data.get('playcount', 0)))
videoInfoTag.setCountries(data.get('country', [""]))
# inutilisé ? et fragile
# videoInfoTag.setCountries(data.get('country', ['']))
videoInfoTag.setTrailer(data.get('trailer', ""))
videoInfoTag.setTagLine(data.get('tagline', ""))
videoInfoTag.setStudios(list(data.get('studio', '').split("/")))
Expand Down
64 changes: 34 additions & 30 deletions plugin.video.vstream/resources/lib/gui/guiElement.py
Original file line number Diff line number Diff line change
Expand Up @@ -238,40 +238,44 @@ def TraiteTitre(self, sTitle):
sDecoColor = self.addons.getSetting('deco_color')
sTitle = re.sub('([\(|\[](?!\/*COLOR)[^\)\(\]\[]+?[\]|\)])', '[COLOR ' + sDecoColor + ']\\1[/COLOR]', sTitle)

# Recherche saisons et episodes
# Recherche saisons et episodes si séries ou animes
sa = ep = ''
m = re.search('(|S|saison)(\s?|\.)(\d+)(\s?|\.)(E|Ep|x|\wpisode)(\s?|\.)(\d+)', sTitle, re.UNICODE)
if m:
sa = m.group(3)
ep = m.group(7)
if ep=='264' or ep=='265': # echape les codecs X264 et x265
sa = ep = ''
else:
sTitle = sTitle.replace(m.group(0), '')

else: # Juste l'épisode
m = re.search('(^|\s|\.)(E|Ep|\wpisode)(\s?|\.)(\d+)', sTitle, re.UNICODE)

if self.__sCat in (2, 3, 4, 8, 9):
m = re.search('(|S|saison)(\s?|\.)(\d+)(\s?|\.)(E|Ep|x|\wpisode)(\s?|\.)(\d+)', sTitle, re.UNICODE)
if m:
sTitle = sTitle.replace(m.group(0), '')
ep = m.group(4)
else: # juste la saison
m = re.search('( S|saison)(\s?|\.)(\d+)', sTitle, re.UNICODE)
sa = m.group(3)
ep = m.group(7)
if ep=='264' or ep=='265': # echape les codecs X264 et x265
sa = ep = ''
else:
sTitle = sTitle.replace(m.group(0), '')

else: # Juste l'épisode
m = re.search('(^|\s|\.)(E|Ep|\wpisode)(\s?|\.)(\d+)', sTitle, re.UNICODE)
if m:
sTitle = sTitle.replace(m.group(0), '')
sa = m.group(3)

# enleve les crochets et les parentheses si elles sont vides
if sa or ep:
sTitle = sTitle.replace('()', '').replace('[]', '').replace('- -', '-')
# vire espace et - a la fin
sTitle = re.sub('[- –_\.\[]+$', '', sTitle)

if sa:
self.__Season = sa
self.addItemValues('Season', self.__Season)
if ep:
self.__Episode = ep
self.addItemValues('Episode', self.__Episode)
ep = m.group(4)
else: # juste la saison
m = re.search('( S|saison)(\s?|\.)(\d+)', sTitle, re.UNICODE)
if m:
sTitle = sTitle.replace(m.group(0), '')
sa = m.group(3)

# enleve les crochets et les parentheses si elles sont vides
if sa or ep:
sTitle = sTitle.replace('()', '').replace('[]', '').replace('- -', '-')
# vire espace et - a la fin
sTitle = re.sub('[- –_\.\[]+$', '', sTitle)

if sa:
self.__Season = sa
self.addItemValues('Season', self.__Season)
if ep:
self.__Episode = ep
self.addItemValues('Episode', self.__Episode)
if not self.__Season:
self.__Season = 1 # forcer pour les séries sans saison

# on repasse en utf-8
if not isMatrix():
Expand Down
2 changes: 1 addition & 1 deletion plugin.video.vstream/resources/lib/home.py
Original file line number Diff line number Diff line change
Expand Up @@ -401,7 +401,7 @@ def showUsers(self):
oGui.addDir('alldebrid', 'load', 'AllDebrid', 'sites/alldebrid.png', oOutputParameterHandler)

oOutputParameterHandler.addParameter('siteUrl', 'http://')
oGui.addDir('sitedarkibox', 'load', 'darkiBox', 'sites/sitedarkibox.png', oOutputParameterHandler)
oGui.addDir('sitedarkibox', 'load', 'DarkiBox', 'sites/sitedarkibox.png', oOutputParameterHandler)

oOutputParameterHandler.addParameter('siteUrl', 'http://')
oGui.addDir('themoviedb_org', 'showMyTmdb', 'TMDB', 'tmdb.png', oOutputParameterHandler)
Expand Down
12 changes: 6 additions & 6 deletions plugin.video.vstream/resources/lib/trakt.py
Original file line number Diff line number Diff line change
Expand Up @@ -717,7 +717,11 @@ def getLocalizedTitle(self, item, what):
oRequestHandler.addHeaderEntry('Authorization', 'Bearer %s' % self.ADDON.getSetting('bstoken'))
sHtmlContent = oRequestHandler.request(jsonDecode=True)

title = next((title for title in sHtmlContent if title['language'].lower() == 'fr'), item)['title']
for titleSearch in sHtmlContent:
if titleSearch['language'].lower() == 'fr':
title = titleSearch['title']
if titleSearch['country'].lower() == 'fr':
break

if title is None:
return item['title']
Expand Down Expand Up @@ -1042,9 +1046,6 @@ def getTmdbInfo(self, sTmdb, oGuiElement):
return

def getTmdbID(self, sTitle, sType):

oInputParameterHandler = cInputParameterHandler()

from resources.lib.tmdb import cTMDb
grab = cTMDb()

Expand All @@ -1053,9 +1054,8 @@ def getTmdbID(self, sTitle, sType):
elif sType == 'movies':
sType = 'movie'

meta = 0
year = ''
# on cherche l'annee
year = ''
r = re.search('(\([0-9]{4}\))', sTitle)
if r:
year = str(r.group(0))
Expand Down
49 changes: 33 additions & 16 deletions plugin.video.vstream/resources/sites/buzzmonclick_com.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ def showMovies(sSearch=''):
# mise en page
sTitle = sTitle.replace('Permalien pour', '').replace('&prime;', '\'')
sTitle = re.sub('(?:,)* (?:Replay |Video )*du ([0-9]+ [a-zA-z]+ [0-9]+)', ' (\\1)', sTitle)
sTitle = re.sub(', (?:Replay|Video)$', '', sTitle)
sTitle = re.sub(', (?:Replay|Video|Vidéo|vidéo)', '', sTitle)
sUrl = aEntry[1]
sThumb = aEntry[2]

Expand All @@ -131,7 +131,7 @@ def showMovies(sSearch=''):


def __checkForNextPage(sHtmlContent):
sPattern = 'class="nextpostslink" rel="next" href="([^"]+)"'
sPattern = 'class="nextpostslink" rel="next".+?href="([^"]+)"'
oParser = cParser()
aResult = oParser.parse(sHtmlContent, sPattern)
if aResult[0]:
Expand All @@ -153,9 +153,14 @@ def showLinks():
sHtmlContent = oRequestHandler.request()

oParser = cParser()
sPattern = 'wp-block-button.+?(?:href=|src=)"([^"]+)".+?>(?:([^<]+)|)'
sHtmlContent = oParser.abParse(sHtmlContent, '#555555;', 'section-box')
sPattern = "(?:href=|src=)\"([^\"]+)\".+?value=\'([^\']+)\'"
aResult = oParser.parse(sHtmlContent, sPattern)

if not aResult[0]:
sPattern = 'wp-block-button.+?(?:href=|src=)"([^"]+)".+?>(?:([^<]+)|)'
aResult = oParser.parse(sHtmlContent, sPattern)

if aResult[0]:
oOutputParameterHandler = cOutputParameterHandler()
for aEntry in aResult[1]:
Expand All @@ -178,20 +183,32 @@ def showLinks():

def showHosters():
oGui = cGui()
oParser = cParser()
oInputParameterHandler = cInputParameterHandler()
sUrl = oInputParameterHandler.getValue('siteUrl')
sMovieTitle = oInputParameterHandler.getValue('sMovieTitle')
sThumb = oInputParameterHandler.getValue('sThumb')
oHoster = None

if 'forum-tv' in sUrl:
if 'generated' in sUrl:
oRequestHandler = cRequestHandler(sUrl)
sHtmlContent = oRequestHandler.request()
sPattern = 'window.location.href = "([^"]+)"'
aResult = oParser.parse(sHtmlContent, sPattern)
if aResult[0]:
sHosterUrl = aResult[1][0]
oHoster = cHosterGui().checkHoster(sHosterUrl)

elif 'dood.forum-tv.org' in sUrl:
showDoodHosters(sMovieTitle, sUrl)

elif 'forum-tv' in sUrl:
dialog().VSinfo('Décodage en cours', "Patientez", 5)
s = requests.Session()

response = s.get(sUrl, headers={'User-Agent': UA})
sHtmlContent = str(response.content)
cookie_string = "; ".join([str(x) + "=" + str(y) for x, y in s.cookies.items()])

oParser = cParser()
sPattern = '<input type="hidden".+?value="([^"]+)"'
aResult = oParser.parse(sHtmlContent, sPattern)

Expand All @@ -216,7 +233,7 @@ def showHosters():
aResult = oParser.parse(sHtmlContent, sPattern)
if aResult[0]:
sHosterUrl = aResult[1][0]
oHoster = False
oHoster = None

if 'replay.forum-tv.org' in sHosterUrl:
oRequestHandler = cRequestHandler(sHosterUrl)
Expand All @@ -233,17 +250,14 @@ def showHosters():
else:
oHoster = cHosterGui().checkHoster(sHosterUrl)

if oHoster:
oHoster.setDisplayName(sMovieTitle)
oHoster.setFileName(sMovieTitle)
cHosterGui().showHoster(oGui, oHoster, sHosterUrl, sThumb)
else:
sHosterUrl = sUrl
oHoster = cHosterGui().checkHoster(sHosterUrl)
if oHoster:
oHoster.setDisplayName(sMovieTitle)
oHoster.setFileName(sMovieTitle)
cHosterGui().showHoster(oGui, oHoster, sHosterUrl, sThumb)

if oHoster:
oHoster.setDisplayName(sMovieTitle)
oHoster.setFileName(sMovieTitle)
cHosterGui().showHoster(oGui, oHoster, sHosterUrl, sThumb)

oGui.setEndOfDirectory()

Expand All @@ -260,7 +274,10 @@ def showDoodHosters(sMovieTitle, sUrl):
for aEntry in aResult[1]:
sUrl = aEntry[0]
sHost = aEntry[1]

oHoster = cHosterGui().checkHoster(sHost)
if not oHoster:
continue

sTitle = ('%s [COLOR coral]%s[/COLOR]') % (sMovieTitle, sHost)

oOutputParameterHandler.addParameter('siteUrl', sUrl)
Expand Down
20 changes: 19 additions & 1 deletion plugin.video.vstream/resources/sites/free_telechargement_org.py
Original file line number Diff line number Diff line change
Expand Up @@ -473,7 +473,7 @@ def showHosters():
oRequestHandler = cRequestHandler(sUrl)
sHtmlContent = oRequestHandler.request()
# parfois présent, plus sure que de réduire la regex
sHtmlContent = re.sub('</font>', '', sHtmlContent)
sHtmlContentBck = sHtmlContent = re.sub('</font>', '', sHtmlContent)

# recuperation nom de la release
if 'elease :' in sHtmlContent:
Expand Down Expand Up @@ -558,6 +558,24 @@ def showHosters():
oOutputParameterHandler.addParameter('sDesc', sDesc)
oGui.addLink(SITE_IDENTIFIER, 'Display_protected_link', sTitle, sThumb, sDesc, oOutputParameterHandler)

else:
sHtmlContent = oParser.abParse(sHtmlContentBck, '<div id="link">', 'onclick')
sHtmlContent = sHtmlContent.replace('&nbsp;', '')
sPattern = '<b>([^<]+)</b> *</br>.+?href="([^"]+)"'
aResult = oParser.parse(sHtmlContent, sPattern)
if aResult[0]:
oOutputParameterHandler = cOutputParameterHandler()
for aEntry in aResult[1]:
sUrl = aEntry[1]
if len(sUrl) <10:
continue
sTitle = '%s - [%s]' % (sMovieTitle, aEntry[0])
oOutputParameterHandler.addParameter('siteUrl', sUrl)
oOutputParameterHandler.addParameter('sMovieTitle', sTitle)
oOutputParameterHandler.addParameter('sThumb', sThumb)
oOutputParameterHandler.addParameter('sDesc', sDesc)
oGui.addLink(SITE_IDENTIFIER, 'Display_protected_link', sTitle, sThumb, sDesc, oOutputParameterHandler)

oGui.setEndOfDirectory()


Expand Down
26 changes: 13 additions & 13 deletions plugin.video.vstream/resources/sites/french_stream_lol.py
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ def showMovies(sSearch=''):
sSearchText = sSearchText.replace(URL_SEARCH_SERIES[0], '')
sSearchText = oUtil.CleanName(sSearchText)

# sUrl = URL_SEARCH[0] # ne sert à rien
# sUrl = URL_SEARCH[0] # ne sert à rien
sSearch = sSearch.replace(' ', '+').replace('%20', '+')

if key_search_movies in sSearch:
Expand Down Expand Up @@ -334,30 +334,30 @@ def showEpisodes():

if bFind and aEntry[0]:
sFirst_Url = aEntry[2]
if not 'http' in sFirst_Url :
if 'http' not in sFirst_Url:
continue
sHoster = re.findall('https:\/\/([^.]+)', sFirst_Url)

sHoster = re.findall('https:\/\/([^.]+)', sFirst_Url)
sHoster = sHoster[0]
oHoster = cHosterGui().checkHoster(sHoster)
if not oHoster:
continue
#sRel_Episode = aEntry[2]
#if sRel_Episode == "ABCDE":
#sEpisode = 'Episode 2'
#else:
#sEpisode = aEntry[3]
continue

# sRel_Episode = aEntry[2]
# if sRel_Episode == "ABCDE":
# sEpisode = 'Episode 2'
# else:
# sEpisode = aEntry[3]

sTitle = sMovieTitle + ' ' + sEpisode
sDisplayTitle = ' %s (%s) [COLOR skyblue]%s[/COLOR]' % (sTitle, sLang, sHoster )
sDisplayTitle = ' %s (%s) [COLOR coral]%s[/COLOR]' % (sTitle, sLang.upper(), sHoster.capitalize())

oOutputParameterHandler.addParameter('siteUrl', sUrl)
oOutputParameterHandler.addParameter('sThumb', sThumb)
oOutputParameterHandler.addParameter('sMovieTitle', sTitle)
oOutputParameterHandler.addParameter('sDesc', sDesc)
oOutputParameterHandler.addParameter('sLang', sLang)
#oOutputParameterHandler.addParameter('sRel_Episode', sRel_Episode)
# oOutputParameterHandler.addParameter('sRel_Episode', sRel_Episode)
oOutputParameterHandler.addParameter('sFirst_Url', sFirst_Url)

oGui.addEpisode(SITE_IDENTIFIER, 'showSerieLinks', sDisplayTitle, '', sThumb, sDesc, oOutputParameterHandler)
Expand Down
Loading

0 comments on commit 009820f

Please sign in to comment.