def addToPlaylist(self): oGui = cGui() oInputParameterHandler = cInputParameterHandler() sHosterIdentifier = oInputParameterHandler.getValue( 'sHosterIdentifier') sMediaUrl = oInputParameterHandler.getValue('sMediaUrl') bGetRedirectUrl = oInputParameterHandler.getValue('bGetRedirectUrl') sFileName = oInputParameterHandler.getValue('sFileName') if bGetRedirectUrl == 'True': sMediaUrl = self.__getRedirectUrl(sMediaUrl) VSlog('Hoster - playlist ' + sMediaUrl) oHoster = self.getHoster(sHosterIdentifier) oHoster.setFileName(sFileName) oHoster.setUrl(sMediaUrl) aLink = oHoster.getMediaLink() if aLink[0]: oGuiElement = cGuiElement() oGuiElement.setSiteName(self.SITE_NAME) oGuiElement.setMediaUrl(aLink[1]) oGuiElement.setTitle(oHoster.getFileName()) from Plugins.Extensions.IPTVPlayer.tsiplayer.addons.resources.lib.player import cPlayer oPlayer = cPlayer() oPlayer.addItemToPlaylist(oGuiElement) dialog().VSinfo(str(oHoster.getFileName()), 'Playlist') return oGui.setEndOfDirectory()
def play__(): # Lancer les liens oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl').replace('P_L_U_S', '+') sTitle = oInputParameterHandler.getValue('sMovieTitle') sThumbnail = oInputParameterHandler.getValue('sThumbnail') # Special url with tag if '[' in sUrl and ']' in sUrl: sUrl = GetRealUrl(sUrl) if 'f4mTester' in sUrl: xbmc.executebuiltin('XBMC.RunPlugin(' + sUrl + ')') return else: oGuiElement = cGuiElement() oGuiElement.setSiteName(SITE_IDENTIFIER) oGuiElement.setTitle(sTitle) sUrl = sUrl.replace(' ', '%20') oGuiElement.setMediaUrl(sUrl) oGuiElement.setThumbnail(sThumbnail) oPlayer = cPlayer() oPlayer.clearPlayList() oPlayer.addItemToPlaylist(oGuiElement) # tout repeter xbmc.executebuiltin('xbmc.playercontrol(RepeatAll)') oPlayer.startPlayer() return
def addTVDB(self, sId, sFunction, sLabel, sIcon, sThumbnail, sFanart, oOutputParameterHandler=''): cGui.CONTENT = 'tvshows' oGuiElement = cGuiElement() oGuiElement.setSiteName(sId) oGuiElement.setFunction(sFunction) oGuiElement.setTitle(sLabel) oGuiElement.setIcon(sIcon) oGuiElement.setMeta(2) oGuiElement.setThumbnail(sThumbnail) oGuiElement.setFanart(sFanart) oGuiElement.setCat(7) if oOutputParameterHandler.getValue('sMovieTitle'): sTitle = oOutputParameterHandler.getValue('sMovieTitle') oGuiElement.setFileName(sTitle) self.addFolder(oGuiElement, oOutputParameterHandler)
def addNext(self, sId, sFunction, sLabel, oOutputParameterHandler): oGuiElement = cGuiElement() oGuiElement.setSiteName(sId) oGuiElement.setFunction(sFunction) oGuiElement.setTitle('[COLOR teal]' + sLabel + ' >>>[/COLOR]') oGuiElement.setIcon('next.png') oGuiElement.setThumbnail(oGuiElement.getIcon()) oGuiElement.setMeta(0) oGuiElement.setCat(5) self.createContexMenuPageSelect(oGuiElement, oOutputParameterHandler) self.createContexMenuViewBack(oGuiElement, oOutputParameterHandler) self.addFolder(oGuiElement, oOutputParameterHandler)
def showWeb(): # Code qui s'occupe de liens TV du Web oGui = cGui() oInputParameterHandler = cInputParameterHandler() playlist = parseWebM3U() if (oInputParameterHandler.exist('AZ')): sAZ = oInputParameterHandler.getValue('AZ') string = filter(lambda t: t.title.strip().capitalize().startswith(sAZ), playlist) playlist = sorted(string, key=lambda t: t.title.strip().capitalize()) elif (oInputParameterHandler.exist('ident')): sIdent = oInputParameterHandler.getValue('ident') string = filter( lambda t: t.ident.strip().capitalize().startswith(sIdent), playlist) playlist = sorted(string, key=lambda t: t.ident.strip().capitalize()) else: playlist = sorted(playlist, key=lambda t: t.title.strip().capitalize()) if not playlist: oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', 'http://') oGui.addText(SITE_IDENTIFIER, '[COLOR red]Aucun résultat[/COLOR] ') else: oOutputParameterHandler = cOutputParameterHandler() for track in playlist: sThumb = track.image if not sThumb: sThumb = 'tv.png' oOutputParameterHandler.addParameter('siteUrl', track.location) oOutputParameterHandler.addParameter('sMovieTitle', track.title) oOutputParameterHandler.addParameter('sThumbnail', sThumb) # oGui.addDirectTV(SITE_IDENTIFIER, 'play__', track.title, 'tv.png' , sRootArt + '/tv/' + sThumb, oOutputParameterHandler) oGuiElement = cGuiElement() oGuiElement.setSiteName(SITE_IDENTIFIER) oGuiElement.setFunction('play__') oGuiElement.setTitle(track.title) oGuiElement.setFileName(track.title) oGuiElement.setIcon('tv.png') oGuiElement.setMeta(0) oGuiElement.setThumbnail(sThumb) oGuiElement.setDirectTvFanart() oGuiElement.setCat(6) oGui.createContexMenuBookmark(oGuiElement, oOutputParameterHandler) oGui.addFolder(oGuiElement, oOutputParameterHandler) oGui.setEndOfDirectory()
def addNewDir(self, Type, sId, sFunction, sLabel, sIcon, sThumbnail='', sDesc='', oOutputParameterHandler='', sMeta=0, sCat=None): oGuiElement = cGuiElement() # dir ou link => CONTENT par défaut = files if Type != 'dir' and Type != 'link': cGui.CONTENT = Type oGuiElement.setSiteName(sId) oGuiElement.setFunction(sFunction) oGuiElement.setTitle(sLabel) oGuiElement.setIcon(sIcon) if sThumbnail == '': oGuiElement.setThumbnail(oGuiElement.getIcon()) else: oGuiElement.setThumbnail(sThumbnail) oGuiElement.setPoster(sThumbnail) oGuiElement.setMeta(sMeta) oGuiElement.setDescription(sDesc) if sCat is not None: oGuiElement.setCat(sCat) # Pour addLink on recupere le sCat precedent. elif Type == 'link': oInputParameterHandler = cInputParameterHandler() sCat = oInputParameterHandler.getValue('sCat') if sCat: oGuiElement.setCat(sCat) oOutputParameterHandler.addParameter('sFav', sFunction) if oOutputParameterHandler.getValue('sMovieTitle'): sTitle = oOutputParameterHandler.getValue('sMovieTitle') oGuiElement.setFileName(sTitle) try: self.addFolder(oGuiElement, oOutputParameterHandler) except: pass
def showHistory(self): oGui = cGui() row = cDb().get_history() if row: oGui.addText(SITE_IDENTIFIER, self.addons.VSlang(30416)) else: oGui.addText(SITE_IDENTIFIER) oOutputParameterHandler = cOutputParameterHandler() for match in row: # code to get type with disp sType = self.addons.getSetting('search' + match[2][-1:] + '_type') if sType: oOutputParameterHandler.addParameter('type', sType) window(10101).setProperty('search_type', sType) oOutputParameterHandler.addParameter('siteUrl', 'http://venom') oOutputParameterHandler.addParameter('searchtext', match[1]) # oOutputParameterHandler.addParameter('disp', match[2]) # oOutputParameterHandler.addParameter('readdb', 'False') oGuiElement = cGuiElement() oGuiElement.setSiteName('globalSearch') oGuiElement.setFunction('globalSearch') try: oGuiElement.setTitle('- ' + match[1]) except: oGuiElement.setTitle('- ' + str(match[1], 'utf-8')) oGuiElement.setFileName(match[1]) oGuiElement.setCat(match[2]) oGuiElement.setIcon('search.png') oGui.CreateSimpleMenu(oGuiElement, oOutputParameterHandler, SITE_IDENTIFIER, 'cHome', 'delSearch', self.addons.VSlang(30412)) oGui.addFolder(oGuiElement, oOutputParameterHandler) if row: oOutputParameterHandler.addParameter('siteUrl', 'http://venom') oGui.addDir(SITE_IDENTIFIER, 'delSearch', self.addons.VSlang(30413), 'search.png', oOutputParameterHandler) oGui.setEndOfDirectory()
def addText(self, sId, sLabel='', sIcon='none.png'): printDBG('addText0001:') # Pas de texte lors des recherches globales if window(10101).getProperty('search') == 'true': return oGuiElement = cGuiElement() oGuiElement.setSiteName(sId) oGuiElement.setFunction('DoNothing') if not sLabel: sLabel = self.ADDON.VSlang(30204) oGuiElement.setTitle(sLabel) oGuiElement.setIcon(sIcon) oGuiElement.setThumbnail(oGuiElement.getIcon()) oGuiElement.setMeta(0) oOutputParameterHandler = cOutputParameterHandler() self.addFolder(oGuiElement, oOutputParameterHandler)
def showSeriesEpisode(): grab = cTMDb() addons = addon() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') sMovieTitle = oInputParameterHandler.getValue('sMovieTitle') sFanart = oInputParameterHandler.getValue('sFanart') sTmdbId = oInputParameterHandler.getValue('sTmdbId') sSeason = oInputParameterHandler.getValue('sSeason') # sId = oInputParameterHandler.getValue('sId') if sSeason == False: sSeason = sUrl.split('/')[-1] if sFanart == False: sFanart = '' oGui = cGui() # recherche saison complete oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sMovieTitle) # oOutputParameterHandler.addParameter('type', 'serie') search = '%s S%02d' % (sMovieTitle, int(sSeason)) # oOutputParameterHandler.addParameter('searchtext', search) if not isMatrix(): oOutputParameterHandler.addParameter('searchtext', cUtil().CleanName(search)) else: oOutputParameterHandler.addParameter('searchtext', search) oGuiElement = cGuiElement() oGuiElement.setSiteName('globalSearch') oGuiElement.setFunction('searchMovie') oGuiElement.setTitle(addons.VSlang(30415)) oGuiElement.setCat(2) oGuiElement.setIcon("searchtmdb.png") oGui.addFolder(oGuiElement, oOutputParameterHandler) result = grab.getUrl(sUrl) total = len(result) if (total > 0 and 'episodes' in result): total = len(result['episodes']) progress_ = progress().VScreate(SITE_NAME) oOutputParameterHandler = cOutputParameterHandler() for i in result['episodes']: progress_.VSupdate(progress_, total) if progress_.iscanceled(): break # sId, sTitle, sOtitle, sThumb, sFanart = i['id'], i['name'], i['original_name'], i['poster_path'], i['backdrop_path'] sEpNumber = i['episode_number'] # Mise en forme des infos (au format meta imdb) i = grab._format(i, '') sTitle, sGenre, sThumb, sFanart, sDesc, sYear = i['title'], i[ 'genre'], i['cover_url'], i['backdrop_url'], i['plot'], i[ 'year'] if not isMatrix(): sTitle = sTitle.encode("utf-8") sTitle = 'S%s E%s %s' % (sSeason, str(sEpNumber), sTitle) sExtraTitle = ' S' + "%02d" % int(sSeason) + 'E' + "%02d" % int( sEpNumber) oOutputParameterHandler.addParameter( 'siteUrl', sMovieTitle + '|' + sExtraTitle) # Pour compatibilite Favoris oOutputParameterHandler.addParameter('sMovieTitle', sMovieTitle) oOutputParameterHandler.addParameter('sThumb', sThumb) oOutputParameterHandler.addParameter('sTmdbId', sTmdbId) oOutputParameterHandler.addParameter('sSeason', sSeason) oOutputParameterHandler.addParameter('sEpisode', sEpNumber) oOutputParameterHandler.addParameter('type', 'serie') if not isMatrix(): oOutputParameterHandler.addParameter( 'searchtext', cUtil().CleanName(sMovieTitle)) else: oOutputParameterHandler.addParameter('searchtext', sMovieTitle) cGui.CONTENT = "tvshows" oGuiElement = cGuiElement() oGuiElement.setTmdbId(sTmdbId) oGuiElement.setSiteName('globalSearch') oGuiElement.setFunction('showSearch') oGuiElement.setTitle(sTitle) oGuiElement.setFileName(sMovieTitle) oGuiElement.setIcon('series.png') oGuiElement.setMeta(2) oGuiElement.setThumbnail(sThumb) oGuiElement.setFanart(sFanart) oGuiElement.setCat(2) oGuiElement.setDescription(sDesc) oGuiElement.setYear(sYear) oGuiElement.setGenre(sGenre) oGui.addFolder(oGuiElement, oOutputParameterHandler) progress_.VSclose(progress_) # tchnagement mode view = addons.getSetting('visuel-view') oGui.setEndOfDirectory(view)
def play__(): # Lancer les liens oGui = cGui() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl').replace('P_L_U_S', '+') sTitle = oInputParameterHandler.getValue('sMovieTitle') sThumbnail = oInputParameterHandler.getValue('sThumbnail') sDesc = oInputParameterHandler.getValue('sDesc') # Special url with tag if '[' in sUrl and ']' in sUrl: sUrl = GetRealUrl(sUrl) elif not xbmc.getInfoLabel('system.buildversion')[0:2] >= '19': stype = '' if '.ts' in sUrl: stype = 'TSDOWNLOADER' elif '.m3u' in sUrl: pass if stype: from F4mProxy import f4mProxyHelper f4mp = f4mProxyHelper() xbmcplugin.endOfDirectory(int(sys.argv[1]), cacheToDisc=True) f4mp.playF4mLink(sUrl, sTitle, proxy=None, use_proxy_for_chunks=False, maxbitrate=0, simpleDownloader=True, auth=None, streamtype=stype, setResolved=True, swf=None, callbackpath='', callbackparam='', iconImage=sThumbnail) return if 'f4mTester' in sUrl: xbmc.executebuiltin('XBMC.RunPlugin(' + sUrl + ')') return # Bug specifique au flux france TV # eof detectedL elif 'ftven.fr' in sUrl: oGuiElement = cGuiElement() oGuiElement.setSiteName(SITE_IDENTIFIER) oGuiElement.setTitle(sTitle) sUrl = sUrl.replace(' ', '%20') oGuiElement.setMediaUrl(sUrl) oGuiElement.setThumbnail(sThumbnail) oGuiElement.setDescription(sDesc) oPlayer = cPlayer() oPlayer.clearPlayList() oPlayer.addItemToPlaylist(oGuiElement) oPlayer.startPlayer() else: oHoster = cHosterGui().checkHoster(sUrl) if (oHoster != False): oHoster.setDisplayName(sTitle) oHoster.setFileName(sTitle) cHosterGui().showHoster(oGui, oHoster, sUrl, sThumbnail) oGui.setEndOfDirectory()
def showHoster(self, oGui, oHoster, sMediaUrl, sThumbnail, bGetRedirectUrl=False): oOutputParameterHandler = cOutputParameterHandler() oInputParameterHandler = cInputParameterHandler() # Gestion NextUp siteUrl = oInputParameterHandler.getValue('siteUrl') site = oInputParameterHandler.getValue('site') saisonUrl = oInputParameterHandler.getValue('saisonUrl') nextSaisonFunc = oInputParameterHandler.getValue('nextSaisonFunc') movieUrl = oInputParameterHandler.getValue('movieUrl') movieFunc = oInputParameterHandler.getValue('movieFunc') sLang = oInputParameterHandler.getValue('sLang') sRes = oInputParameterHandler.getValue('sRes') sTmdbId = oInputParameterHandler.getValue('sTmdbId') sFav = oInputParameterHandler.getValue('sFav') if not sFav: sFav = oInputParameterHandler.getValue('function') oGuiElement = cGuiElement() oGuiElement.setSiteName(self.SITE_NAME) oGuiElement.setFunction('play') oGuiElement.setTitle(oHoster.getDisplayName()) # Catégorie de lecture if oInputParameterHandler.exist('sCat'): sCat = oInputParameterHandler.getValue('sCat') if sCat == '4': # Si on vient de passer par un menu "Saison" ... sCat = '8' # ... On est maintenant au niveau "Episode" else: sCat = '5' # Divers oGuiElement.setCat(sCat) oOutputParameterHandler.addParameter('sCat', sCat) if (oInputParameterHandler.exist('sMeta')): sMeta = oInputParameterHandler.getValue('sMeta') oGuiElement.setMeta(int(sMeta)) oGuiElement.setFileName(oHoster.getFileName()) oGuiElement.getInfoLabel() if sThumbnail: oGuiElement.setThumbnail(sThumbnail) oGuiElement.setIcon('host.png') if sCat == "1": title = re.sub('\[.*\]|\(.*\)','', oHoster.getDisplayName()) elif xbmc.getInfoLabel('ListItem.tagline'): title = xbmc.getInfoLabel('ListItem.tagline') else: title = oHoster.getDisplayName() oOutputParameterHandler.addParameter('sMediaUrl', sMediaUrl) oOutputParameterHandler.addParameter('sHosterIdentifier', oHoster.getPluginIdentifier()) oOutputParameterHandler.addParameter('bGetRedirectUrl', bGetRedirectUrl) oOutputParameterHandler.addParameter('sFileName', oHoster.getFileName()) oOutputParameterHandler.addParameter('sTitleWatched', oGuiElement.getTitleWatched()) oOutputParameterHandler.addParameter('sTitle', title) oOutputParameterHandler.addParameter('sLang', sLang) oOutputParameterHandler.addParameter('sRes', sRes) oOutputParameterHandler.addParameter('sId', 'cHosterGui') oOutputParameterHandler.addParameter('siteUrl', siteUrl) oOutputParameterHandler.addParameter('sTmdbId', sTmdbId) # gestion NextUp oOutputParameterHandler.addParameter('sourceName', site) # source d'origine oOutputParameterHandler.addParameter('sourceFav', sFav) # source d'origine oOutputParameterHandler.addParameter('nextSaisonFunc', nextSaisonFunc) oOutputParameterHandler.addParameter('saisonUrl', saisonUrl) # gestion Lecture en cours oOutputParameterHandler.addParameter('movieUrl', movieUrl) oOutputParameterHandler.addParameter('movieFunc', movieFunc) # context playlist menu oContext = cContextElement() oContext.setFile('cHosterGui') oContext.setSiteName(self.SITE_NAME) oContext.setFunction('addToPlaylist') oContext.setTitle(self.ADDON.VSlang(30201)) oContext.setOutputParameterHandler(oOutputParameterHandler) oGuiElement.addContextItem(oContext) # Download menu if oHoster.isDownloadable(): oContext = cContextElement() oContext.setFile('cDownload') oContext.setSiteName('cDownload') oContext.setFunction('AddtoDownloadList') oContext.setTitle(self.ADDON.VSlang(30202)) oContext.setOutputParameterHandler(oOutputParameterHandler) oGuiElement.addContextItem(oContext) if oHoster.isDownloadable(): # Beta context download and view menu oContext = cContextElement() oContext.setFile('cDownload') oContext.setSiteName('cDownload') oContext.setFunction('AddtoDownloadListandview') oContext.setTitle(self.ADDON.VSlang(30326)) oContext.setOutputParameterHandler(oOutputParameterHandler) oGuiElement.addContextItem(oContext) # Upload menu uptobox if cInputParameterHandler().getValue('site') != 'siteuptobox' and self.ADDON.getSetting('hoster_uptobox_premium') == 'true': host = oHoster.getPluginIdentifier() accept = ['uptobox', 'uptostream', 'onefichier', 'uploaded', 'uplea'] for i in accept: if host == i: oGui.createSimpleMenu(oGuiElement, oOutputParameterHandler, 'siteuptobox', 'siteuptobox', 'UptomyAccount', self.ADDON.VSlang(30325)) # onefichier if cInputParameterHandler().getValue('site') != 'siteonefichier' and self.ADDON.getSetting('hoster_onefichier_premium') == 'true': host = oHoster.getPluginIdentifier() accept = 'onefichier' # les autres ne fonctionnent pas if host == accept: oGui.createSimpleMenu(oGuiElement, oOutputParameterHandler, 'siteonefichier', 'siteonefichier', 'UptomyAccount', '1fichier') # context Library menu oGui.createSimpleMenu(oGuiElement, oOutputParameterHandler, 'cLibrary', 'cLibrary', 'setLibrary', self.ADDON.VSlang(30324)) oGui.addFolder(oGuiElement, oOutputParameterHandler, False)
def showWeb(infile=None): # Code qui s'occupe de liens TV du Web oGui = cGui() oInputParameterHandler = cInputParameterHandler() if infile is None: sUrl = oInputParameterHandler.getValue('siteUrl') playlist = parseM3U(sUrl=sUrl) else: playlist = parseM3U(infile=infile) if oInputParameterHandler.exist('AZ'): sAZ = oInputParameterHandler.getValue('AZ') string = filter(lambda t: t.title.strip().capitalize().startswith(sAZ), playlist) playlist = sorted(string, key=lambda t: t.title.strip().capitalize()) else: playlist = sorted(playlist, key=lambda t: t.title.strip().capitalize()) if not playlist: oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', 'http://') oGui.addText( SITE_IDENTIFIER, '[COLOR red]Problème de lecture avec la playlist[/COLOR]') else: total = len(playlist) progress_ = progress().VScreate(SITE_NAME) for track in playlist: progress_.VSupdate(progress_, total) if progress_.iscanceled(): break sThumb = track.icon if not sThumb: sThumb = 'tv.png' # les + ne peuvent pas passer url2 = track.path.replace('+', 'P_L_U_S') if not xbmc.getInfoLabel('system.buildversion')[0:2] >= '19': if '[' not in url2 and ']' not in url2 and '.m3u8' not in url2 and 'dailymotion' not in url2: url2 = 'plugin://plugin.video.f4mTester/?url=' + QuotePlus( url2) url2 += '&streamtype=TSDOWNLOADER&name=' + Quote( track.title) thumb = '/'.join([sRootArt, sThumb]) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', url2) oOutputParameterHandler.addParameter('sMovieTitle', track.title) oOutputParameterHandler.addParameter('sThumbnail', thumb) oGuiElement = cGuiElement() oGuiElement.setSiteName(SITE_IDENTIFIER) oGuiElement.setFunction('play__') oGuiElement.setTitle(track.title) oGuiElement.setFileName(track.title) oGuiElement.setIcon('tv.png') oGuiElement.setMeta(0) oGuiElement.setThumbnail(thumb) oGuiElement.setDirectTvFanart() oGuiElement.setCat(6) oGui.CreateSimpleMenu(oGuiElement, oOutputParameterHandler, SITE_IDENTIFIER, SITE_IDENTIFIER, 'direct_epg', 'Guide tv Direct') oGui.CreateSimpleMenu(oGuiElement, oOutputParameterHandler, SITE_IDENTIFIER, SITE_IDENTIFIER, 'soir_epg', 'Guide tv Soir') oGui.CreateSimpleMenu(oGuiElement, oOutputParameterHandler, SITE_IDENTIFIER, SITE_IDENTIFIER, 'enregistrement', 'Enregistrement') oGui.createContexMenuBookmark(oGuiElement, oOutputParameterHandler) oGui.addFolder(oGuiElement, oOutputParameterHandler) progress_.VSclose(progress_) oGui.setEndOfDirectory()
def showTV(): oGui = cGui() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() oParser = cParser() sPattern = '<title>(.+?)</title><link>(.+?)</link>' aResult = oParser.parse(sHtmlContent, sPattern) if aResult[0] is True: progress_ = progress().VScreate(SITE_NAME) # affiche par if oInputParameterHandler.exist('AZ'): sAZ = oInputParameterHandler.getValue('AZ') string = filter( lambda t: t[0].strip().capitalize().startswith(sAZ), aResult[1]) string = sorted(string, key=lambda t: t[0].strip().capitalize()) else: string = sorted(aResult[1], key=lambda t: t[0].strip().capitalize()) total = len(string) oOutputParameterHandler = cOutputParameterHandler() for aEntry in string: progress_.VSupdate(progress_, total) if progress_.iscanceled(): break oOutputParameterHandler.addParameter('siteUrl', aEntry[1]) oOutputParameterHandler.addParameter('sMovieTitle', aEntry[0]) oOutputParameterHandler.addParameter('sThumbnail', 'tv.png') oGuiElement = cGuiElement() oGuiElement.setSiteName(SITE_IDENTIFIER) oGuiElement.setFunction('play__') oGuiElement.setTitle(aEntry[0]) oGuiElement.setFileName(aEntry[0]) oGuiElement.setIcon('tv.png') oGuiElement.setMeta(0) # oGuiElement.setThumbnail('tv.png') oGuiElement.setDirectTvFanart() oGuiElement.setCat(6) oGui.CreateSimpleMenu(oGuiElement, oOutputParameterHandler, SITE_IDENTIFIER, SITE_IDENTIFIER, 'direct_epg', 'Guide tv Direct') oGui.CreateSimpleMenu(oGuiElement, oOutputParameterHandler, SITE_IDENTIFIER, SITE_IDENTIFIER, 'soir_epg', 'Guide tv Soir') oGui.CreateSimpleMenu(oGuiElement, oOutputParameterHandler, SITE_IDENTIFIER, SITE_IDENTIFIER, 'enregistrement', 'Enregistrement') oGui.createContexMenuBookmark(oGuiElement, oOutputParameterHandler) oGui.addFolder(oGuiElement, oOutputParameterHandler) progress_.VSclose(progress_) oGui.setEndOfDirectory()
def play(self): oGui = cGui() oDialog = dialog() oInputParameterHandler = cInputParameterHandler() sHosterIdentifier = oInputParameterHandler.getValue( 'sHosterIdentifier') sMediaUrl = oInputParameterHandler.getValue('sMediaUrl') bGetRedirectUrl = oInputParameterHandler.getValue('bGetRedirectUrl') sFileName = oInputParameterHandler.getValue('sFileName') sTitle = oInputParameterHandler.getValue('sTitle') siteUrl = oInputParameterHandler.getValue('siteUrl') sCat = oInputParameterHandler.getValue('sCat') if not sTitle: sTitle = sFileName if bGetRedirectUrl == 'True': sMediaUrl = self.__getRedirectUrl(sMediaUrl) try: mediaDisplay = sMediaUrl.split('/') VSlog('Hoster - play : %s/ ... /%s' % ('/'.join(mediaDisplay[0:3]), mediaDisplay[-1])) except: VSlog('Hoster - play : ' + sMediaUrl) oHoster = self.getHoster(sHosterIdentifier) oHoster.setFileName(sFileName) sHosterName = oHoster.getDisplayName() oDialog.VSinfo(sHosterName, 'Resolve') try: oHoster.setUrl(sMediaUrl) aLink = oHoster.getMediaLink() if aLink[0] or aLink[ 1]: # Le hoster ne sait pas résoudre mais a retourné une autre url if not aLink[ 0]: # Voir exemple avec allDebrid qui : return False, URL oHoster = self.checkHoster(aLink[1], debrid=False) if oHoster: oHoster.setFileName(sFileName) sHosterName = oHoster.getDisplayName() oDialog.VSinfo(sHosterName, 'Resolve') oHoster.setUrl(sMediaUrl) aLink = oHoster.getMediaLink() if aLink[0]: oGuiElement = cGuiElement() oGuiElement.setSiteName(self.SITE_NAME) oGuiElement.setSiteUrl(siteUrl) oGuiElement.setMediaUrl(aLink[1]) oGuiElement.setTitle(sTitle) oGuiElement.setCat(sCat) oGuiElement.getInfoLabel() from Plugins.Extensions.IPTVPlayer.tsiplayer.addons.resources.lib.player import cPlayer oPlayer = cPlayer() # sous titres ? if len(aLink) > 2: oPlayer.AddSubtitles(aLink[2]) return oPlayer.run(oGuiElement, oHoster.getFileName(), aLink[1]) oDialog.VSerror(self.ADDON.VSlang(30020)) return except Exception as e: oDialog.VSerror(self.ADDON.VSlang(30020)) import traceback traceback.print_exc() return oGui.setEndOfDirectory()
def showSearch(self, searchtext=cInputParameterHandler().getValue('searchtext')): if not searchtext: return self.showSearchText() window(10101).clearProperty('search_text') oGui = cGui() oGui.addText('globalSearch', self.addons.VSlang(30077) % searchtext, 'none.png') # utilisation de guielement pour ajouter la bonne catégorie oGuiElement = cGuiElement() oGuiElement.setSiteName('globalSearch') oGuiElement.setFunction('showSearch') oGuiElement.setIcon('search.png') oGuiElement.setMeta(0) # oGuiElement.setThumbnail(sThumbnail) # oGuiElement.setFanart(sFanart) # Recherche globale films oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', 'http://venom') oOutputParameterHandler.addParameter('searchtext', searchtext) oGuiElement.setTitle(self.addons.VSlang(30078)) oGuiElement.setFileName(self.addons.VSlang(30078)) oGuiElement.setCat(1) oGui.addFolder(oGuiElement, oOutputParameterHandler) # Recherche globale séries oOutputParameterHandler.addParameter('siteUrl', 'http://venom') oOutputParameterHandler.addParameter('searchtext', searchtext) oGuiElement.setTitle(self.addons.VSlang(30079)) oGuiElement.setFileName(self.addons.VSlang(30079)) oGuiElement.setCat(2) oGui.addFolder(oGuiElement, oOutputParameterHandler) # Recherche globale Animés oOutputParameterHandler.addParameter('siteUrl', 'http://venom') oOutputParameterHandler.addParameter('searchtext', searchtext) oGuiElement.setTitle(self.addons.VSlang(30118)) oGuiElement.setFileName(self.addons.VSlang(30118)) oGuiElement.setCat(3) oGui.addFolder(oGuiElement, oOutputParameterHandler) # Recherche globale Dramas oOutputParameterHandler.addParameter('siteUrl', 'http://venom') oOutputParameterHandler.addParameter('searchtext', searchtext) oGuiElement.setTitle(self.addons.VSlang(30123)) oGuiElement.setFileName(self.addons.VSlang(30123)) oGuiElement.setCat(4) oGui.addFolder(oGuiElement, oOutputParameterHandler) # Recherche globale divers oOutputParameterHandler.addParameter('siteUrl', 'http://venom') oOutputParameterHandler.addParameter('searchtext', searchtext) oGuiElement.setTitle(self.addons.VSlang(30080)) oGuiElement.setFileName(self.addons.VSlang(30080)) oGuiElement.setCat(5) oGui.addFolder(oGuiElement, oOutputParameterHandler) # oOutputParameterHandler.addParameter('siteUrl', 'http://venom') # oOutputParameterHandler.addParameter('searchtext', searchtext) # oOutputParameterHandler.addParameter('disp', 'search10') # oOutputParameterHandler.addParameter('readdb', 'True') # oGui.addDir('globalSearch', 'showSearchText', 'self.addons.VSlang(30417), 'search.png', oOutputParameterHandler) oGui.setEndOfDirectory()
def showHoster(self, oGui, oHoster, sMediaUrl, sThumbnail, bGetRedirectUrl=False): oInputParameterHandler = cInputParameterHandler() # Gestion NextUp siteUrl = oInputParameterHandler.getValue('siteUrl') site = oInputParameterHandler.getValue('site') saisonUrl = oInputParameterHandler.getValue('saisonUrl') nextSaisonFunc = oInputParameterHandler.getValue('nextSaisonFunc') sLang = oInputParameterHandler.getValue('sLang') sRes = oInputParameterHandler.getValue('sRes') oGuiElement = cGuiElement() oGuiElement.setSiteName(self.SITE_NAME) oGuiElement.setFunction('play') oGuiElement.setTitle(oHoster.getDisplayName()) # oGuiElement.setThumbnail(sThumbnail) # if (oInputParameterHandler.exist('sMeta')): # sMeta = oInputParameterHandler.getValue('sMeta') # oGuiElement.setMeta(int(sMeta)) oGuiElement.setFileName(oHoster.getFileName()) oGuiElement.getInfoLabel() if sThumbnail: oGuiElement.setThumbnail(sThumbnail) oGuiElement.setIcon('host.png') oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('sMediaUrl', sMediaUrl) oOutputParameterHandler.addParameter('sHosterIdentifier', oHoster.getPluginIdentifier()) oOutputParameterHandler.addParameter('bGetRedirectUrl', bGetRedirectUrl) oOutputParameterHandler.addParameter('sFileName', oHoster.getFileName()) oOutputParameterHandler.addParameter('sTitleWatched', oGuiElement.getTitleWatched()) oOutputParameterHandler.addParameter('sTitle', oHoster.getDisplayName()) oOutputParameterHandler.addParameter('sLang', sLang) oOutputParameterHandler.addParameter('sRes', sRes) oOutputParameterHandler.addParameter('sId', 'cHosterGui') oOutputParameterHandler.addParameter('siteUrl', siteUrl) # gestion NextUp oOutputParameterHandler.addParameter('sourceName', site) # source d'origine oOutputParameterHandler.addParameter('nextSaisonFunc', nextSaisonFunc) oOutputParameterHandler.addParameter('saisonUrl', saisonUrl) # nouveaux pour la lecture. if oInputParameterHandler.exist('sCat'): sCat = oInputParameterHandler.getValue('sCat') oGuiElement.setCat(sCat) oOutputParameterHandler.addParameter('sCat', sCat) else: oGuiElement.setCat('4') # context playlist menu oContext = cContextElement() oContext.setFile('cHosterGui') oContext.setSiteName(self.SITE_NAME) oContext.setFunction('addToPlaylist') oContext.setTitle(self.ADDON.VSlang(30201)) oContext.setOutputParameterHandler(oOutputParameterHandler) oGuiElement.addContextItem(oContext) # Download menu if oHoster.isDownloadable(): oContext = cContextElement() oContext.setFile('cDownload') oContext.setSiteName('cDownload') oContext.setFunction('AddtoDownloadList') oContext.setTitle(self.ADDON.VSlang(30202)) oContext.setOutputParameterHandler(oOutputParameterHandler) oGuiElement.addContextItem(oContext) if oHoster.isDownloadable(): # Beta context download and view menu oContext = cContextElement() oContext.setFile('cDownload') oContext.setSiteName('cDownload') oContext.setFunction('AddtoDownloadListandview') oContext.setTitle(self.ADDON.VSlang(30326)) oContext.setOutputParameterHandler(oOutputParameterHandler) oGuiElement.addContextItem(oContext) # Upload menu uptobox if cInputParameterHandler().getValue( 'site') != 'siteuptobox' and self.ADDON.getSetting( 'hoster_uptobox_premium') == 'true': host = oHoster.getPluginIdentifier() accept = [ 'uptobox', 'uptostream', 'onefichier', 'uploaded', 'uplea' ] for i in accept: if host == i: oGui.CreateSimpleMenu(oGuiElement, oOutputParameterHandler, 'siteuptobox', 'siteuptobox', 'UptomyAccount', self.ADDON.VSlang(30325)) # onefichier if cInputParameterHandler().getValue( 'site') != 'siteonefichier' and self.ADDON.getSetting( 'hoster_onefichier_premium') == 'true': host = oHoster.getPluginIdentifier() accept = 'onefichier' # les autres ne fonctionnent pas if host == accept: oGui.CreateSimpleMenu(oGuiElement, oOutputParameterHandler, 'siteonefichier', 'siteonefichier', 'UptomyAccount', '1fichier') # context FAV menu oGui.createContexMenuBookmark(oGuiElement, oOutputParameterHandler) # context Library menu oGui.CreateSimpleMenu(oGuiElement, oOutputParameterHandler, 'cLibrary', 'cLibrary', 'setLibrary', self.ADDON.VSlang(30324)) oGui.addHost(oGuiElement, oOutputParameterHandler)
def showHoster(): oGui = cGui() oParser = cParser() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') sTitle = oInputParameterHandler.getValue('sMovieTitle') sThumb = oInputParameterHandler.getValue('sThumb') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() info = cePg().getChannelEpg(sTitle) sDesc = info['plot'] sMovieTitle = info['title'] if not sMovieTitle: sMovieTitle = sTitle sMeta = 0 sCat = info['media_type'] if sCat: if 'Film' in sCat: sMeta = 1 if 'Série' in sCat: sMeta = 2 sYear = info['year'] coverUrl = info['cover_url'] if coverUrl: sThumb = coverUrl # Double Iframe a passer. sPattern = '<iframe.+?src="([^"]+)"' iframeURL = oParser.parse(sHtmlContent, sPattern)[1][0] oRequestHandler = cRequestHandler(iframeURL) sHtmlContent = oRequestHandler.request() sPattern = '<iframe.+?src="([^"]+)"' aResult = oParser.parse(sHtmlContent, sPattern) if not aResult[1]: # Pas de flux oGui.setEndOfDirectory() return iframeURL1 = aResult[1][0] sHosterUrl = iframeURL1 oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('sMovieTitle', sMovieTitle) oOutputParameterHandler.addParameter('sThumbnail', sThumb) oOutputParameterHandler.addParameter('sYear', sYear) oOutputParameterHandler.addParameter('sDesc', sDesc) oGuiElement = cGuiElement() oGuiElement.setTitle(sMovieTitle) oGuiElement.setDescription(sDesc) oGuiElement.setFileName(sMovieTitle) oGuiElement.setSiteName(Plugins.Extensions.IPTVPlayer.tsiplayer.addons. resources.sites.freebox.SITE_IDENTIFIER) oGuiElement.setFunction('play__') oGuiElement.setIcon('tv.png') oGuiElement.setMeta(sMeta) oGuiElement.setThumbnail(sThumb) oGuiElement.setDirectTvFanart() oGuiElement.setCat(sMeta) # oGui.CreateSimpleMenu(oGuiElement, oOutputParameterHandler, resources.sites.freebox.SITE_IDENTIFIER, SITE_IDENTIFIER, 'direct_epg', 'Guide tv Direct') # oGui.CreateSimpleMenu(oGuiElement, oOutputParameterHandler, resources.sites.freebox.SITE_IDENTIFIER, SITE_IDENTIFIER, 'soir_epg', 'Guide tv Soir') if addon().getSetting('enregistrement_activer') == 'true': oGui.CreateSimpleMenu( oGuiElement, oOutputParameterHandler, Plugins.Extensions.IPTVPlayer.tsiplayer.addons.resources.sites. freebox.SITE_IDENTIFIER, SITE_IDENTIFIER, 'enregistrement', 'Enregistrement') # Menu pour les films if sMeta == 1: oGui.createContexMenuinfo(oGuiElement, oOutputParameterHandler) oGui.createContexMenuba(oGuiElement, oOutputParameterHandler) oGui.createContexMenuSimil(oGuiElement, oOutputParameterHandler) oGui.createContexMenuWatch(oGuiElement, oOutputParameterHandler) if 'dailymotion' in sHosterUrl: oOutputParameterHandler.addParameter('sHosterIdentifier', 'dailymotion') oOutputParameterHandler.addParameter('sMediaUrl', sHosterUrl) oOutputParameterHandler.addParameter('siteUrl', sHosterUrl) oOutputParameterHandler.addParameter('sFileName', sMovieTitle) oGuiElement.setFunction('play') oGuiElement.setSiteName('cHosterGui') oGui.addHost(oGuiElement, oOutputParameterHandler) cGui.CONTENT = 'movies' oGui.setEndOfDirectory() return oRequestHandler = cRequestHandler(iframeURL1) oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry('Referer', iframeURL) sHtmlContent2 = oRequestHandler.request() sPattern2 = 'var\s+cid[^\'"]+[\'"]{1}([0-9]+)' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: str2 = aResult[0] datetoken = int(getTimer()) * 1000 jsonUrl = 'https://telerium.live/streams/' + str2 + '/' + str( datetoken) + '.json' tokens = getRealTokenJson(jsonUrl, iframeURL1) m3url = tokens['url'] nxturl = 'https://telerium.live' + tokens['tokenurl'] realtoken = getRealTokenJson(nxturl, iframeURL1)[10][::-1] try: m3url = m3url.decode("utf-8") except: pass sHosterUrl = 'https:' + m3url + realtoken + '|User-Agent=' + UA sHosterUrl += '&Referer=' + Quote( iframeURL1) + '&Sec-Fetch-Mode=cors&Origin=https://telerium.tv' oOutputParameterHandler.addParameter('siteUrl', sHosterUrl) oGui.addFolder(oGuiElement, oOutputParameterHandler) cGui.CONTENT = 'movies' oGui.setEndOfDirectory()
def showLists(): oGui = cGui() grab = cTMDb() addons = addon() oInputParameterHandler = cInputParameterHandler() iPage = 1 if (oInputParameterHandler.exist('page')): iPage = oInputParameterHandler.getValue('page') sUrl = oInputParameterHandler.getValue('siteUrl') result = grab.getUrl('list/' + sUrl, iPage, '') total = len(result) if (total > 0): total = len(result['items']) progress_ = progress().VScreate(SITE_NAME) oOutputParameterHandler = cOutputParameterHandler() for i in result['items']: progress_.VSupdate(progress_, total) if progress_.iscanceled(): break # Mise en forme des infos (au format meta imdb) i = grab._format(i, '') sId, sTitle, sType, sThumb, sFanart, sVote, sDesc, sYear = i[ 'tmdb_id'], i['title'], i['media_type'], i['cover_url'], i[ 'backdrop_url'], i['rating'], i['plot'], i['year'] if not isMatrix(): sTitle = sTitle.encode("utf-8") sDisplayTitle = "%s (%s)" % (sTitle, sVote) oOutputParameterHandler.addParameter('siteUrl', 'http://tmdb/%s' % sId) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumb', sThumb) oOutputParameterHandler.addParameter('sId', sId) oOutputParameterHandler.addParameter('sFanart', sFanart) oOutputParameterHandler.addParameter('sTmdbId', sId) if isMatrix(): oOutputParameterHandler.addParameter('searchtext', sTitle) else: oOutputParameterHandler.addParameter('searchtext', cUtil().CleanName(sTitle)) cGui.CONTENT = "movies" oGuiElement = cGuiElement() oGuiElement.setTmdbId(sId) oGuiElement.setSiteName('globalSearch') oGuiElement.setFunction('showSearch') oGuiElement.setTitle(sDisplayTitle) oGuiElement.setFileName(sTitle) if sType == 'movie': oGuiElement.setIcon('films.png') oGuiElement.setMeta(1) oGuiElement.setCat(1) elif sType == 'tv': oGuiElement.setIcon('series.png') oGuiElement.setMeta(2) oGuiElement.setCat(2) oGuiElement.setThumbnail(sThumb) oGuiElement.setPoster(sThumb) oGuiElement.setFanart(sFanart) oGuiElement.setDescription(sDesc) oGuiElement.setYear(sYear) if 'genre' in i: oGuiElement.setGenre(i['genre']) oGui.addFolder(oGuiElement, oOutputParameterHandler) progress_.VSclose(progress_) view = addons.getSetting('visuel-view') oGui.setEndOfDirectory(view)
def showSeriesSaison(): oGui = cGui() grab = cTMDb() addons = addon() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') sMovieTitle = oInputParameterHandler.getValue('sMovieTitle') sFanart = oInputParameterHandler.getValue('sFanart') sTmdbId = oInputParameterHandler.getValue('sTmdbId') sId = oInputParameterHandler.getValue('sId') if sId == False: sId = sUrl.split('/')[-1] if sFanart == False: sFanart = '' # recherche la serie complete oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sMovieTitle) # oOutputParameterHandler.addParameter('type', 'serie') # oOutputParameterHandler.addParameter('searchtext', sMovieTitle) if not isMatrix(): oOutputParameterHandler.addParameter('searchtext', cUtil().CleanName(sMovieTitle)) else: oOutputParameterHandler.addParameter('searchtext', sMovieTitle) oGuiElement = cGuiElement() oGuiElement.setSiteName('globalSearch') oGuiElement.setFunction('searchMovie') oGuiElement.setTitle(addons.VSlang(30414)) oGuiElement.setCat(2) oGuiElement.setIcon("searchtmdb.png") oGui.addFolder(oGuiElement, oOutputParameterHandler) result = grab.getUrl(sUrl) total = len(result) if (total > 0): total = len(result['seasons']) progress_ = progress().VScreate(SITE_NAME) oOutputParameterHandler = cOutputParameterHandler() for i in result['seasons']: progress_.VSupdate(progress_, total) if progress_.iscanceled(): break sNbreEp, SSeasonNum = i['episode_count'], i['season_number'] # Mise en forme des infos (au format meta imdb) i = grab._format(i, '') sTitle, sGenre, sThumb, sFanart, sDesc, sYear = i['title'], i[ 'genre'], i['cover_url'], i['backdrop_url'], i['plot'], i[ 'year'] sTitle = 'Saison ' + str(SSeasonNum) + ' (' + str(sNbreEp) + ')' sUrl = 'tv/' + str(sId) + '/season/' + str(SSeasonNum) oOutputParameterHandler.addParameter('siteUrl', sUrl) oOutputParameterHandler.addParameter('sMovieTitle', sMovieTitle) oOutputParameterHandler.addParameter('sThumb', sThumb) oOutputParameterHandler.addParameter('sId', sId) oOutputParameterHandler.addParameter('sSeason', SSeasonNum) oOutputParameterHandler.addParameter('sFanart', sFanart) oOutputParameterHandler.addParameter('sTmdbId', sTmdbId) cGui.CONTENT = "tvshows" oGuiElement = cGuiElement() oGuiElement.setTmdbId(sTmdbId) oGuiElement.setSiteName(SITE_IDENTIFIER) oGuiElement.setFunction('showSeriesEpisode') oGuiElement.setTitle(sTitle) oGuiElement.setFileName(sMovieTitle) oGuiElement.setIcon('series.png') oGuiElement.setMeta(2) oGuiElement.setThumbnail(sThumb) oGuiElement.setPoster(sThumb) oGuiElement.setFanart(sFanart) oGuiElement.setCat(7) oGuiElement.setDescription(sDesc) oGuiElement.setYear(sYear) oGuiElement.setGenre(sGenre) oGui.addFolder(oGuiElement, oOutputParameterHandler) progress_.VSclose(progress_) # changement mode view = addons.getSetting('visuel-view') oGui.setEndOfDirectory(view)
def showSeries(sSearch=''): grab = cTMDb() addons = addon() oInputParameterHandler = cInputParameterHandler() iPage = 1 term = '' if (oInputParameterHandler.exist('page')): iPage = oInputParameterHandler.getValue('page') if (oInputParameterHandler.exist('sSearch')): sSearch = oInputParameterHandler.getValue('sSearch') if sSearch: result = grab.getUrl('search/tv', iPage, 'query=' + sSearch) sUrl = '' else: sUrl = oInputParameterHandler.getValue('siteUrl') if (oInputParameterHandler.exist('genre')): term = 'with_genres=' + oInputParameterHandler.getValue('genre') if (oInputParameterHandler.exist('session_id')): term += 'session_id=' + oInputParameterHandler.getValue( 'session_id') result = grab.getUrl(sUrl, iPage, term) oGui = cGui() try: total = len(result) if (total > 0): total = len(result['results']) progress_ = progress().VScreate(SITE_NAME) for i in result['results']: progress_.VSupdate(progress_, total) if progress_.iscanceled(): break # Mise en forme des infos (au format meta imdb) i = grab._format(i, '') sId, sTitle, sGenre, sThumb, sFanart, sDesc, sYear = i[ 'tmdb_id'], i['title'], i['genre'], i['cover_url'], i[ 'backdrop_url'], i['plot'], i['year'] if not isMatrix(): sTitle = sTitle.encode("utf-8") sSiteUrl = 'tv/' + str(sId) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sSiteUrl) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumb', sThumb) oOutputParameterHandler.addParameter('sId', sId) oOutputParameterHandler.addParameter('sFanart', sFanart) oOutputParameterHandler.addParameter('sTmdbId', sId) if isMatrix(): oOutputParameterHandler.addParameter('searchtext', sTitle) else: oOutputParameterHandler.addParameter( 'searchtext', cUtil().CleanName(sTitle)) cGui.CONTENT = "tvshows" oGuiElement = cGuiElement() oGuiElement.setTmdbId(sId) oGuiElement.setSiteName( SITE_IDENTIFIER) # a activer pour saisons oGuiElement.setFunction('showSeriesSaison') oGuiElement.setTitle(sTitle) oGuiElement.setFileName(sTitle) oGuiElement.setIcon('series.png') oGuiElement.setMeta(2) oGuiElement.setThumbnail(sThumb) oGuiElement.setPoster(sThumb) oGuiElement.setFanart(sFanart) oGuiElement.setCat(2) oGuiElement.setDescription(sDesc) oGuiElement.setYear(sYear) oGuiElement.setGenre(sGenre) oGui.addFolder(oGuiElement, oOutputParameterHandler) progress_.VSclose(progress_) if (int(iPage) > 0): iNextPage = int(iPage) + 1 oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl) oOutputParameterHandler.addParameter('page', iNextPage) if sSearch: oOutputParameterHandler.addParameter('sSearch', sSearch) if (oInputParameterHandler.exist('genre')): oOutputParameterHandler.addParameter( 'genre', oInputParameterHandler.getValue('genre')) oGui.addNext(SITE_IDENTIFIER, 'showSeries', 'Page ' + str(iNextPage), oOutputParameterHandler) except TypeError: oGui.addText(SITE_IDENTIFIER, '[COLOR red]Aucun résultat n\'a été trouvé.[/COLOR]') # changement mode view = addons.getSetting('visuel-view') oGui.setEndOfDirectory(view)
def showActors(sSearch=''): oGui = cGui() grab = cTMDb() addons = addon() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') iPage = 1 if (oInputParameterHandler.exist('page')): iPage = oInputParameterHandler.getValue('page') if (oInputParameterHandler.exist('sSearch')): sSearch = oInputParameterHandler.getValue('sSearch') if sSearch: # format obligatoire evite de modif le format de l'url dans la lib >> _call # a cause d'un ? pas ou il faut pour ça >> invalid api key result = grab.getUrl(sUrl, iPage, 'query=' + sSearch) else: result = grab.getUrl(sUrl, iPage) total = len(result) if (total > 0): total = len(result['results']) progress_ = progress().VScreate(SITE_NAME) oOutputParameterHandler = cOutputParameterHandler() # récup le nombre de page pour NextPage nbrpage = result['total_pages'] for i in result['results']: progress_.VSupdate(progress_, total) if progress_.iscanceled(): break sName, sThumb = i['name'], i['profile_path'] if sThumb: POSTER_URL = grab.poster sThumb = POSTER_URL + sThumb else: sThumb = '' oOutputParameterHandler.addParameter('siteUrl', sUrl) oOutputParameterHandler.addParameter('sThumb', sThumb) if not isMatrix(): sName = sName.encode('utf-8') oOutputParameterHandler.addParameter( 'siteUrl', 'person/' + str(i['id']) + '/movie_credits') sTitle = str(sName) oGuiElement = cGuiElement() oGuiElement.setSiteName(SITE_IDENTIFIER) oGuiElement.setFunction('showFilmActor') oGuiElement.setTitle(sTitle) oGuiElement.setFileName(sName) oGuiElement.setIcon('actors.png') oGuiElement.setMeta(0) oGuiElement.setThumbnail(sThumb) oGuiElement.setPoster(sThumb) oGuiElement.setCat(7) oGui.addFolder(oGuiElement, oOutputParameterHandler) progress_.VSclose(progress_) if (int(iPage) < int(nbrpage)): iNextPage = int(iPage) + 1 oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl) oOutputParameterHandler.addParameter('page', iNextPage) # ajoute param sSearch pour garder le bon format d'url avec grab url if sSearch: oOutputParameterHandler.addParameter('sSearch', sSearch) oGui.addNext(SITE_IDENTIFIER, 'showActors', 'Page ' + str(iNextPage), oOutputParameterHandler) view = addons.getSetting('visuel-view') oGui.setEndOfDirectory(view)
def showFilmActor(): oGui = cGui() grab = cTMDb() addons = addon() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') iPage = 1 if (oInputParameterHandler.exist('page')): iPage = oInputParameterHandler.getValue('page') result = grab.getUrl(sUrl, iPage) total = len(result) if (total > 0): total = len(result['cast']) progress_ = progress().VScreate(SITE_NAME) oOutputParameterHandler = cOutputParameterHandler() for i in result['cast']: progress_.VSupdate(progress_, total) if progress_.iscanceled(): break # Mise en forme des infos (au format meta imdb) i = grab._format(i, '', "person") sId, sTitle, sGenre, sThumb, sFanart, sDesc, sYear = i[ 'tmdb_id'], i['title'], i['genre'], i['poster_path'], i[ 'backdrop_path'], i['plot'], i['year'] if not isMatrix(): sTitle = sTitle.encode("utf-8") oOutputParameterHandler.addParameter('siteUrl', 'http://tmdb/%s' % sId) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumb', sThumb) oOutputParameterHandler.addParameter('sTmdbId', sId) oOutputParameterHandler.addParameter('type', 'film') if not isMatrix(): oOutputParameterHandler.addParameter('searchtext', cUtil().CleanName(sTitle)) else: oOutputParameterHandler.addParameter('searchtext', sTitle) cGui.CONTENT = "movies" oGuiElement = cGuiElement() oGuiElement.setTmdbId(sId) oGuiElement.setSiteName('globalSearch') oGuiElement.setFunction('showSearch') oGuiElement.setTitle(sTitle) oGuiElement.setFileName(sTitle) oGuiElement.setIcon('films.png') oGuiElement.setMeta(1) oGuiElement.setThumbnail(sThumb) oGuiElement.setPoster(sThumb) oGuiElement.setFanart(sFanart) oGuiElement.setCat(1) oGuiElement.setDescription(sDesc) oGuiElement.setYear(sYear) oGuiElement.setGenre(sGenre) oGui.addFolder(oGuiElement, oOutputParameterHandler) progress_.VSclose(progress_) # changement mode view = addons.getSetting('visuel-view') oGui.setEndOfDirectory(view)