def addDirectory(self, items): if items == None or len(items) == 0: return sysaddon = sys.argv[0] addonFanart, addonThumb, artPath = control.addonFanart(), control.addonThumb(), control.artPath() for i in items: try: try: name = control.lang(i['name']).encode('utf-8') except: name = i['name'] if i['image'].startswith('http://'): thumb = i['image'] elif not artPath == None: thumb = os.path.join(artPath, i['image']) else: thumb = addonThumb url = '%s?action=%s' % (sysaddon, i['action']) try: url += '&url=%s' % urllib.quote_plus(i['url']) except: pass cm = [] item = control.item(label=name, iconImage=thumb, thumbnailImage=thumb) item.addContextMenuItems(cm, replaceItems=False) if not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) control.addItem(handle=int(sys.argv[1]), url=url, listitem=item, isFolder=True) except: pass control.directory(int(sys.argv[1]), cacheToDisc=True)
def listBollywood(self, url, page): try: html = client.request(url + 'page/' + str(page)) except: pass syshandle = int(sys.argv[1]) result = client.parseDOM(html, 'article', attrs={'id': 'posts'}) result = [(client.parseDOM(i, 'a', ret='href'), client.parseDOM(i, 'img', ret='src'), client.parseDOM(i, 'a')) for i in result] result = [(i[0][0], i[1][0], i[2][1]) for i in result if len(i[0]) > 0 and len(i[1]) > 0 and len(i[2][1]) > 0] for movie in result: uri = movie[0] image = movie[1] name = movie[2] action = 'resolveBollywoodUrl' query = '%s?action=%s&name=%s&url=%s&image=%s' % (sysaddon, action, name, uri, image) item = control.item(name, iconImage=image, thumbnailImage=image) item.setInfo(type="Video", infoLabels={"Title": name, "OriginalTitle": name}) control.addItem(handle=int(sys.argv[1]), url=query, listitem=item, isFolder=True) pageNum = int(page)+1 query = '%s?action=%s&url=%s&page=%s' % (sysaddon, 'listBollywood', url, pageNum) item = control.item('Next page', iconImage='', thumbnailImage='') item.setInfo(type="Video", infoLabels={"Title": 'Page ' + str(page), "OriginalTitle": 'Page ' + str(page)}) control.addItem(handle=syshandle, url=query, listitem=item, isFolder=True) control.content(syshandle, 'movies') control.directory(syshandle, cacheToDisc=True) views.setView('movies', {'skin.estuary': 500, 'skin.confluence': 500})
def addDirectory(self, items, queue=False): if items == None or len(items) == 0: return sysaddon = sys.argv[0] isPlayable = False if control.setting('autoplay') == 'false' and control.setting('hosts.mode') == '1' else True addonFanart, addonThumb, artPath = control.addonFanart(), control.addonThumb(), control.artPath() for i in items: try: try: name = control.lang(i['name']).encode('utf-8') except: name = i['name'] if i['image'].startswith('http://'): thumb = i['image'] elif not artPath == None: thumb = os.path.join(artPath, i['image']) else: thumb = addonThumb url = '%s?action=%s' % (sysaddon, i['action']) try: url += '&url=%s' % urllib.quote_plus(i['url']) except: pass cm = [] if queue == True and isPlayable == True: cm.append((control.lang(30202).encode('utf-8'), 'RunPlugin(%s?action=queueItem)' % sysaddon)) item = control.item(label=name, iconImage=thumb, thumbnailImage=thumb) item.addContextMenuItems(cm, replaceItems=False) if not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) control.addItem(handle=int(sys.argv[1]), url=url, listitem=item, isFolder=True) except: pass control.directory(int(sys.argv[1]), cacheToDisc=True)
def views(self): try: control.idle() items = [ (control.lang(32001).encode('utf-8'), 'movies'), (control.lang(32002).encode('utf-8'), 'tvshows'), (control.lang(32054).encode('utf-8'), 'seasons'), (control.lang(32038).encode('utf-8'), 'episodes') ] select = control.selectDialog([i[0] for i in items], control.lang(32049).encode('utf-8')) if select == -1: return content = items[select][1] title = control.lang(32059).encode('utf-8') url = '%s?action=addView&content=%s' % (sys.argv[0], content) poster, banner, fanart = control.addonPoster(), control.addonBanner(), control.addonFanart() item = control.item(label=title) item.setInfo(type='Video', infoLabels = {'title': title}) item.setArt({'icon': poster, 'thumb': poster, 'poster': poster, 'banner': banner}) item.setProperty('Fanart_Image', fanart) control.addItem(handle=int(sys.argv[1]), url=url, listitem=item, isFolder=False) control.content(int(sys.argv[1]), content) control.directory(int(sys.argv[1]), cacheToDisc=True) from resources.lib.modules import cache views.setView(content, {}) except: return
def channelDirectory(self, items): if items == None or len(items) == 0: return playbackMenu = control.lang(30292).encode('utf-8') if control.setting('autoplay') == 'true' else control.lang(30291).encode('utf-8') addonPoster, addonBanner = control.addonPoster(), control.addonBanner() addonFanart = control.addonFanart() sysaddon = sys.argv[0] for i in items: try: label = '[B]%s[/B] : %s (%s)' % (i['channel'].upper(), i['title'], i['year']) sysname = urllib.quote_plus('%s (%s)' % (i['title'], i['year'])) systitle = urllib.quote_plus(i['title']) imdb, year = i['imdb'], i['year'] poster, banner = i['poster'], i['poster'] if poster == '0': poster = addonPoster if banner == '0' and poster == '0': banner = addonBanner elif banner == '0': banner = poster meta = dict((k,v) for k, v in i.iteritems() if not v == '0') meta.update({'trailer': '%s?action=trailer&name=%s' % (sysaddon, sysname)}) if i['duration'] == '0': meta.update({'duration': '120'}) try: meta.update({'duration': str(int(meta['duration']) * 60)}) except: pass sysmeta = urllib.quote_plus(json.dumps(meta)) url = '%s?action=play&title=%s&year=%s&imdb=%s&meta=%s&t=%s' % (sysaddon, systitle, year, imdb, sysmeta, self.systime) sysurl = urllib.quote_plus(url) cm = [] cm.append((playbackMenu, 'RunPlugin(%s?action=alterSources&url=%s&meta=%s)' % (sysaddon, sysurl, sysmeta))) cm.append((control.lang(30297).encode('utf-8'), 'RunPlugin(%s?action=trailer&name=%s)' % (sysaddon, sysname))) cm.append((control.lang(30293).encode('utf-8'), 'Action(Info)')) cm.append((control.lang(30294).encode('utf-8'), 'RunPlugin(%s?action=refresh)' % (sysaddon))) cm.append((control.lang(30295).encode('utf-8'), 'RunPlugin(%s?action=openSettings)' % (sysaddon))) cm.append((control.lang(30296).encode('utf-8'), 'RunPlugin(%s?action=openPlaylist)' % (sysaddon))) item = control.item(label=label, iconImage=poster, thumbnailImage=poster) try: item.setArt({'poster': poster, 'banner': banner}) except: pass if not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) item.setInfo(type='Video', infoLabels = meta) item.setProperty('Video', 'true') #item.setProperty('IsPlayable', 'true') item.addContextMenuItems(cm, replaceItems=True) control.addItem(handle=int(sys.argv[1]), url=url, listitem=item, isFolder=False) except: pass control.content(int(sys.argv[1]), 'movies') #control.do_block_check(False) control.directory(int(sys.argv[1]), cacheToDisc=True)
def endDirectory(content, close): if content in ['movies', 'tvshows', 'seasons', 'episodes']: control.content(int(sys.argv[1]), content) if close == True: control.directory(int(sys.argv[1]), cacheToDisc=True) if close == True and content in ['movies', 'tvshows', 'seasons', 'episodes']: views.setView(content)
def addDirectory(self, items, queue=False): if items == None or len(items) == 0: control.idle() ; sys.exit() sysaddon = sys.argv[0] syshandle = int(sys.argv[1]) addonFanart, addonThumb, artPath = control.addonFanart(), control.addonThumb(), control.artPath() queueMenu = control.lang(32065).encode('utf-8') playRandom = control.lang(32535).encode('utf-8') addToLibrary = control.lang(32551).encode('utf-8') for i in items: try: name = i['name'] if i['image'].startswith('http'): thumb = i['image'] elif not artPath == None: thumb = os.path.join(artPath, i['image']) else: thumb = addonThumb url = '%s?action=%s' % (sysaddon, i['action']) try: url += '&url=%s' % urllib.quote_plus(i['url']) except: pass cm = [] cm.append(('Settings', 'RunPlugin(%s?action=openSettings&query=0.0)' % sysaddon)) cm.append((playRandom, 'RunPlugin(%s?action=random&rtype=movie&url=%s)' % (sysaddon, urllib.quote_plus(i['url'])))) if queue == True: cm.append((queueMenu, 'RunPlugin(%s?action=queueItem)' % sysaddon)) try: cm.append((addToLibrary, 'RunPlugin(%s?action=moviesToLibrary&url=%s)' % (sysaddon, urllib.quote_plus(i['context'])))) except: pass item = control.item(label=name) item.setArt({'icon': thumb, 'thumb': thumb}) if not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) item.addContextMenuItems(cm) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=True) except: pass control.content(syshandle, 'addons') control.directory(syshandle, cacheToDisc=True)
def getSearch(): addDirectoryItem('%s...' % control.lang(30702).encode('utf-8'), '0', 'searchDirectory', '0', '0', '0', '0', '0', {}) addDirectoryItem(control.lang(30703).encode('utf-8'), '0', 'clearSearch', '0', '0', '0', '0', '0', {}) try: def search(): return result = cache.get(search, 600000000, table='rel_srch') for q in result: try: addDirectoryItem('%s...' % q, q, 'searchDirectory2', '0', '0', '0', '0', '0', {}) except: pass except: pass control.directory(int(sys.argv[1]), cacheToDisc=True)
def listEpisodes(self, catid, showid, page, image): syshandle = int(sys.argv[1]) url = self.episodes_link % (showid, page) cookie = 'ssMemberID=%d' % (self.member_id) try: result = client.request(url, cookie=cookie) except: pass link = ''.join(result.splitlines()).replace('\'','"') link = ''.join(link.splitlines()).replace('<i class="fa fa-play-circle-white"></i>','') episodematch = re.compile('class="chapterList">(.+?)</li>').findall(link) for em in episodematch: episodes = re.compile('player-(.+)">(.+)</a>').findall(em) for episode in episodes: name = episode[1].decode('utf-8') url = self.player_link % (episode[0]) self.list.append({'name': name, 'url': urllib.quote_plus(url), 'image': image}) for episode in self.list: name = episode['name'].encode('utf-8') url = episode['url'] image = episode['image'] action = 'sourcePage' query = '?action=%s&image=%s&url=%s&name=%s' % (action, image, url, urllib.quote_plus(name)) url = '%s%s' % (sysaddon, query) item = control.item(name, iconImage=image, thumbnailImage=image) if not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) item.setInfo(type="Video", infoLabels={"Title": name, "OriginalTitle": name}) control.addItem(handle=int(sys.argv[1]), url=url, listitem=item, isFolder=False) # Pagination # paginator = re.compile('<div class="page_list" align="center">(.+?)</ul>').findall(link)[0] # pages = re.compile('>(\d+)</a>').findall(paginator) # nextPage = int(page) + 1 # if nextPage < len(pages): # action = 'listEpisodes' # query = '?action=%s&page=%d&name=%s&catid=%s&showid=%s&image=%s' % (action, nextPage, 'Next Page', catid, showid, image) # url = '%s%s' % (sysaddon, query) # item = control.item('Next Page', iconImage=image, thumbnailImage=image) # if not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) # item.setInfo(type="Video", infoLabels={"Title": 'Next Page', "OriginalTitle": 'Next Page'}) # control.addItem(handle=syshandle, url=url, listitem=item, isFolder=True) control.content(syshandle, 'episodes') control.directory(syshandle, cacheToDisc=True) views.setView('episodes', {'skin.estuary': 55, 'skin.confluence': 50})
def addDirectory(self, items, queue=False, isFolder=True): if items == None or len(items) == 0: control.idle() ; sys.exit() sysaddon = sys.argv[0] syshandle = int(sys.argv[1]) addonFanart, addonThumb, artPath = control.addonFanart(), control.addonThumb(), control.artPath() queueMenu = control.lang(32065).encode('utf-8') playRandom = control.lang(32535).encode('utf-8') addToLibrary = control.lang(32551).encode('utf-8') for i in items: try: name = i['name'] if i['image'].startswith('http'): thumb = i['image'] elif not artPath == None: thumb = os.path.join(artPath, i['image']) else: thumb = addonThumb item = control.item(label=name) if isFolder: url = '%s?action=%s' % (sysaddon, i['action']) try: url += '&url=%s' % urllib.quote_plus(i['url']) except: pass item.setProperty('IsPlayable', 'false') else: url = '%s?action=%s' % (sysaddon, i['action']) try: url += '&url=%s' % i['url'] except: pass item.setProperty('IsPlayable', 'true') item.setInfo("mediatype", "video") item.setInfo("audio", '') item.setArt({'icon': thumb, 'thumb': thumb}) if not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=isFolder) except: pass control.content(syshandle, 'addons') control.directory(syshandle, cacheToDisc=True)
def downloader(): thumb = control.addonThumb() ; fanart = control.addonFanart() status = control.window.getProperty(property + '.status') if not downloadPath == '': item = control.item('[COLOR FF00b8ff]Downloads[/COLOR]', iconImage=thumb, thumbnailImage=thumb) item.addContextMenuItems([], replaceItems=True) item.setProperty('fanart_image', fanart) control.addItem(handle=int(sys.argv[1]), url=downloadPath, listitem=item, isFolder=True) if status == 'downloading': item = control.item('[COLOR red]Stop Downloads[/COLOR]', iconImage=thumb, thumbnailImage=thumb) item.addContextMenuItems([], replaceItems=True) item.setProperty('fanart_image', fanart) control.addItem(handle=int(sys.argv[1]), url=sys.argv[0]+'?action=stopDownload', listitem=item, isFolder=True) else: item = control.item('[COLOR FF00b8ff]Start Downloads[/COLOR]', iconImage=thumb, thumbnailImage=thumb) item.addContextMenuItems([], replaceItems=True) item.setProperty('fanart_image', fanart) control.addItem(handle=int(sys.argv[1]), url=sys.argv[0]+'?action=startDownload', listitem=item, isFolder=True) if status == 'downloading': item = control.item('[COLOR gold]Download Status[/COLOR]', iconImage=thumb, thumbnailImage=thumb) item.addContextMenuItems([], replaceItems=True) item.setProperty('Fanart_Image', fanart) control.addItem(handle=int(sys.argv[1]), url=sys.argv[0]+'?action=statusDownload', listitem=item, isFolder=True) def download(): return [] result = cache.neptune_download_get(download, 600000000, table='rel_dl') for i in result: try: cm = [] cm.append(('Remove from Queue', 'RunPlugin(%s?action=removeDownload&url=%s)' % (sys.argv[0], urllib.quote_plus(i['url'])))) item = control.item(i['name'], iconImage=i['image'], thumbnailImage=i['image']) item.addContextMenuItems(cm, replaceItems=True) item.setProperty('fanart_image', fanart) item.setProperty('Video', 'true') item.setProperty('IsPlayable', 'true') control.addItem(handle=int(sys.argv[1]), url=i['url'], listitem=item) except: pass control.directory(int(sys.argv[1]), cacheToDisc=True)
def add_directory(items): if items is None or len(items) == 0: return sysaddon = sys.argv[0] addon_poster = addon_banner = control.addonInfo('icon') addon_fanart = control.addonInfo('fanart') for i in items: item = control.item(i['name']) url = '%s?action=%s' % (sysaddon, i['action']) item.setArt({'poster': addon_poster, 'banner': addon_banner}) item.setProperty('Fanart_Image', addon_fanart) control.addItem(handle=int(sys.argv[1]), url=url, listitem=item, isFolder=True) control.directory(int(sys.argv[1]), cacheToDisc=True) control.content(int(sys.argv[1]), 'files')
def addDirectory(self, items, queue=False): if items == None or len(items) == 0: control.idle() ; sys.exit() sysaddon = sys.argv[0] syshandle = int(sys.argv[1]) addonFanart = control.addonFanart() addonThumb = control.addonThumb() queueMenu = control.lang(32065).encode('utf-8') for i in items: try: name = i['name'] url = '%s?action=%s' % (sysaddon, i['action']) try: url += '&url=%s' % urllib.quote_plus(i['url']) except: pass cm = [] if queue == True: cm.append((queueMenu, 'RunPlugin(%s?action=queueItem)' % sysaddon)) item = control.item(label=name) if i['image'].startswith('http'): iconIcon = iconThumb = iconPoster = iconBanner = i['image'] else: iconIcon, iconThumb, iconPoster, iconBanner = interface.Icon.pathAll(icon = i['image'], default = addonThumb) item.setArt({'icon': iconIcon, 'thumb': iconThumb, 'poster': iconPoster, 'banner': iconBanner}) if not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) item.addContextMenuItems(cm) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=True) except: pass control.content(syshandle, 'addons') control.directory(syshandle, cacheToDisc=True) interface.traktApi()
def addDirectory(self, items, queue=False): if items == None or len(items) == 0: control.idle() ; sys.exit() sysaddon = sys.argv[0] syshandle = int(sys.argv[1]) addonFanart, addonThumb, artPath = control.addonFanart(), control.addonThumb(), control.artPath() queueMenu = control.lang(32065).encode('utf-8') for i in items: try: name = i['name'] if i['image'].startswith('http://'): thumb = i['image'] elif not artPath == None: thumb = os.path.join(artPath, i['image']) else: thumb = addonThumb url = '%s?action=%s' % (sysaddon, i['action']) try: url += '&url=%s' % urllib.quote_plus(i['url']) except: pass cm = [] if queue == True: cm.append((queueMenu, 'RunPlugin(%s?action=queueItem)' % sysaddon)) item = control.item(label=name) item.setArt({'icon': thumb, 'thumb': thumb}) if not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) item.addContextMenuItems(cm) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=True) except: pass #control.do_block_check(False) control.directory(syshandle, cacheToDisc=True)
def list(self, url): html = client.request(url) data = json.loads(html) sortedData = sorted(data['items'], key=lambda d: int(d['episode']), reverse=True) for item in sortedData: url = self.embedUri % (item['id']) if 'retina_image' in item['images']: icon = item['images']['retina_image'] else: icon = item['images']['nonretina_image'] if 'synopsis' in item: info = item['synopsis'] else: info = 'N/A' self.addDir(item['seriesTitle'], info, url, 'playDutchShow', icon, False) control.content(syshandle, 'episodes') control.directory(syshandle, cacheToDisc=True) views.setView('episodes', {'skin.estuary': 55, 'skin.confluence': 50})
def index(self): url = self.baseUrl % (self.mainList) html = client.request(url) data = json.loads(html) sortedData = sorted(data['items'], key=lambda d: d['title']) for item in sortedData: url = self.baseUrl % (self.showUri % (item['type'], item['id'])) if 'retina_image' in item['images']: icon = item['images']['retina_image'] else: icon = item['images']['nonretina_image'] if 'synopsis' in item: info = item['synopsis'] else: info = 'N/A' self.addDir(item['title'], info, url, 'listDutchShow', icon) control.content(syshandle, 'tvshows') control.directory(syshandle, cacheToDisc=True) views.setView('tvshows', {'skin.estuary': control.getSkin(control.setting('tvshows.viewtype')), 'skin.confluence': 500})
def get_videos(self, url): import scraper_vod as scraper videos, next_page_url = cache.get(scraper.get_videos, 1, url) sysaddon = sys.argv[0] syshandle = int(sys.argv[1]) for video in videos: meta = video sysmeta = urllib.quote_plus(json.dumps(meta)) isFolder = False brplayprovider = 'sexyhot' id_sexyhot = video['id_sexyhot'] title = video['title'] action_url = '%s?action=playvod&provider=%s&id_sexyhot=%s&isFolder=%s&meta=%s' % ( sysaddon, brplayprovider, id_sexyhot, isFolder, sysmeta) item = control.item(label=title) art = { 'poster': video['poster'], 'fanart': video['fanart'], } item.setArt(art) item.setProperty('IsPlayable', 'true') item.setInfo(type='video', infoLabels=meta) control.addItem(handle=syshandle, url=action_url, listitem=item, isFolder=isFolder) if next_page_url: sysurl = urllib.quote_plus(next_page_url) action_url = '%s?action=getVideos&provider=sexyhot&url=%s' % ( sysaddon, sysurl) title = 'More Videos' item = control.item(label=title) art = { 'logo': os.path.join(artPath, 'logo_sexyhot.png'), 'thumb': NEXT_ICON, 'fanart': os.path.join(artPath, 'fanart_sexyhot.png'), } item.setArt(art) item.setProperty('IsPlayable', 'false') item.setInfo(type='video', infoLabels={'title': title}) control.addItem(handle=syshandle, url=action_url, listitem=item, isFolder=True) # control.addSortMethod(int(sys.argv[1]), control.SORT_METHOD_LABEL_IGNORE_FOLDERS) control.content(syshandle, 'movies') control.directory(syshandle, cacheToDisc=False)
def endDirectory(self): control.directory(thishandle, cacheToDisc=True)
def channelDirectory(self, items): if items == None or len(items) == 0: control.idle() ; sys.exit() sysaddon = sys.argv[0] syshandle = int(sys.argv[1]) addonPoster, addonBanner = control.addonPoster(), control.addonBanner() addonFanart, settingFanart = control.addonFanart(), tools.Settings.getBoolean('interface.fanart') try: isOld = False ; control.item().getArt('type') except: isOld = True isPlayable = 'true' if not 'plugin' in control.infoLabel('Container.PluginName') else 'false' playbackMenu = control.lang(32063).encode('utf-8') if control.setting('playback.automatic.enabled') == 'true' else control.lang(32064).encode('utf-8') queueMenu = control.lang(32065).encode('utf-8') refreshMenu = control.lang(32072).encode('utf-8') for i in items: try: # [BUBBLESCODE] #label = '[B]%s[/B] : %s (%s)' % (i['channel'].upper(), i['title'], i['year']) label = '[B]%s[/B][CR]%s (%s)' % (i['channel'].upper(), i['title'], i['year']) # [/BUBBLESCODE] sysname = urllib.quote_plus('%s (%s)' % (i['title'], i['year'])) systitle = urllib.quote_plus(i['title']) imdb, year = i['imdb'], i['year'] meta = dict((k,v) for k, v in i.iteritems() if not v == '0') meta.update({'mediatype': 'movie'}) meta.update({'trailer': '%s?action=trailer&name=%s' % (sysaddon, sysname)}) #meta.update({'trailer': 'plugin://script.extendedinfo/?info=playtrailer&&id=%s' % imdb}) meta.update({'playcount': 0, 'overlay': 6}) try: meta.update({'genre': cleangenre.lang(meta['genre'], self.lang)}) except: pass sysmeta = urllib.quote_plus(json.dumps(meta)) url = self.parameterize('%s?action=play&title=%s&year=%s&imdb=%s&meta=%s&t=%s' % (sysaddon, systitle, year, imdb, sysmeta, self.systime)) sysurl = urllib.quote_plus(url) cm = [] cm.append((queueMenu, 'RunPlugin(%s?action=queueItem)' % sysaddon)) cm.append((refreshMenu, 'RunPlugin(%s?action=refresh)' % sysaddon)) if not self.kidsOnly() and control.setting('downloads.manual.enabled') == 'true': cm.append((control.lang(33585).encode('utf-8'), 'Container.Update(%s?action=downloadsManager)' % (sysaddon))) cm.append((playbackMenu, 'RunPlugin(%s?action=alterSources&url=%s&meta=%s)' % (sysaddon, sysurl, sysmeta))) if isOld == True: cm.append((control.lang2(19033).encode('utf-8'), 'Action(Info)')) item = control.item(label=label) art = {} poster = '0' if poster == '0' and 'poster3' in i: poster = i['poster3'] if poster == '0' and 'poster2' in i: poster = i['poster2'] if poster == '0' and 'poster' in i: poster = i['poster'] icon = '0' if icon == '0' and 'icon3' in i: icon = i['icon3'] if icon == '0' and 'icon2' in i: icon = i['icon2'] if icon == '0' and 'icon' in i: icon = i['icon'] thumb = '0' if thumb == '0' and 'thumb3' in i: thumb = i['thumb3'] if thumb == '0' and 'thumb2' in i: thumb = i['thumb2'] if thumb == '0' and 'thumb' in i: thumb = i['thumb'] banner = '0' if banner == '0' and 'banner3' in i: banner = i['banner3'] if banner == '0' and 'banner2' in i: banner = i['banner2'] if banner == '0' and 'banner' in i: banner = i['banner'] fanart = '0' if settingFanart: if fanart == '0' and 'fanart3' in i: fanart = i['fanart3'] if fanart == '0' and 'fanart2' in i: fanart = i['fanart2'] if fanart == '0' and 'fanart' in i: fanart = i['fanart'] clearlogo = '0' if clearlogo == '0' and 'clearlogo' in i: clearlogo = i['clearlogo'] clearart = '0' if clearart == '0' and 'clearart' in i: clearart = i['clearart'] if poster == '0': poster = addonPoster if icon == '0': icon = poster if thumb == '0': thumb = poster if banner == '0': banner = addonBanner if fanart == '0': fanart = addonFanart if not poster == '0' and not poster == None: art.update({'poster' : poster}) if not icon == '0' and not icon == None: art.update({'icon' : icon}) if not thumb == '0' and not thumb == None: art.update({'thumb' : thumb}) if not banner == '0' and not banner == None: art.update({'banner' : banner}) if not clearlogo == '0' and not clearlogo == None: art.update({'clearlogo' : clearlogo}) if not clearart == '0' and not clearart == None: art.update({'clearart' : clearart}) if not fanart == '0' and not fanart == None: item.setProperty('Fanart_Image', fanart) item.setArt(art) item.addContextMenuItems(cm) item.setProperty('IsPlayable', isPlayable) item.setInfo(type='Video', infoLabels = meta) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=False) except: pass control.content(syshandle, 'files') control.directory(syshandle, cacheToDisc=True)
def addDirectory(self, items, queue=False): if items is None or len(items) == 0: return sysaddon = argv[0] addonPoster = addonBanner = control.addonInfo('icon') addonFanart = control.addonInfo('fanart') playlist = control.playlist if not queue is False: playlist.clear() try: devmode = True if 'testings.xml' in control.listDir(control.dataPath)[1] else False except: devmode = False mode = [i['content'] for i in items if 'content' in i] if 'movies' in mode: mode = 'movies' elif 'tvshows' in mode: mode = 'tvshows' elif 'seasons' in mode: mode = 'seasons' elif 'episodes' in mode: mode = 'episodes' elif 'videos' in mode: mode = 'videos' else: mode = 'addons' for i in items: try: try: name = control.lang(int(i['name'])) except: name = i['name'] if name == '': name = i['name'] url = '%s?action=%s' % (sysaddon, i['action']) try: url += '&url=%s' % quote_plus(i['url']) except: pass try: url += '&content=%s' % quote_plus(i['content']) except: pass if i['action'] == 'plugin' and 'url' in i: url = i['url'] try: devurl = dict(parse_qsl(urlparse(url).query))['action'] except: devurl = None if devurl == 'developer' and not devmode is True: raise Exception() poster = i['poster'] if 'poster' in i else '' banner = i['banner'] if 'banner' in i else '' fanart = i['fanart'] if 'fanart' in i else '' if not poster: poster = addonPoster if not banner and not poster: banner = addonBanner elif banner == '': banner = poster content = i['content'] if 'content' in i else '' folder = i['folder'] if 'folder' in i else True meta = dict((k, v) for k, v in control.iteritems(i) if v is not None and v != '') cm = [] if content in ['movies', 'tvshows']: meta.update({'trailer': '%s?action=trailer&name=%s' % (sysaddon, quote_plus(name))}) cm.append((control.lang(30707), 'RunPlugin(%s?action=trailer&name=%s)' % (sysaddon, quote_plus(name)))) if content in ['movies', 'tvshows', 'seasons', 'episodes']: cm.append((control.lang(30708), 'XBMC.Action(Info)')) if (folder is False and not '|regex=' in str(i.get('url'))) or (folder is True and content in ['tvshows', 'seasons']): cm.append((control.lang(30723), 'RunPlugin(%s?action=playlist_QueueItem)' % sysaddon)) if content == 'movies': try: dfile = '%s (%s)' % (i['title'], i['year']) except: dfile = name try: cm.append((control.lang(30722), 'RunPlugin(%s?action=addDownload&name=%s&url=%s&image=%s)' % (sysaddon, quote_plus(dfile), quote_plus(i['url']), quote_plus(poster)))) except: pass elif content == 'episodes': try: dfile = '%s S%02dE%02d' % (i['tvshowtitle'], int(i['season']), int(i['episode'])) except: dfile = name try: cm.append((control.lang(30722), 'RunPlugin(%s?action=addDownload&name=%s&url=%s&image=%s)' % (sysaddon, quote_plus(dfile), quote_plus(i['url']), quote_plus(poster)))) except: pass elif content == 'songs': try: cm.append((control.lang(30722), 'RunPlugin(%s?action=addDownload&name=%s&url=%s&image=%s)' % (sysaddon, quote_plus(name), quote_plus(i['url']), quote_plus(poster)))) except: pass if mode == 'movies': cm.append((control.lang(30711), 'RunPlugin(%s?action=tools_addView&content=movies)' % sysaddon)) elif mode == 'tvshows': cm.append((control.lang(30712), 'RunPlugin(%s?action=tools_addView&content=tvshows)' % sysaddon)) elif mode == 'seasons': cm.append((control.lang(30713), 'RunPlugin(%s?action=tools_addView&content=seasons)' % sysaddon)) elif mode == 'episodes': cm.append((control.lang(30714), 'RunPlugin(%s?action=tools_addView&content=episodes)' % sysaddon)) if devmode is True: try: cm.append(('Open in browser', 'RunPlugin(%s?action=browser&url=%s)' % (sysaddon, quote_plus(i['url'])))) except: pass try: item = control.item(label=name, offscreen=True) except: item = control.item(label=name) if fanart == '0': fanart = addonFanart try: item.setArt({'poster': poster, 'fanart': fanart, 'tvshow.poster': poster, 'season.poster': poster, 'banner': banner, 'tvshow.banner': banner, 'season.banner': banner}) except: pass if queue is False: item.setInfo(type='Video', infoLabels = meta) item.addContextMenuItems(cm) control.addItem(handle=int(argv[1]), url=url, listitem=item, isFolder=folder) else: item.setInfo(type='Video', infoLabels = meta) playlist.add(url=url, listitem=item) except: log_utils.error() if not queue is False: return control.player.play(playlist) try: i = items[0] if i['next'] == '': raise Exception() # nextMenu = control.lang(32053) # page = ' [I](%s)[/I]' % str(url.split('&page=', 1)[1]) # nextMenu = '[COLOR skyblue]' + nextMenu + page + '[/COLOR]' url = '%s?action=%s&url=%s' % (sysaddon, i['nextaction'], quote_plus(i['next'])) try: item = control.item(label=control.lang(30500), offscreen=True) except: item = control.item(label=control.lang(30500)) item.setArt({'addonPoster': addonPoster, 'thumb': addonPoster, 'poster': addonPoster, 'fanart': addonFanart, 'tvshow.poster': addonPoster, 'season.poster': addonPoster, 'banner': addonPoster, 'tvshow.banner': addonPoster, 'season.banner': addonPoster}) control.addItem(handle=int(argv[1]), url=url, listitem=item, isFolder=True) except: log_utils.error() if not mode is None: control.content(int(argv[1]), mode) control.directory(int(argv[1]), cacheToDisc=True) if mode in ['movies', 'tvshows', 'seasons', 'episodes']: views.setView(mode, {'skin.estuary': 55})
def addItem(self, title, year, imdb, tvdb, season, episode, tvshowtitle, premiered, meta): try: if 'super.fav' in control.infoLabel('Container.PluginName'): return control.dialog.ok('Exodus', control.lang(30518).encode('utf-8'), '', '') self.sources = self.getSources(title, year, imdb, tvdb, season, episode, tvshowtitle, premiered) if self.sources == []: raise Exception() self.progressDialog = control.progressDialog self.progressDialog.create(control.addonInfo('name'), '') self.progressDialog.update(0, control.lang(30515).encode('utf-8'), str(' ')) downloads = True if control.setting( 'downloads') == 'true' and not ( control.setting('movie.download.path') == '' or control.setting('tv.download.path') == '') else False systitle = urllib.quote_plus( '%s (%s)' % (title, year) if tvshowtitle == None or season == None or episode == None else '%s S%02dE%02d' % (tvshowtitle, int(season), int(episode))) sysname = urllib.quote_plus( '%s (%s)' % (title, year) if tvshowtitle == None or season == None or episode == None else tvshowtitle) sysaddon = sys.argv[0] meta = meta2 = json.loads(meta) mediatype = 'movie' if tvshowtitle == None else 'episode' meta['mediatype'] = mediatype try: meta.update({ 'trailer': '%s?action=trailer&name=%s' % (sysaddon, sysname) }) except: pass try: meta2.update({ 'trailer': '%s?action=trailer&name=%s' % (sysaddon, sysname) }) except: pass try: del meta['year'] except: pass try: del meta2['year'] except: pass poster = meta['poster'] if 'poster' in meta else '0' banner = meta['banner'] if 'banner' in meta else '0' thumb = meta['thumb'] if 'thumb' in meta else poster fanart = meta['fanart'] if 'fanart' in meta else '0' if poster == '0': poster = control.addonPoster() if banner == '0' and poster == '0': banner = control.addonBanner() elif banner == '0': banner = poster if thumb == '0' and fanart == '0': thumb = control.addonFanart() elif thumb == '0': thumb = fanart if control.setting('fanart') == 'true' and not fanart == '0': pass else: fanart = control.addonFanart() sysimage = urllib.quote_plus(poster) for i in range(len(self.sources)): try: #if self.progressDialog.iscanceled(): break self.progressDialog.update( int((100 / float(len(self.sources))) * i)) label = self.sources[i]['label'] syssource = urllib.quote_plus(json.dumps([self.sources[i] ])) url = '%s?action=playItem&source=%s' % (sysaddon, syssource) cm = [] cm.append((control.lang(30504).encode('utf-8'), 'RunPlugin(%s?action=queueItem)' % sysaddon)) if downloads == True: cm.append((control.lang(30505).encode( 'utf-8' ), 'RunPlugin(%s?action=download&name=%s&image=%s&source=%s)' % (sysaddon, systitle, sysimage, syssource))) cm.append((control.lang(30294).encode('utf-8'), 'RunPlugin(%s?action=refresh)' % sysaddon)) item = control.item(label=label, iconImage='DefaultVideo.png', thumbnailImage=thumb) try: item.setArt({ 'icon': poster, 'thumb': poster, 'poster': poster, 'tvshow.poster': poster, 'season.poster': poster, 'banner': banner, 'tvshow.banner': banner, 'season.banner': banner }) except: pass try: item.setInfo(type='video', infoLabels=meta) except: item.setInfo(type='video', infoLabels=meta2) if not fanart == None: item.setProperty('Fanart_Image', fanart) item.setProperty('video', 'true') item.addContextMenuItems(cm, replaceItems=True) control.addItem(handle=int(sys.argv[1]), url=url, listitem=item, isFolder=False) except: pass control.content(int(sys.argv[1]), 'files') control.directory(int(sys.argv[1]), cacheToDisc=True) try: self.progressDialog.close() except: pass except: control.infoDialog(control.lang(30501).encode('utf-8')) try: self.progressDialog.close() except: pass
def endDirectory(self): # control.do_block_check(False) control.directory(syshandle, cacheToDisc=True)
def tvshowDirectory(self, items): if items == None or len(items) == 0: control.idle() ; sys.exit() sysaddon = sys.argv[0] syshandle = int(sys.argv[1]) addonPoster, addonBanner = control.addonPoster(), control.addonBanner() addonFanart, settingFanart = control.addonFanart(), control.setting('fanart') traktCredentials = trakt.getTraktCredentialsInfo() try: isOld = False ; control.item().getArt('type') except: isOld = True indicators = playcount.getTVShowIndicators(refresh=True) if action == 'tvshows' else playcount.getTVShowIndicators() flatten = True if control.setting('flatten.tvshows') == 'true' else False watchedMenu = control.lang(32068).encode('utf-8') if trakt.getTraktIndicatorsInfo() == True else control.lang(32066).encode('utf-8') unwatchedMenu = control.lang(32069).encode('utf-8') if trakt.getTraktIndicatorsInfo() == True else control.lang(32067).encode('utf-8') queueMenu = control.lang(32065).encode('utf-8') traktManagerMenu = control.lang(32070).encode('utf-8') nextMenu = control.lang(32053).encode('utf-8') playRandom = control.lang(32535).encode('utf-8') for i in items: try: label = i['title'] systitle = sysname = urllib.quote_plus(i['originaltitle']) sysimage = urllib.quote_plus(i['poster']) imdb, tvdb, year = i['imdb'], i['tvdb'], i['year'] meta = dict((k,v) for k, v in i.iteritems() if not v == '0') meta.update({'code': imdb, 'imdbnumber': imdb, 'imdb_id': imdb}) meta.update({'tvdb_id': tvdb}) meta.update({'mediatype': 'tvshow'}) meta.update({'trailer': '%s?action=trailer&name=%s' % (sysaddon, sysname)}) if not 'duration' in i: meta.update({'duration': '60'}) elif i['duration'] == '0': meta.update({'duration': '60'}) try: meta.update({'duration': str(int(meta['duration']) * 60)}) except: pass try: meta.update({'genre': cleangenre.lang(meta['genre'], self.lang)}) except: pass try: overlay = int(playcount.getTVShowOverlay(indicators, tvdb)) if overlay == 7: meta.update({'playcount': 1, 'overlay': 7}) else: meta.update({'playcount': 0, 'overlay': 6}) except: pass if flatten == True: url = '%s?action=episodes&tvshowtitle=%s&year=%s&imdb=%s&tvdb=%s' % (sysaddon, systitle, year, imdb, tvdb) else: url = '%s?action=seasons&tvshowtitle=%s&year=%s&imdb=%s&tvdb=%s' % (sysaddon, systitle, year, imdb, tvdb) cm = [] cm.append((playRandom, 'RunPlugin(%s?action=random&rtype=season&tvshowtitle=%s&year=%s&imdb=%s&tvdb=%s)' % (sysaddon, urllib.quote_plus(systitle), urllib.quote_plus(year), urllib.quote_plus(imdb), urllib.quote_plus(tvdb)))) cm.append((queueMenu, 'RunPlugin(%s?action=queueItem)' % sysaddon)) #cm.append((watchedMenu, 'RunPlugin(%s?action=tvPlaycount&name=%s&imdb=%s&tvdb=%s&query=7)' % (sysaddon, systitle, imdb, tvdb))) #cm.append((unwatchedMenu, 'RunPlugin(%s?action=tvPlaycount&name=%s&imdb=%s&tvdb=%s&query=6)' % (sysaddon, systitle, imdb, tvdb))) if traktCredentials == True: cm.append((traktManagerMenu, 'RunPlugin(%s?action=traktManager&name=%s&tvdb=%s&content=tvshow)' % (sysaddon, sysname, tvdb))) if isOld == True: cm.append((control.lang2(19033).encode('utf-8'), 'Action(Info)')) item = control.item(label=label) art = {} if 'poster' in i and not i['poster'] == '0': art.update({'icon': i['poster'], 'thumb': i['poster'], 'poster': i['poster']}) #elif 'poster2' in i and not i['poster2'] == '0': #art.update({'icon': i['poster2'], 'thumb': i['poster2'], 'poster': i['poster2']}) else: art.update({'icon': addonPoster, 'thumb': addonPoster, 'poster': addonPoster}) if 'banner' in i and not i['banner'] == '0': art.update({'banner': i['banner']}) #elif 'banner2' in i and not i['banner2'] == '0': #art.update({'banner': i['banner2']}) elif 'fanart' in i and not i['fanart'] == '0': art.update({'banner': i['fanart']}) else: art.update({'banner': addonBanner}) if 'clearlogo' in i and not i['clearlogo'] == '0': art.update({'clearlogo': i['clearlogo']}) if 'clearart' in i and not i['clearart'] == '0': art.update({'clearart': i['clearart']}) if settingFanart == 'true' and 'fanart' in i and not i['fanart'] == '0': item.setProperty('Fanart_Image', i['fanart']) #elif settingFanart == 'true' and 'fanart2' in i and not i['fanart2'] == '0': #item.setProperty('Fanart_Image', i['fanart2']) elif not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) item.setArt(art) item.addContextMenuItems(cm) item.setInfo(type='Video', infoLabels = meta) video_streaminfo = {'codec': 'h264'} item.addStreamInfo('video', video_streaminfo) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=True) except: pass try: url = items[0]['next'] if url == '': raise Exception() icon = control.addonNext() url = '%s?action=tvshowPage&url=%s' % (sysaddon, urllib.quote_plus(url)) item = control.item(label=nextMenu) item.setArt({'icon': icon, 'thumb': icon, 'poster': icon, 'banner': icon}) if not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=True) except: pass control.content(syshandle, 'tvshows') control.directory(syshandle, cacheToDisc=True) views.setView('tvshows', {'skin.estuary': 55, 'skin.confluence': 500})
def channelDirectory(self, items): if items == None or len(items) == 0: control.idle() sys.exit() sysaddon = sys.argv[0] syshandle = int(sys.argv[1]) addonPoster, addonBanner = control.addonPoster(), control.addonBanner() addonFanart, settingFanart = control.addonFanart(), control.setting( 'fanart') try: isOld = False control.item().getArt('type') except: isOld = True isPlayable = 'true' if not 'plugin' in control.infoLabel( 'Container.PluginName') else 'false' playbackMenu = control.lang(32063).encode('utf-8') if control.setting( 'hosts.mode') == '2' else control.lang(32064).encode('utf-8') queueMenu = control.lang(32065).encode('utf-8') refreshMenu = control.lang(32072).encode('utf-8') for i in items: try: label = '[B]%s[/B] : %s (%s)' % (i['channel'].upper(), i['title'], i['year']) sysname = urllib.quote_plus('%s (%s)' % (i['title'], i['year'])) systitle = urllib.quote_plus(i['title']) imdb, tmdb, year = i['imdb'], i['tmdb'], i['year'] meta = dict((k, v) for k, v in i.iteritems() if not v == '0') meta.update({ 'code': imdb, 'imdbnumber': imdb, 'imdb_id': imdb }) meta.update({'tmdb_id': tmdb}) meta.update({'mediatype': 'movie'}) meta.update({ 'trailer': '%s?action=trailer&name=%s' % (sysaddon, sysname) }) #meta.update({'trailer': 'plugin://script.extendedinfo/?info=playtrailer&&id=%s' % imdb}) meta.update({'playcount': 0, 'overlay': 6}) try: meta.update( {'genre': cleangenre.lang(meta['genre'], self.lang)}) except: pass sysmeta = urllib.quote_plus(json.dumps(meta)) url = '%s?action=play&title=%s&year=%s&imdb=%s&meta=%s&t=%s' % ( sysaddon, systitle, year, imdb, sysmeta, self.systime) sysurl = urllib.quote_plus(url) cm = [] cm.append( (queueMenu, 'RunPlugin(%s?action=queueItem)' % sysaddon)) cm.append( (refreshMenu, 'RunPlugin(%s?action=refresh)' % sysaddon)) cm.append((playbackMenu, 'RunPlugin(%s?action=alterSources&url=%s&meta=%s)' % (sysaddon, sysurl, sysmeta))) if isOld == True: cm.append( (control.lang2(19033).encode('utf-8'), 'Action(Info)')) item = control.item(label=label) art = {} if 'poster2' in i and not i['poster2'] == '0': art.update({ 'icon': i['poster2'], 'thumb': i['poster2'], 'poster': i['poster2'] }) elif 'poster' in i and not i['poster'] == '0': art.update({ 'icon': i['poster'], 'thumb': i['poster'], 'poster': i['poster'] }) else: art.update({ 'icon': addonPoster, 'thumb': addonPoster, 'poster': addonPoster }) art.update({'banner': addonBanner}) if settingFanart == 'true' and 'fanart' in i and not i[ 'fanart'] == '0': item.setProperty('Fanart_Image', i['fanart']) elif not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) item.setArt(art) item.addContextMenuItems(cm) item.setProperty('IsPlayable', isPlayable) item.setInfo(type='Video', infoLabels=meta) video_streaminfo = {'codec': 'h264'} item.addStreamInfo('video', video_streaminfo) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=False) except: pass control.content(syshandle, 'files') control.directory(syshandle, cacheToDisc=True)
def add_directory(self, items, stype=0, sort=0, status=0, sgenre=[]): if items is None or len(items) == 0: return # print items sysaddon = sys.argv[0] addon_poster = addon_banner = control.addonInfo('icon') addon_fanart = control.addonInfo('fanart') # from resources.lib.modules import playcount # indicators = playcount.getTVShowIndicators(refresh=True) mode = 'tvshows' for i in items: # try: print i tvshowtitle = i['title'] anime_id = i['anime_id'] if anime_id is None: continue duration = i['duration'] if duration is 0 or duration is None: duration = 24 * 60 else: duration = duration * 60 anime_id = i['anime_id'] animetype = int(i['type']) # print "atype" # if animetype is 2: # episode_id = 0 # try: # episode_id = i['episodes'].keys()[0] # except: # pass # if episode_id is 0: continue # # url = '%s?action=play' % sysaddon # try: # url += '&anime_id=%s&episode_id=%s' % (anime_id, episode_id) # except: # pass # else: ep1link = "https://masterani.me/anime/watch/" + i['slug'] + "/1" if animetype == 2: url = '%s?action=play' % sysaddon try: url += '&anime_id=%s&episode_id=%s' % (anime_id, ep1link) except: pass else: url = '%s?action=get_episodes' % sysaddon try: url += '&anime_id=%s' % anime_id except: pass plot = i['plot'] if plot is u'' or plot is None: plot = "No overview of episode available at this time." episode = len(i['episodes']) if 'episodes' in i else 0 try: if 'episode_count' in i: episode = int(i['episode_count']) except: pass if episode == None or episode == 0: episode = 'Ongoing' rating = i['rating'] if rating is None or rating is 0: rating = 0.1 genre = i['genre'] if 'fanart' in i: if len(i['fanart']) > 0: fanart = i['fanart'][random.randint(0, len(i['fanart']) - 1)] fanart = self.fanarturl % fanart else: fanart = addon_fanart else: fanart = addon_fanart if i['poster'] is not None: poster = self.posterurl % i['poster'] else: poster = addon_poster premiered = i['premiered'] num_watched = Watched().watched(anime_id) # tvdb = i['tvdb'] # if tvdb is not 0: # print playcount.getTVShowOverlay(indicators, str(tvdb)) # print "%s, %s" % (tvdb, trakt.getTraktShowID(tvdb)) # except: pass if num_watched is None: num_watched = 0 #if episode is None: episode = 0 # print "%s, %s" % (episode, num_watched) iswatched = True if num_watched == episode else False if iswatched: overlay = 7 pcount = 1 else: overlay = 6 pcount = 0 item = control.item(label=tvshowtitle) try: item.setArt({'poster': poster, 'thumb': poster}) item.setInfo(type='Video', infoLabels={ 'Plot': plot, 'Year': premiered, 'premiered': premiered, 'episode': episode, 'duration': duration, 'genre': genre, 'rating': rating, 'overlay': overlay, 'playcount': pcount }) except: pass if animetype is 2: item.addStreamInfo('video', {'codec': 'h264', 'width': 1280, 'height': 720, 'aspect': round(128 / 720)}) item.addStreamInfo('audio', {'codec': 'aac', 'language': 'en', 'channels': 2}) item.setProperty('IsPlayable', 'true') item.setProperty('Fanart_Image', fanart) item.setProperty('WatchedEpisodes', str(num_watched)) try: unwatched = str(episode - num_watched) except: unwatched = 'Ongoing' item.setProperty('UnWatchedEpisodes', unwatched) cm = [] cm.append(("Show Information", 'Action(Info)')) if iswatched: cm.append(('Unmark Show as Watched', 'RunPlugin(%s?action=watched&anime_id=%s&episode_id=%s&unmark=True)' % ( sysaddon, anime_id, -999))) else: cm.append(('Mark Show as Watched', 'RunPlugin(%s?action=watched&anime_id=%s&episode_id=%s)' % ( sysaddon, anime_id, -999))) if Favorites().is_favorite(anime_id): cm.append(('Remove from Favorite Anime List', 'RunPlugin(%s?action=remove_favorite&anime_id=%s)' % (sysaddon, anime_id))) else: cm.append(('Add to Favorite Anime List', 'RunPlugin(%s?action=add_favorite&anime_id=%s)' % (sysaddon, anime_id))) item.addContextMenuItems(cm) control.addItem(handle=int(sys.argv[1]), url=url, listitem=item, isFolder=True) # except: # pass if self.current_page < self.last_page: item = control.item(label="Next Page") url = '%s?action=get_by_select' % sysaddon url += '&stype=%s&sort=%s&status=%s&genre=%s&offset=%s' % ( stype, sort, status, sgenre, self.current_page + 1) item.setArt({'poster': addon_poster, 'fanart': addon_fanart}) control.addItem(handle=int(sys.argv[1]), url=url, listitem=item, isFolder=True) control.directory(int(sys.argv[1]), cacheToDisc=True) #control.content(int(sys.argv[1]), mode) views.setView('tvshows', {'skin.confluence': 504})
def addItem(self, title): control.playlist.clear() items = control.window.getProperty(self.itemProperty) items = json.loads(items) if items == None or len(items) == 0: control.idle() sys.exit() meta = control.window.getProperty(self.metaProperty) meta = json.loads(meta) sysaddon = sys.argv[0] syshandle = int(sys.argv[1]) downloads = True if control.setting('downloads') == 'true' and not ( control.setting('movie.download.path') == '' or control.setting('tv.download.path') == '') else False systitle = sysname = urllib.quote_plus(title) if 'tvshowtitle' in meta and 'season' in meta and 'episode' in meta: sysname += urllib.quote_plus( ' S%02dE%02d' % (int(meta['season']), int(meta['episode']))) elif 'year' in meta: sysname += urllib.quote_plus(' (%s)' % meta['year']) poster = meta['poster3'] if 'poster3' in meta else '0' if poster == '0': poster = meta['poster'] if 'poster' in meta else '0' fanart = meta['fanart2'] if 'fanart2' in meta else '0' if fanart == '0': fanart = meta['fanart'] if 'fanart' in meta else '0' thumb = meta['thumb'] if 'thumb' in meta else '0' if thumb == '0': thumb = poster if thumb == '0': thumb = fanart banner = meta['banner'] if 'banner' in meta else '0' if banner == '0': banner = poster if poster == '0': poster = control.addonPoster() if banner == '0': banner = control.addonBanner() if not control.setting('fanart') == 'true': fanart = '0' if fanart == '0': fanart = control.addonFanart() if thumb == '0': thumb = control.addonFanart() sysimage = urllib.quote_plus(poster.encode('utf-8')) downloadMenu = control.lang(32403).encode('utf-8') for i in range(len(items)): try: label = items[i]['label'] syssource = urllib.quote_plus(json.dumps([items[i]])) sysurl = '%s?action=playItem&title=%s&source=%s' % ( sysaddon, systitle, syssource) cm = [] if downloads == True: cm.append(( downloadMenu, 'RunPlugin(%s?action=download&name=%s&image=%s&source=%s)' % (sysaddon, sysname, sysimage, syssource))) item = control.item(label=label) item.setArt({ 'icon': thumb, 'thumb': thumb, 'poster': poster, 'banner': banner }) item.setProperty('Fanart_Image', fanart) video_streaminfo = {'codec': 'h264'} item.addStreamInfo('video', video_streaminfo) item.addContextMenuItems(cm) item.setInfo(type='Video', infoLabels=meta) control.addItem(handle=syshandle, url=sysurl, listitem=item, isFolder=False) except: pass control.content(syshandle, 'files') control.directory(syshandle, cacheToDisc=True)
def seasonDirectory(self, items): if not items: # with reuselanguageinvoker on an empty directory must be loaded, do not use sys.exit() control.hide() control.notification(title=32054, message=33049) sysaddon, syshandle = argv[0], int(argv[1]) is_widget = 'plugin' not in control.infoLabel('Container.PluginName') settingFanart = control.setting('fanart') == 'true' addonPoster, addonFanart, addonBanner = control.addonPoster( ), control.addonFanart(), control.addonBanner() try: indicators = playcount.getSeasonIndicators(items[0]['imdb'], refresh=True) except: indicators = None unwatchedEnabled = control.setting( 'tvshows.unwatched.enabled') == 'true' if trakt.getTraktIndicatorsInfo(): watchedMenu, unwatchedMenu = control.lang(32068), control.lang( 32069) else: watchedMenu, unwatchedMenu = control.lang(32066), control.lang( 32067) traktManagerMenu, queueMenu = control.lang(32070), control.lang(32065) showPlaylistMenu, clearPlaylistMenu = control.lang( 35517), control.lang(35516) labelMenu, playRandom = control.lang(32055), control.lang(32535) addToLibrary = control.lang(32551) try: multi = [i['tvshowtitle'] for i in items] except: multi = [] multi = True if len( [x for y, x in enumerate(multi) if x not in multi[:y]]) > 1 else False for i in items: try: imdb, tmdb, tvdb, year, season = i.get('imdb', ''), i.get( 'tmdb', ''), i.get('tvdb', ''), i.get('year', ''), i.get('season') title = i.get('tvshowtitle') label = '%s %s' % (labelMenu, i.get('season')) if not self.season_special and self.showspecials: self.season_special = True if int(season) == 0 else False try: if i['unaired'] == 'true': label = '[COLOR %s][I]%s[/I][/COLOR]' % ( self.unairedcolor, label) except: pass systitle = quote_plus(title) meta = dict((k, v) for k, v in control.iteritems(i) if v is not None and v != '') # setting mediatype to "season" causes "Infomation" and "play trailer" to not be available in some skins meta.update( { 'code': imdb, 'imdbnumber': imdb, 'mediatype': 'tvshow', 'tag': [imdb, tmdb] } ) # "tag" and "tagline" for movies only, but works in my skin mod so leave try: meta.update( {'genre': cleangenre.lang(meta['genre'], self.lang)}) except: pass # First check thumbs, since they typically contains the seasons poster. The normal poster contains the show poster. poster = meta.get('thumb') or meta.get('poster3') or meta.get( 'poster2') or meta.get('poster') or addonPoster season_poster = meta.get('season_poster') or poster landscape = meta.get('landscape') fanart = '' if settingFanart: fanart = meta.get('fanart3') or meta.get( 'fanart2') or meta.get( 'fanart') or landscape or addonFanart thumb = season_poster icon = meta.get('icon') or poster banner = meta.get('banner3') or meta.get( 'banner2') or meta.get('banner') or addonBanner art = {} art.update({ 'poster': season_poster, 'tvshow.poster': poster, 'season.poster': season_poster, 'fanart': fanart, 'icon': icon, 'thumb': thumb, 'banner': banner, 'clearlogo': meta.get('clearlogo'), 'clearart': meta.get('clearart'), 'landscape': landscape }) for k in ('poster2', 'poster3', 'fanart2', 'fanart3', 'banner2', 'banner3'): meta.pop(k, None) meta.update({ 'poster': poster, 'fanart': fanart, 'banner': banner, 'thumb': thumb, 'icon': icon }) ####-Context Menu and Overlays-#### cm = [] if self.traktCredentials: cm.append(( traktManagerMenu, 'RunPlugin(%s?action=tools_traktManager&name=%s&imdb=%s&tvdb=%s&season=%s)' % (sysaddon, systitle, imdb, tvdb, season))) try: overlay = int( playcount.getSeasonOverlay(indicators, imdb, tvdb, season)) watched = (overlay == 5) if watched: meta.update({'playcount': 1, 'overlay': 5}) cm.append(( unwatchedMenu, 'RunPlugin(%s?action=playcount_TVShow&name=%s&imdb=%s&tvdb=%s&season=%s&query=4)' % (sysaddon, systitle, imdb, tvdb, season))) else: meta.update({'playcount': 0, 'overlay': 4}) cm.append(( watchedMenu, 'RunPlugin(%s?action=playcount_TVShow&name=%s&imdb=%s&tvdb=%s&season=%s&query=5)' % (sysaddon, systitle, imdb, tvdb, season))) except: pass sysmeta = quote_plus(jsdumps(meta)) cm.append(( playRandom, 'RunPlugin(%s?action=random&rtype=episode&tvshowtitle=%s&year=%s&imdb=%s&tmdb=%s&tvdb=%s&meta=%s&season=%s)' % (sysaddon, systitle, year, imdb, tmdb, tvdb, sysmeta, season))) cm.append((queueMenu, 'RunPlugin(%s?action=playlist_QueueItem&name=%s)' % (sysaddon, systitle))) cm.append((showPlaylistMenu, 'RunPlugin(%s?action=playlist_Show)' % sysaddon)) cm.append((clearPlaylistMenu, 'RunPlugin(%s?action=playlist_Clear)' % sysaddon)) cm.append(( addToLibrary, 'RunPlugin(%s?action=library_tvshowToLibrary&tvshowtitle=%s&year=%s&imdb=%s&tmdb=%s&tvdb=%s)' % (sysaddon, systitle, year, imdb, tmdb, tvdb))) cm.append( ('[COLOR red]Venom Settings[/COLOR]', 'RunPlugin(%s?action=tools_openSettings)' % sysaddon)) #################################### url = '%s?action=episodes&tvshowtitle=%s&year=%s&imdb=%s&tmdb=%s&tvdb=%s&meta=%s&season=%s' % ( sysaddon, systitle, year, imdb, tmdb, tvdb, sysmeta, season) try: item = control.item(label=label, offscreen=True) except: item = control.item(label=label) if 'castandart' in i: item.setCast(i['castandart']) item.setArt(art) if unwatchedEnabled: try: count = playcount.getSeasonCount( imdb, season, self.season_special ) # self.season_special is just a flag to set if a season special exists and we are set to show it if count: item.setProperties({ 'WatchedEpisodes': str(count['watched']), 'UnWatchedEpisodes': str(count['unwatched']) }) else: item.setProperties( { 'WatchedEpisodes': '0', 'UnWatchedEpisodes': str( meta.get('counts', {}).get(str(season), '')) } ) # temp use TMDb's season-episode count for threads not finished....next load counts will update with trakt data except: pass try: item.setProperties({ 'TotalSeasons': str(meta.get('total_seasons', '')), 'TotalEpisodes': str(meta.get('total_episodes', '')) }) except: pass #da hell with 17 users if is_widget: item.setProperty('isVenom_widget', 'true') try: # Year is the shows year, not the seasons year. Extract year from premier date for InfoLabels to have "season_year". season_year = re.findall(r'(\d{4})', i.get('premiered', ''))[0] meta.update({'year': season_year}) except: pass item.setUniqueIDs({'imdb': imdb, 'tmdb': tmdb, 'tvdb': tvdb}) item.setProperty('IsPlayable', 'false') item.setInfo(type='video', infoLabels=control.metadataClean(meta)) item.addContextMenuItems(cm) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=True) except: log_utils.error() try: control.property(syshandle, 'showplot', items[0]['plot']) except: pass control.content(syshandle, 'seasons') control.directory(syshandle, cacheToDisc=True) views.setView('seasons', {'skin.estuary': 55, 'skin.confluence': 500})
def add_directory(self, items, mode=True): if items is None or len(items) == 0: return sysaddon = sys.argv[0] addon_poster = addon_banner = control.addonInfo('icon') addon_fanart = control.addonInfo('fanart') mode = 'episodes' for i in items: try: episode_link = i['episodelink'] tvshowtitle = i['tvshowtitle'] anime_id = i['anime_id'] episode_id = i['episode_id'] if 'episode_id' in i else 0 if episode_id is 0: continue duration = i['duration'] if 'duration' in i else 0 if duration is 0 or duration is None: duration = 24 * 60 else: duration = duration * 60 url = '%s?action=play' % sysaddon try: url += '&anime_id=%s&episode_id=%s' % (anime_id, episode_link) except: pass episodetitle = i['title'] plot = i['plot'] if plot is u'' or plot is None: plot = "No overview of episode available at this time." season = 1 episode = i['episode'] if i['poster'] is not None: poster = self.posterurl % i['poster'] else: poster = addon_poster if i['fanart'] is not None: fanart = self.fanarturl % i['fanart'] else: fanart = addon_fanart premiered = i['premiered'] genre = [g['name'] for g in i['genre']] genre = ' / '.join(genre) iswatched = Watched().watched(anime_id, episode_id) if iswatched: overlay = 7 playcount = 1 else: overlay = 6 playcount = 0 if episodetitle is not None: label = "%s - %sx%s - %s" % (tvshowtitle, int(season), int(episode), episodetitle) else: label = "%s - %sx%s" % (tvshowtitle, int(season), int(episode)) item = control.item(label=label) try: item.setArt({'poster': poster, 'fanart': fanart}) item.setInfo(type='Video', infoLabels={ 'Plot': plot, 'Year': premiered, 'premiered': premiered, 'overlay': overlay, 'playcount': playcount, 'episode': episode, 'duration': duration, 'genre': genre, }) except: pass item.setProperty('Fanart_Image', fanart) # item.setProperty('Video', 'true') # item.setProperty('IsPlayable', 'true') item.setProperty('startoffset', '0') item.setProperty('resumetime', '0') item.setProperty('totaltime', '1') item.addStreamInfo('video', {'codec': 'h264', 'width': 1280, 'height': 720, 'aspect': round(128 / 720)}) item.addStreamInfo('audio', {'codec': 'aac', 'language': 'en', 'channels': 2}) cm = [] cm.append( ('Browse anime', 'Container.Update(%s?action=get_episodes&anime_id=%s)' % (sysaddon, anime_id))) if iswatched: cm.append( ('Unmark as Watched', 'RunPlugin(%s?action=watched&anime_id=%s&episode_id=%s&unmark=True)' % ( sysaddon, anime_id, episode_id))) else: cm.append(('Mark as Watched', 'RunPlugin(%s?action=watched&anime_id=%s&episode_id=%s)' % ( sysaddon, anime_id, episode_id))) item.addContextMenuItems(cm) control.addItem(handle=int(sys.argv[1]), url=url, listitem=item, isFolder=False) except: pass control.directory(int(sys.argv[1]), cacheToDisc=True) control.content(int(sys.argv[1]), mode) views.setView('episodes', {'skin.confluence': 504})
def endDirectory(): control.directory(int(sys.argv[1]), cacheToDisc=True)
def tvshowDirectory(self, items): if items == None or len(items) == 0: return isFolder = True if control.setting('autoplay') == 'false' and control.setting('hosts.mode') == '1' else False isFolder = False if control.window.getProperty('PseudoTVRunning') == 'True' else isFolder traktCredentials = trakt.getTraktCredentialsInfo() indicators = playcount.getTVShowIndicators() addonPoster, addonBanner = control.addonPoster(), control.addonBanner() addonFanart, settingFanart = control.addonFanart(), control.setting('fanart') sysaddon = sys.argv[0] try: favitems = favourites.getFavourites('tvshows') favitems = [i[0] for i in favitems] except: pass for i in items: try: label = i['title'] systitle = sysname = urllib.quote_plus(i['originaltitle']) sysimage = urllib.quote_plus(i['poster']) imdb, tvdb, year = i['imdb'], i['tvdb'], i['year'] poster, banner, fanart = i['poster'], i['banner'], i['fanart'] if banner == '0' and not poster == '0': banner = poster if poster == '0': poster = addonPoster if banner == '0': banner = addonBanner meta = dict((k,v) for k, v in i.iteritems() if not v == '0') meta.update({'trailer': '%s?action=trailer&name=%s' % (sysaddon, sysname)}) if i['duration'] == '0': meta.update({'duration': '60'}) try: meta.update({'duration': str(int(meta['duration']) * 60)}) except: pass try: meta.update({'genre': cleangenre.lang(meta['genre'], self.lang)}) except: pass sysmeta = urllib.quote_plus(json.dumps(meta)) url = '%s?action=seasons&tvshowtitle=%s&year=%s&imdb=%s&tvdb=%s' % (sysaddon, systitle, year, imdb, tvdb) try: overlay = int(playcount.getTVShowOverlay(indicators, tvdb)) if overlay == 7: meta.update({'playcount': 1, 'overlay': 7}) else: meta.update({'playcount': 0, 'overlay': 6}) except: pass cm = [] if isFolder == False: cm.append((control.lang(30232).encode('utf-8'), 'RunPlugin(%s?action=queueItem)' % sysaddon)) if traktCredentials == True: cm.append((control.lang(30236).encode('utf-8'), 'RunPlugin(%s?action=traktManager&name=%s&tvdb=%s&content=tvshow)' % (sysaddon, sysname, tvdb))) if action == 'tvFavourites': cm.append((control.lang(30238).encode('utf-8'), 'RunPlugin(%s?action=deleteFavourite&meta=%s&content=tvshows)' % (sysaddon, sysmeta))) elif action.startswith('tvSearch'): cm.append((control.lang(30237).encode('utf-8'), 'RunPlugin(%s?action=addFavourite&meta=%s&query=0&content=tvshows)' % (sysaddon, sysmeta))) else: if not imdb in favitems and not tvdb in favitems: cm.append((control.lang(30237).encode('utf-8'), 'RunPlugin(%s?action=addFavourite&meta=%s&content=tvshows)' % (sysaddon, sysmeta))) else: cm.append((control.lang(30238).encode('utf-8'), 'RunPlugin(%s?action=deleteFavourite&meta=%s&content=tvshows)' % (sysaddon, sysmeta))) cm.append((control.lang(30242).encode('utf-8'), 'RunPlugin(%s?action=trailer&name=%s)' % (sysaddon, sysname))) cm.append((control.lang(30233).encode('utf-8'), 'Action(Info)')) cm.append((control.lang(30234).encode('utf-8'), 'RunPlugin(%s?action=tvPlaycount&name=%s&imdb=%s&tvdb=%s&query=7)' % (sysaddon, systitle, imdb, tvdb))) cm.append((control.lang(30235).encode('utf-8'), 'RunPlugin(%s?action=tvPlaycount&name=%s&imdb=%s&tvdb=%s&query=6)' % (sysaddon, systitle, imdb, tvdb))) cm.append((control.lang(30240).encode('utf-8'), 'RunPlugin(%s?action=addView&content=tvshows)' % sysaddon)) item = control.item(label=label, iconImage=poster, thumbnailImage=poster) try: item.setArt({'poster': poster, 'tvshow.poster': poster, 'season.poster': poster, 'banner': banner, 'tvshow.banner': banner, 'season.banner': banner}) except: pass if settingFanart == 'true' and not fanart == '0': item.setProperty('Fanart_Image', fanart) elif not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) item.setInfo(type='Video', infoLabels = meta) item.setProperty('Video', 'true') item.addContextMenuItems(cm, replaceItems=True) control.addItem(handle=int(sys.argv[1]), url=url, listitem=item, isFolder=True) except: pass try: url = items[0]['next'] if url == '': raise Exception() url = '%s?action=tvshows&url=%s' % (sysaddon, urllib.quote_plus(url)) addonNext = control.addonNext() item = control.item(label=control.lang(30241).encode('utf-8'), iconImage=addonNext, thumbnailImage=addonNext) item.addContextMenuItems([], replaceItems=False) if not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) control.addItem(handle=int(sys.argv[1]), url=url, listitem=item, isFolder=True) except: pass control.content(int(sys.argv[1]), 'tvshows') control.directory(int(sys.argv[1]), cacheToDisc=True) views.setView('tvshows', {'skin.confluence': 500})
def movieDirectory(self, items): if items == None or len(items) == 0: control.idle() ; sys.exit() sysaddon = sys.argv[0] syshandle = int(sys.argv[1]) addonPoster, addonBanner = control.addonPoster(), control.addonBanner() addonFanart, settingFanart = control.addonFanart(), control.setting('fanart') traktCredentials = trakt.getTraktCredentialsInfo() try: isOld = False ; control.item().getArt('type') except: isOld = True isPlayable = 'true' if not 'plugin' in control.infoLabel('Container.PluginName') else 'false' indicators = playcount.getMovieIndicators(refresh=True) if action == 'movies' else playcount.getMovieIndicators() playbackMenu = control.lang(32063).encode('utf-8') if control.setting('hosts.mode') == '2' else control.lang(32064).encode('utf-8') #watchedMenu = control.lang(32068).encode('utf-8') if trakt.getTraktIndicatorsInfo() == True else control.lang(32066).encode('utf-8') #unwatchedMenu = control.lang(32069).encode('utf-8') if trakt.getTraktIndicatorsInfo() == True else control.lang(32067).encode('utf-8') queueMenu = control.lang(32065).encode('utf-8') traktManagerMenu = control.lang(32070).encode('utf-8') nextMenu = control.lang(32053).encode('utf-8') for i in items: try: label = '%s (%s)' % (i['title'], i['year']) imdb, title, year = i['imdb'], i['originaltitle'], i['year'] sysname = urllib.quote_plus('%s (%s)' % (title, year)) systitle = urllib.quote_plus(title) meta = dict((k,v) for k, v in i.iteritems() if not v == '0') meta.update({'code': imdb, 'imdbnumber': imdb, 'imdb_id': imdb}) meta.update({'mediatype': 'movie'}) meta.update({'trailer': '%s?action=trailer&name=%s' % (sysaddon, sysname)}) #meta.update({'trailer': 'plugin://script.extendedinfo/?info=playtrailer&&id=%s' % imdb}) if not 'duration' in i: meta.update({'duration': '120'}) elif i['duration'] == '0': meta.update({'duration': '120'}) try: meta.update({'duration': str(int(meta['duration']) * 60)}) except: pass try: meta.update({'genre': cleangenre.lang(meta['genre'], self.lang)}) except: pass sysmeta = urllib.quote_plus(json.dumps(meta)) url = '%s?action=play&title=%s&year=%s&imdb=%s&meta=%s&t=%s' % (sysaddon, systitle, year, imdb, sysmeta, self.systime) sysurl = urllib.quote_plus(url) path = '%s?action=play&title=%s&year=%s&imdb=%s' % (sysaddon, systitle, year, imdb) cm = [] cm.append((queueMenu, 'RunPlugin(%s?action=queueItem)' % sysaddon)) try: overlay = int(playcount.getMovieOverlay(indicators, imdb)) if overlay == 7: cm.append((unwatchedMenu, 'RunPlugin(%s?action=moviePlaycount&imdb=%s&query=6)' % (sysaddon, imdb))) meta.update({'playcount': 1, 'overlay': 7}) else: cm.append((watchedMenu, 'RunPlugin(%s?action=moviePlaycount&imdb=%s&query=7)' % (sysaddon, imdb))) meta.update({'playcount': 0, 'overlay': 6}) except: pass if traktCredentials == True: cm.append((traktManagerMenu, 'RunPlugin(%s?action=traktManager&name=%s&imdb=%s&content=movie)' % (sysaddon, sysname, imdb))) cm.append((playbackMenu, 'RunPlugin(%s?action=alterSources&url=%s&meta=%s)' % (sysaddon, sysurl, sysmeta))) if isOld == True: cm.append((control.lang2(19033).encode('utf-8'), 'Action(Info)')) item = control.item(label=label) art = {} if 'poster3' in i and not i['poster3'] == '0': art.update({'icon': i['poster3'], 'thumb': i['poster3'], 'poster': i['poster3']}) elif 'poster' in i and not i['poster'] == '0': art.update({'icon': i['poster'], 'thumb': i['poster'], 'poster': i['poster']}) elif 'poster2' in i and not i['poster2'] == '0': art.update({'icon': i['poster2'], 'thumb': i['poster2'], 'poster': i['poster2']}) else: art.update({'icon': addonPoster, 'thumb': addonPoster, 'poster': addonPoster}) if 'banner' in i and not i['banner'] == '0': art.update({'banner': i['banner']}) else: art.update({'banner': addonBanner}) if 'clearlogo' in i and not i['clearlogo'] == '0': art.update({'clearlogo': i['clearlogo']}) if 'clearart' in i and not i['clearart'] == '0': art.update({'clearart': i['clearart']}) if settingFanart == 'true' and 'fanart2' in i and not i['fanart2'] == '0': item.setProperty('Fanart_Image', i['fanart2']) elif settingFanart == 'true' and 'fanart' in i and not i['fanart'] == '0': item.setProperty('Fanart_Image', i['fanart']) elif not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) item.setArt(art) item.addContextMenuItems(cm) item.setProperty('IsPlayable', isPlayable) item.setInfo(type='Video', infoLabels = meta) video_streaminfo = {'codec': 'h264'} item.addStreamInfo('video', video_streaminfo) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=False) except: pass try: url = items[0]['next'] if url == '': raise Exception() icon = control.addonNext() url = '%s?action=moviePage&url=%s' % (sysaddon, urllib.quote_plus(url)) item = control.item(label=nextMenu) item.setArt({'icon': icon, 'thumb': icon, 'poster': icon, 'banner': icon}) if not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=True) except: pass control.content(syshandle, 'movies') control.directory(syshandle, cacheToDisc=True) views.setView('movies', {'skin.estuary': 55, 'skin.confluence': 500})
def downloader(): thumb = control.addonThumb() fanart = control.addonFanart() status = control.window.getProperty(property + '.status') if not downloadPath == '': item = control.item('[COLOR FF00b8ff]Downloads[/COLOR]', iconImage=thumb, thumbnailImage=thumb) item.addContextMenuItems([], replaceItems=True) item.setProperty('fanart_image', fanart) control.addItem(handle=int(sys.argv[1]), url=downloadPath, listitem=item, isFolder=True) if status == 'downloading': item = control.item('[COLOR red]Stop Downloads[/COLOR]', iconImage=thumb, thumbnailImage=thumb) item.addContextMenuItems([], replaceItems=True) item.setProperty('fanart_image', fanart) control.addItem(handle=int(sys.argv[1]), url=sys.argv[0] + '?action=stopDownload', listitem=item, isFolder=True) else: item = control.item('[COLOR FF00b8ff]Start Downloads[/COLOR]', iconImage=thumb, thumbnailImage=thumb) item.addContextMenuItems([], replaceItems=True) item.setProperty('fanart_image', fanart) control.addItem(handle=int(sys.argv[1]), url=sys.argv[0] + '?action=startDownload', listitem=item, isFolder=True) if status == 'downloading': item = control.item('[COLOR gold]Download Status[/COLOR]', iconImage=thumb, thumbnailImage=thumb) item.addContextMenuItems([], replaceItems=True) item.setProperty('Fanart_Image', fanart) control.addItem(handle=int(sys.argv[1]), url=sys.argv[0] + '?action=statusDownload', listitem=item, isFolder=True) def download(): return [] result = cache.bennu_download_get(download, 600000000, table='rel_dl') for i in result: try: cm = [] cm.append(('Remove from Queue', 'RunPlugin(%s?action=removeDownload&url=%s)' % (sys.argv[0], urllib.quote_plus(i['url'])))) item = control.item(i['name'], iconImage=i['image'], thumbnailImage=i['image']) item.addContextMenuItems(cm, replaceItems=True) item.setProperty('fanart_image', fanart) item.setProperty('Video', 'true') item.setProperty('IsPlayable', 'true') control.addItem(handle=int(sys.argv[1]), url=i['url'], listitem=item) except: pass control.directory(int(sys.argv[1]), cacheToDisc=True)
def channelDirectory(self, items): if items == None or len(items) == 0: return playbackMenu = control.lang(30292).encode('utf-8') if control.setting( 'autoplay') == 'true' else control.lang(30291).encode('utf-8') addonPoster, addonBanner = control.addonPoster(), control.addonBanner() addonFanart = control.addonFanart() sysaddon = sys.argv[0] for i in items: try: label = '[B]%s[/B] : %s (%s)' % (i['channel'].upper(), i['title'], i['year']) sysname = urllib.quote_plus('%s (%s)' % (i['title'], i['year'])) systitle = urllib.quote_plus(i['title']) imdb, year = i['imdb'], i['year'] poster, banner = i['poster'], i['poster'] if poster == '0': poster = addonPoster if banner == '0' and poster == '0': banner = addonBanner elif banner == '0': banner = poster meta = dict((k, v) for k, v in i.iteritems() if not v == '0') meta.update({ 'trailer': '%s?action=trailer&name=%s' % (sysaddon, sysname) }) if i['duration'] == '0': meta.update({'duration': '120'}) try: meta.update({'duration': str(int(meta['duration']) * 60)}) except: pass sysmeta = urllib.quote_plus(json.dumps(meta)) url = '%s?action=play&title=%s&year=%s&imdb=%s&meta=%s&t=%s' % ( sysaddon, systitle, year, imdb, sysmeta, self.systime) sysurl = urllib.quote_plus(url) cm = [] cm.append((playbackMenu, 'RunPlugin(%s?action=alterSources&url=%s&meta=%s)' % (sysaddon, sysurl, sysmeta))) cm.append((control.lang(30297).encode('utf-8'), 'RunPlugin(%s?action=trailer&name=%s)' % (sysaddon, sysname))) cm.append( (control.lang(30293).encode('utf-8'), 'Action(Info)')) cm.append((control.lang(30294).encode('utf-8'), 'RunPlugin(%s?action=refresh)' % (sysaddon))) cm.append((control.lang(30295).encode('utf-8'), 'RunPlugin(%s?action=openSettings)' % (sysaddon))) cm.append((control.lang(30296).encode('utf-8'), 'RunPlugin(%s?action=openPlaylist)' % (sysaddon))) item = control.item(label=label, iconImage=poster, thumbnailImage=poster) try: item.setArt({'poster': poster, 'banner': banner}) except: pass if not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) item.setInfo(type='Video', infoLabels=meta) item.setProperty('Video', 'true') #item.setProperty('IsPlayable', 'true') item.addContextMenuItems(cm, replaceItems=True) control.addItem(handle=int(sys.argv[1]), url=url, listitem=item, isFolder=False) except: pass control.content(int(sys.argv[1]), 'movies') control.directory(int(sys.argv[1]), cacheToDisc=True)
def GetLinks(section, url, img, plot): # Get Links try: import resolveurl from resources.lib.modules import init html = response_html(url, '3') # html = cloudflare_mode(url) listitem = GetMediaInfo(html) name = '%s (%s)' % (listitem[0], listitem[1]) main = client.parseDOM(html, 'div', {'class': 'postContent'}) main = [i for i in main if i] comments = dom.parse_dom(html, 'div', {'class': re.compile('content')}) main += [i.content for i in comments if i] links = [] for item in main: frames = client.parseDOM(item, 'a', ret='href') for url in frames: host = GetDomain(url) if 'Unknown' in host: continue # ignore .rar files if any(x in url.lower() for x in ['.rar.', '.zip.', '.iso.']) \ or any(url.lower().endswith(x) for x in ['.rar', '.zip', '.iso']): continue if any(x in url.lower() for x in ['sample', 'zippyshare']): continue addon.log('******* %s : %s' % (host, url)) if resolveurl.HostedMediaFile(url=url): addon.log('in GetLinks if loop') title = url.rpartition('/') title = title[2].replace('.html', '') title = title.replace('.htm', '') title = title.replace('.rar', '[COLOR red][B][I]RAR no streaming[/B][/I][/COLOR]') title = title.replace('rar', '[COLOR red][B][I]RAR no streaming[/B][/I][/COLOR]') title = title.replace('www.', '') title = title.replace('-', ' ') title = title.replace('_', ' ') title = title.replace('.', ' ') title = title.replace('480p', '[COLOR coral][B][I]480p[/B][/I][/COLOR]') title = title.replace('540p', '[COLOR coral][B][I]540p[/B][/I][/COLOR]') title = title.replace('720p', '[COLOR gold][B][I]720p[/B][/I][/COLOR]') title = title.replace('1080p', '[COLOR orange][B][I]1080p[/B][/I][/COLOR]') title = title.replace('1080i', '[COLOR orange][B][I]1080i[/B][/I][/COLOR]') title = title.replace('2160p', '[COLOR cyan][B][I]4K[/B][/I][/COLOR]') title = title.replace('.4K.', '[COLOR cyan][B][I]4K[/B][/I][/COLOR]') title = title.replace('mkv', '[COLOR gold][B][I]MKV[/B][/I][/COLOR] ') title = title.replace('avi', '[COLOR pink][B][I]AVI[/B][/I][/COLOR] ') title = title.replace('mp4', '[COLOR purple][B][I]MP4[/B][/I][/COLOR] ') host = host.replace('youtube.com', '[COLOR red][B][I]Movie Trailer[/B][/I][/COLOR]') if 'railer' in host: title = host + ' : ' + title addon.add_directory( {'mode': 'PlayVideo', 'url': url, 'listitem': listitem, 'img': img, 'title': name, 'plot': plot}, {'title': title, 'plot': plot}, [(control.lang(32007).encode('utf-8'), 'RunPlugin(plugin://plugin.video.releaseBB/?mode=settings)',), (control.lang(32008).encode('utf-8'), 'RunPlugin(plugin://plugin.video.releaseBB/?mode=ClearCache)',), (control.lang(32009).encode('utf-8'), 'RunPlugin(plugin://plugin.video.releaseBB/?mode=setviews)',)], img=img, fanart=FANART, is_folder=False) else: links.append((host, title, url, name)) if control.setting('test.links') == 'true': threads = [] for i in links: threads.append(Thread(link_tester, i)) [i.start() for i in threads] [i.join() for i in threads] for item in tested_links: link, title, name = item[0], item[1], item[2] cm = [(control.lang(32007).encode('utf-8'), 'RunPlugin(plugin://plugin.video.releaseBB/?mode=settings)',), (control.lang(32008).encode('utf-8'), 'RunPlugin(plugin://plugin.video.releaseBB/?mode=ClearCache)',), (control.lang(32009).encode('utf-8'), 'RunPlugin(plugin://plugin.video.releaseBB/?mode=setviews)',)] downloads = True if control.setting('downloads') == 'true' and not (control.setting( 'movie.download.path') == '' or control.setting('tv.download.path') == '') else False if downloads: #frame = resolveurl.resolve(link) cm.append((control.lang(32013).encode('utf-8'), 'RunPlugin(plugin://plugin.video.releaseBB/?mode=download&title=%s&img=%s&url=%s)' % (name, img, link)) ) addon.add_directory( {'mode': 'PlayVideo', 'url': link, 'listitem': listitem, 'img': img, 'title': name, 'plot': plot}, {'title': title, 'plot': plot}, cm, img=img, fanart=FANART, is_folder=False) else: for item in links: host, title, link, name = item[0], item[1], item[2], item[3] title = '%s - %s' % (host, title) cm = [(control.lang(32007).encode('utf-8'), 'RunPlugin(plugin://plugin.video.releaseBB/?mode=settings)',), (control.lang(32008).encode('utf-8'), 'RunPlugin(plugin://plugin.video.releaseBB/?mode=ClearCache)',), (control.lang(32009).encode('utf-8'), 'RunPlugin(plugin://plugin.video.releaseBB/?mode=setviews)',)] downloads = True if control.setting('downloads') == 'true' and not (control.setting( 'movie.download.path') == '' or control.setting('tv.download.path') == '') else False if downloads: cm.append((control.lang(32013).encode('utf-8'), 'RunPlugin(plugin://plugin.video.releaseBB/?mode=download&title=%s&img=%s&url=%s)' % (name, img, link)) ) addon.add_directory( {'mode': 'PlayVideo', 'url': link, 'listitem': listitem, 'img': img, 'title': name, 'plot': plot}, {'title': title, 'plot': plot}, cm, img=img, fanart=FANART, is_folder=False) except BaseException: control.infoDialog( control.lang(32012).encode('utf-8'), NAME, ICON, 5000) control.content(int(sys.argv[1]), 'videos') control.directory(int(sys.argv[1])) view.setView('videos', {'skin.estuary': 55, 'skin.confluence': 500})
def endCategory(): if control.skin == 'skin.confluence': control.execute('Container.SetViewMode(500)') control.directory(int(sys.argv[1]), cacheToDisc=True)
def addItem(self, title): control.playlist.clear() items = control.window.getProperty(self.itemProperty) items = json.loads(items) if items == None or len(items) == 0: control.idle() ; sys.exit() meta = control.window.getProperty(self.metaProperty) meta = json.loads(meta) sysaddon = sys.argv[0] syshandle = int(sys.argv[1]) downloads = True if control.setting('downloads') == 'true' and not (control.setting('movie.download.path') == '' or control.setting('tv.download.path') == '') else False if 'tvshowtitle' in meta and 'season' in meta and 'episode' in meta: name = '%s S%02dE%02d' % (title, int(meta['season']), int(meta['episode'])) elif 'year' in meta: name = '%s (%s)' % (title, meta['year']) else: name = title systitle = urllib.quote_plus(title.encode('utf-8')) sysname = urllib.quote_plus(name.encode('utf-8')) poster = meta['poster'] if 'poster' in meta else '0' banner = meta['banner'] if 'banner' in meta else '0' thumb = meta['thumb'] if 'thumb' in meta else poster fanart = meta['fanart'] if 'fanart' in meta else '0' if poster == '0': poster = control.addonPoster() if banner == '0' and poster == '0': banner = control.addonBanner() elif banner == '0': banner = poster if thumb == '0' and fanart == '0': thumb = control.addonFanart() elif thumb == '0': thumb = fanart if control.setting('fanart') == 'true' and not fanart == '0': pass else: fanart = control.addonFanart() sysimage = urllib.quote_plus(poster.encode('utf-8')) downloadMenu = control.lang(32403).encode('utf-8') for i in range(len(items)): try: label = items[i]['label'] syssource = urllib.quote_plus(json.dumps([items[i]])) sysurl = '%s?action=playItem&title=%s&source=%s' % (sysaddon, systitle, syssource) cm = [] if downloads == True: cm.append((downloadMenu, 'RunPlugin(%s?action=download&name=%s&image=%s&source=%s)' % (sysaddon, sysname, sysimage, syssource))) item = control.item(label=label) item.setArt({'icon': thumb, 'thumb': thumb, 'poster': poster, 'tvshow.poster': poster, 'season.poster': poster, 'banner': banner, 'tvshow.banner': banner, 'season.banner': banner}) if not fanart == None: item.setProperty('Fanart_Image', fanart) item.addContextMenuItems(cm) item.setInfo(type='Video', infoLabels = meta) control.addItem(handle=syshandle, url=sysurl, listitem=item, isFolder=False) except: pass control.content(syshandle, 'files') control.directory(syshandle, cacheToDisc=True)
def episode_directory(self, items): if items is None or len(items) == 0: return sysaddon = sys.argv[0] addon_poster = addon_banner = control.addonInfo('icon') addon_fanart = control.addonInfo('fanart') if self.fanart is None: self.fanart = addon_fanart mode = 'episodes' for i in items: # try: tvshowtitle = i['title'] if tvshowtitle is None: tvshowtitle = i['label'] episode_id = i['episode_id'] anime_id = i['anime_id'] duration = i['duration'] if duration is 0 or duration is None: duration = 24 url = '%s?action=play' % sysaddon try: url += '&anime_id=%s&episode_id=%s' % (anime_id, episode_id) except: pass plot = i['plot'] if plot is u'' or plot is None: plot = "No overview of episode available at this time." season = i['season'] if season is 0 or season is None: season = 1 episode = i['episode'] if i['fanart'] is not None: fanart = self.fanarturl % i['fanart'] else: fanart = addon_fanart if i['poster'] is not None: poster = self.thumbnailurl % i['poster'] else: poster = addon_poster premiered = i['premiered'] iswatched = Watched().watched(anime_id, episode_id) if iswatched: overlay = 7 playcount = 1 else: overlay = 6 playcount = 0 item = control.item(label=tvshowtitle) try: item.setArt({'poster': poster}) except: pass try: item.setInfo(type='Video', infoLabels={ 'Plot': plot, 'Year': premiered, 'premiered': premiered, 'overlay': overlay, 'playcount': playcount, 'episode': episode, 'duration': duration, 'season': season, 'title': tvshowtitle }) except: pass item.setProperty('Fanart_Image', fanart) # item.setProperty('IsPlayable', 'true') item.setProperty('startoffset', '0') item.setProperty('resumetime', '0') item.setProperty('totaltime', '1') item.addStreamInfo('video', {'codec': 'h264', 'width': 1280, 'height': 720, 'aspect': round(128 / 720)}) item.addStreamInfo('audio', {'codec': 'aac', 'language': 'en', 'channels': 2}) cm = [] if iswatched: cm.append(('Unmark as Watched', 'RunPlugin(%s?action=watched&anime_id=%s&episode_id=%s&unmark=True)' % ( sysaddon, anime_id, episode_id))) else: cm.append(('Mark as Watched', 'RunPlugin(%s?action=watched&anime_id=%s&episode_id=%s)' % ( sysaddon, anime_id, episode_id))) item.addContextMenuItems(cm) control.addItem(handle=int(sys.argv[1]), url=url, listitem=item, isFolder=False) # except: # pass control.content(int(sys.argv[1]), mode) control.directory(int(sys.argv[1]), cacheToDisc=True) views.setView('episodes', {'skin.confluence': 504})
def seasonDirectory(self, items): if items is None or len(items) == 0: control.idle() control.notification(title = 32054, message = 33049, icon = 'INFO') sys.exit() sysaddon = sys.argv[0] syshandle = int(sys.argv[1]) addonPoster, addonBanner = control.addonPoster(), control.addonBanner() addonFanart, settingFanart = control.addonFanart(), control.setting('fanart') traktCredentials = trakt.getTraktCredentialsInfo() # try: # isOld = False ; control.item().getArt('type') # except: # isOld = True if trakt.getTraktIndicatorsInfo() is True: watchedMenu = control.lang(32068).encode('utf-8') unwatchedMenu = control.lang(32069).encode('utf-8') else: watchedMenu = control.lang(32066).encode('utf-8') unwatchedMenu = control.lang(32067).encode('utf-8') traktManagerMenu = control.lang(32070).encode('utf-8') playlistManagerMenu = control.lang(35522).encode('utf-8') queueMenu = control.lang(32065).encode('utf-8') showPlaylistMenu = control.lang(35517).encode('utf-8') clearPlaylistMenu = control.lang(35516).encode('utf-8') labelMenu = control.lang(32055).encode('utf-8') playRandom = control.lang(32535).encode('utf-8') addToLibrary = control.lang(32551).encode('utf-8') try: multi = [i['tvshowtitle'] for i in items] except: multi = [] multi = len([x for y,x in enumerate(multi) if x not in multi[:y]]) multi = True if multi > 1 else False for i in items: try: imdb, tvdb, year, season = i['imdb'], i['tvdb'], i['year'], i['season'] title = i['tvshowtitle'] label = '%s %s' % (labelMenu, i['season']) if self.season_special is False and control.setting('tv.specials') == 'true': self.season_special = True if int(season) == 0 else False try: if i['unaired'] == 'true': label = '[COLOR %s][I]%s[/I][/COLOR]' % (self.unairedcolor, label) except: pass systitle = sysname = urllib.quote_plus(title) meta = dict((k,v) for k, v in i.iteritems() if not v == '0') meta.update({'code': imdb, 'imdbnumber': imdb, 'imdb_id': imdb}) meta.update({'tvdb_id': tvdb}) meta.update({'mediatype': 'tvshow'}) meta.update({'trailer': '%s?action=trailer&name=%s' % (sysaddon, sysname)}) try: plot = meta['plot'] index = plot.rfind('See full summary') if index >= 0: plot = plot[:index] plot = plot.strip() if re.match('[a-zA-Z\d]$', plot): plot += ' ...' meta['plot'] = plot except: pass try: meta.update({'duration': str(int(meta['duration']) * 60)}) except: pass try: meta.update({'genre': cleangenre.lang(meta['genre'], self.lang)}) except: pass try: meta.update({'tvshowtitle': i['label']}) except: pass try: # Year is the shows year, not the seasons year. Extract the correct year frpm the premier date. yearNew = i['premiered'] yearNew = re.findall('(\d{4})', yearNew)[0] yearNew = yearNew.encode('utf-8') meta.update({'year': yearNew}) except: pass # First check thumbs, since they typically contains the seasons poster. The normal poster contains the show poster. poster = '0' if poster == '0' and 'thumb3' in i: poster = i['thumb3'] if poster == '0' and 'thumb2' in i: poster = i['thumb2'] if poster == '0' and 'thumb' in i: poster = i['thumb'] if poster == '0' and 'poster3' in i: poster = i['poster3'] if poster == '0' and 'poster2' in i: poster = i['poster2'] if poster == '0' and 'poster' in i: poster = i['poster'] icon = '0' if icon == '0' and 'icon3' in i: icon = i['icon3'] if icon == '0' and 'icon2' in i: icon = i['icon2'] if icon == '0' and 'icon' in i: icon = i['icon'] thumb = '0' if thumb == '0' and 'thumb3' in i: thumb = i['thumb3'] if thumb == '0' and 'thumb2' in i: thumb = i['thumb2'] if thumb == '0' and 'thumb' in i: thumb = i['thumb'] banner = '0' if banner == '0' and 'banner3' in i: banner = i['banner3'] if banner == '0' and 'banner2' in i: banner = i['banner2'] if banner == '0' and 'banner' in i: banner = i['banner'] fanart = '0' if settingFanart: if fanart == '0' and 'fanart3' in i: fanart = i['fanart3'] if fanart == '0' and 'fanart2' in i: fanart = i['fanart2'] if fanart == '0' and 'fanart' in i: fanart = i['fanart'] clearlogo = '0' if clearlogo == '0' and 'clearlogo' in i: clearlogo = i['clearlogo'] clearart = '0' if clearart == '0' and 'clearart' in i: clearart = i['clearart'] if poster == '0': poster = addonPoster if icon == '0': icon = poster if thumb == '0': thumb = poster if banner == '0': banner = addonBanner if fanart == '0': fanart = addonFanart art = {} if not poster == '0' and not poster is None: art.update({'poster' : poster, 'tvshow.poster' : poster, 'season.poster' : poster}) if not fanart == '0' and not fanart is None: art.update({'fanart' : fanart}) if not icon == '0' and not icon is None: art.update({'icon' : icon}) if not thumb == '0' and not thumb is None: art.update({'thumb' : thumb}) if not banner == '0' and not banner is None: art.update({'banner' : banner}) if not clearlogo == '0' and not clearlogo is None: art.update({'clearlogo' : clearlogo}) if not clearart == '0' and not clearart is None: art.update({'clearart' : clearart}) ####-Context Menu and Overlays-#### cm = [] if traktCredentials is True: cm.append((traktManagerMenu, 'RunPlugin(%s?action=traktManager&name=%s&imdb=%s&tvdb=%s&season=%s)' % (sysaddon, sysname, imdb, tvdb, season))) try: indicators = playcount.getSeasonIndicators(imdb) overlay = int(playcount.getSeasonOverlay(indicators, imdb, tvdb, season)) watched = overlay == 7 if watched: meta.update({'playcount': 1, 'overlay': 7}) cm.append((unwatchedMenu, 'RunPlugin(%s?action=tvPlaycount&name=%s&imdb=%s&tvdb=%s&season=%s&query=6)' % (sysaddon, systitle, imdb, tvdb, season))) else: meta.update({'playcount': 0, 'overlay': 6}) cm.append((watchedMenu, 'RunPlugin(%s?action=tvPlaycount&name=%s&imdb=%s&tvdb=%s&season=%s&query=7)' % (sysaddon, systitle, imdb, tvdb, season))) except: pass sysmeta = urllib.quote_plus(json.dumps(meta)) sysart = urllib.quote_plus(json.dumps(art)) url = '%s?action=episodes&tvshowtitle=%s&year=%s&imdb=%s&tvdb=%s&season=%s' % (sysaddon, systitle, year, imdb, tvdb, season) sysurl = urllib.quote_plus(url) cm.append((playRandom, 'RunPlugin(%s?action=random&rtype=episode&tvshowtitle=%s&year=%s&imdb=%s&tvdb=%s&season=%s)' % ( sysaddon, urllib.quote_plus(systitle), urllib.quote_plus(year), urllib.quote_plus(imdb), urllib.quote_plus(tvdb), urllib.quote_plus(season)))) # cm.append((playlistManagerMenu, 'RunPlugin(%s?action=playlistManager&name=%s&url=%s&meta=%s&art=%s)' % (sysaddon, systitle, sysurl, sysmeta, sysart))) cm.append((queueMenu, 'RunPlugin(%s?action=queueItem&name=%s)' % (sysaddon, systitle))) cm.append((showPlaylistMenu, 'RunPlugin(%s?action=showPlaylist)' % sysaddon)) cm.append((clearPlaylistMenu, 'RunPlugin(%s?action=clearPlaylist)' % sysaddon)) # if isOld is True: # cm.append((control.lang2(19033).encode('utf-8'), 'Action(Info)')) cm.append((addToLibrary, 'RunPlugin(%s?action=tvshowToLibrary&tvshowtitle=%s&year=%s&imdb=%s&tvdb=%s)' % (sysaddon, systitle, year, imdb, tvdb))) cm.append(('[COLOR red]ego Settings[/COLOR]', 'RunPlugin(%s?action=openSettings&query=(0,0))' % sysaddon)) #################################### item = control.item(label = label) unwatchedEnabled = True unwatchedLimit = False if unwatchedEnabled: count = playcount.getSeasonCount(imdb, season, self.season_special, unwatchedLimit) if count: item.setProperty('TotalEpisodes', str(count['total'])) item.setProperty('WatchedEpisodes', str(count['watched'])) item.setProperty('UnWatchedEpisodes', str(count['unwatched'])) total_seasons = trakt.getSeasons(imdb, full=False) if not total_seasons is None: total_seasons = [i['number'] for i in total_seasons] total_seasons = len(total_seasons) if control.setting('tv.specials') == 'false' or self.season_special is False: total_seasons = total_seasons - 1 item.setProperty('TotalSeasons', str(total_seasons)) if 'episodeIDS' in i: item.setUniqueIDs(i['episodeIDS']) if 'cast' in i: item.setCast(i['cast']) if not fanart == '0' and not fanart is None: item.setProperty('Fanart_Image', fanart) item.setArt(art) item.setInfo(type='video', infoLabels=control.metadataClean(meta)) item.addContextMenuItems(cm) video_streaminfo = {'codec': 'h264'} item.addStreamInfo('video', video_streaminfo) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=True) except: pass try: control.property(syshandle, 'showplot', items[0]['plot']) except: pass control.content(syshandle, 'seasons') control.directory(syshandle, cacheToDisc=True) views.setView('seasons', {'skin.estuary': 55, 'skin.confluence': 500})
def searchDirectory(query=None): if (query == None or query == ''): keyboard = control.keyboard('', control.lang(30702).encode('utf-8')) keyboard.doModal() if not (keyboard.isConfirmed()): return query = keyboard.getText() if (query == None or query == ''): return def search(): return [query] result = cache.get(search, 600000000, table='rel_srch') def search(): return [x for y,x in enumerate((result + [query])) if x not in (result + [query])[:y]] result = cache.get(search, 0, table='rel_srch') global global_search ; global_search = [] def worker(url): global_search.append(str(client.request(url))) servers = client.request(phLink) servers = str(servers).replace('\n','') servers = re.findall('</name><link>(.+?)</link>', servers) servers = [urlparse.urlparse(i).netloc for i in servers] servers = [phSearch % i for i in servers if not 'mecca' in i] threads = [] for server in servers: threads.append(workers.Thread(worker, server)) [i.start() for i in threads] [i.join() for i in threads] urls = [] for i in global_search: try: r = base64.b64decode(i) except: r = '' if '</' in r: urls += [r] else: urls += [i] global_search = [] urls = [str(i).replace('\n','') for i in urls] urls = [re.findall('<link>(.+?)</link>', i)[:30] for i in urls] urls = sum(urls, []) threads = [] for url in urls: threads.append(workers.Thread(worker, url)) [i.start() for i in threads] [i.join() for i in threads] links = [] for i in global_search: try: r = base64.b64decode(i) except: r = '' if '</' in r: links += [r] else: links += [i] global_search = [] for link in links: try: link = str(link).replace('\r','').replace('\n','').replace('\t','').replace(' ','') try: fanart = re.findall('<fanart>(.+?)</fanart>', link)[0] except: fanart = '0' try: vip = re.findall('<poster>(.+?)</poster>', link)[0] except: vip = '' if vip == 'Team Phoenix': vip = '' try: content = re.findall('<meta>(.+?)</meta>', link)[0] except: content = '0' try: tvshow = re.findall('<tvshow>(.+?)</tvshow>', link)[0] except: tvshow = '0' if content in ['seasons', 'episodes'] and tvshow == '0': content = '0' dirs = re.compile('<dir>(.+?)</dir>').findall(link) for dir in dirs: try: data = {} name = re.findall('<name>(.+?)</name>', dir)[0] name = cleantitle(name) if not query.lower() in name.lower() : raise Exception() url = re.findall('<link>(.+?)</link>', dir)[0] try: image = re.findall('<thumbnail>(.+?)</thumbnail>', dir)[0] except: image = '0' try: fanart2 = re.findall('<fanart>(.+?)</fanart>', dir)[0] except: fanart2 = fanart if content =='tvshows': try: title = cleantitle(name).encode('utf-8') data = {'title': title, 'tvshowtitle': title} except: pass if re.search('[a-zA-Z]', vip): name += ' [COLOR orange]%s[/COLOR]' % vip addDirectoryItem(name, url, 'ndmode', image, image, fanart2, '0', content, data) except: pass items = re.compile('<item>(.+?)</item>').findall(link) for item in items: try: data = {} name = re.findall('<title>(.+?)</title>', item)[0] name = cleantitle(name) if not query.lower() in name.lower() : raise Exception() url = re.findall('<link>(.+?)</link>', item)[0] try: image = re.findall('<thumbnail>(.+?)</thumbnail>', item)[0] except: image = '0' try: fanart2 = re.findall('<fanart>(.+?)</fanart>', item)[0] except: fanart2 = fanart if content =='movies': try: title = cleantitle(name).encode('utf-8') data = {'title': title} title, year = re.compile('(.+?)[(](\d{4})[)]').findall(name)[0] title = cleantitle(title).encode('utf-8') data = {'title': title, 'year': year} except: pass if re.search('[a-zA-Z]', vip): name += ' [COLOR orange]%s[/COLOR]' % vip if 'sublink' in url: addDirectoryItem(name, url, 'subDirectory', image, image, fanart2, '0', content, data, isFolder=True) else: addDirectoryItem(name, url, 'resolveUrl', image, image, fanart2, '0', content, data, isFolder=False) except: pass except: pass control.directory(int(sys.argv[1]), cacheToDisc=True)
def endDirectory(self): control.directory(syshandle, cacheToDisc=True)
def tvshowDirectory(self, items): if items == None or len(items) == 0: return isFolder = True if control.setting('autoplay') == 'false' and control.setting('hosts.mode') == '1' else False isFolder = False if control.window.getProperty('PseudoTVRunning') == 'True' else isFolder traktCredentials = trakt.getTraktCredentialsInfo() indicators = playcount.getTVShowIndicators() addonPoster, addonBanner = control.addonPoster(), control.addonBanner() addonFanart, settingFanart = control.addonFanart(), control.setting('fanart') sysaddon = sys.argv[0] for i in items: try: label = i['title'] systitle = sysname = urllib.quote_plus(i['originaltitle']) sysimage = urllib.quote_plus(i['poster']) imdb, tvdb, year = i['imdb'], i['tvdb'], i['year'] poster, banner, fanart = i['poster'], i['banner'], i['fanart'] if banner == '0' and not poster == '0': banner = poster if poster == '0': poster = addonPoster if banner == '0': banner = addonBanner meta = dict((k,v) for k, v in i.iteritems() if not v == '0') meta.update({'trailer': '%s?action=trailer&name=%s' % (sysaddon, sysname)}) if i['duration'] == '0': meta.update({'duration': '60'}) try: meta.update({'duration': str(int(meta['duration']) * 60)}) except: pass try: meta.update({'genre': cleangenre.lang(meta['genre'], self.lang)}) except: pass sysmeta = urllib.quote_plus(json.dumps(meta)) url = '%s?action=seasons&tvshowtitle=%s&year=%s&imdb=%s&tvdb=%s' % (sysaddon, systitle, year, imdb, tvdb) try: overlay = int(playcount.getTVShowOverlay(indicators, tvdb)) if overlay == 7: meta.update({'playcount': 1, 'overlay': 7}) else: meta.update({'playcount': 0, 'overlay': 6}) except: pass cm = [] if isFolder == False: cm.append((control.lang(30232).encode('utf-8'), 'RunPlugin(%s?action=queueItem)' % sysaddon)) if traktCredentials == True: cm.append((control.lang(30236).encode('utf-8'), 'RunPlugin(%s?action=traktManager&name=%s&tvdb=%s&content=tvshow)' % (sysaddon, sysname, tvdb))) cm.append((control.lang(30242).encode('utf-8'), 'RunPlugin(%s?action=trailer&name=%s)' % (sysaddon, sysname))) cm.append((control.lang(30233).encode('utf-8'), 'Action(Info)')) cm.append((control.lang(30234).encode('utf-8'), 'RunPlugin(%s?action=tvPlaycount&name=%s&imdb=%s&tvdb=%s&query=7)' % (sysaddon, systitle, imdb, tvdb))) cm.append((control.lang(30235).encode('utf-8'), 'RunPlugin(%s?action=tvPlaycount&name=%s&imdb=%s&tvdb=%s&query=6)' % (sysaddon, systitle, imdb, tvdb))) cm.append((control.lang(30240).encode('utf-8'), 'RunPlugin(%s?action=addView&content=tvshows)' % sysaddon)) item = control.item(label=label, iconImage=poster, thumbnailImage=poster) try: item.setArt({'poster': poster, 'tvshow.poster': poster, 'season.poster': poster, 'banner': banner, 'tvshow.banner': banner, 'season.banner': banner}) except: pass if settingFanart == 'true' and not fanart == '0': item.setProperty('Fanart_Image', fanart) elif not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) item.setInfo(type='Video', infoLabels = meta) item.setProperty('Video', 'true') item.addContextMenuItems(cm, replaceItems=True) control.addItem(handle=int(sys.argv[1]), url=url, listitem=item, isFolder=True) except: pass try: url = items[0]['next'] if url == '': raise Exception() url = '%s?action=tvshows&url=%s' % (sysaddon, urllib.quote_plus(url)) addonNext = control.addonNext() item = control.item(label=control.lang(30241).encode('utf-8'), iconImage=addonNext, thumbnailImage=addonNext) item.addContextMenuItems([], replaceItems=False) if not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) control.addItem(handle=int(sys.argv[1]), url=url, listitem=item, isFolder=True) except: pass control.content(int(sys.argv[1]), 'tvshows') control.directory(int(sys.argv[1]), cacheToDisc=True) views.setView('tvshows', {'skin.estuary': 54, 'skin.confluence': 500})
def download_manager(self): sysaddon = sys.argv[0] syshandle = int(sys.argv[1]) artPath = control.artPath() addonFanart = control.addonFanart() DBFile = control.logDownloads newData = [] dupes = [] cm = [] thumb = 'cloud.png' thumb = control.getIcon(thumb) url = '%s?action=refresh' % (sysaddon) item = control.item(label='Refresh') item.addContextMenuItems(cm) item.setArt({'icon': thumb, 'thumb': thumb}) if not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=False) data = self.logDownload('title', '0', '0', mode='get') for x in data: try: thumb = 'cloud.png' thumb = control.getIcon(thumb) cm = [] percent = str(x[1]) + '%' title = x[0] status = x[2] u = x[3] if status == 'running': status = '[B][[COLOR orange]Running[/COLOR]][/B]' elif status == 'stopped': status = '[B][[COLOR red]Stopped[/COLOR]][/B]' elif status == 'completed': status = '[B][[COLOR lime]Completed[/COLOR]][/B]' label = '[B][%s][/B] %s %s' % (percent, status, title) cm.append( ('Stop Download', 'RunPlugin(%s?action=download_manager_stop&title=%s)' % (sysaddon, title))) cm.append( ('Delete Download', 'RunPlugin(%s?action=download_manager_delete&title=%s)' % (sysaddon, title))) url = '' item = control.item(label=label) item.addContextMenuItems(items=cm, replaceItems=True) item.setArt({'icon': thumb, 'thumb': thumb}) if not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) control.addItem(handle=syshandle, url=u, listitem=item, isFolder=False) except: pass control.content(syshandle, 'addons') control.directory(syshandle, cacheToDisc=False)
elif action == 'updateLibrary': from resources.lib.modules import libtools libtools.libepisodes().update(query) elif action == 'service': from resources.lib.modules import libtools libtools.libepisodes().service() elif action == 'resolve': from resources.lib.sources import sources from resources.lib.modules import control url = sources().sourcesResolve(url, provider) control.addItem(handle=int(sys.argv[1]), url=url, listitem=control.item(name)) control.directory(int(sys.argv[1])) elif action == 'download': from resources.lib.sources import sources from resources.lib.modules import simpledownloader url = sources().sourcesResolve(url, provider) simpledownloader.download(name, image, url) elif action == 'play': from resources.lib.sources import sources sources().play(title, year, imdb, tvdb, season, episode, tvshowtitle, premiered, meta, url) elif action == 'sources': from resources.lib.sources import sources sources().addItem(title, year, imdb, tvdb, season, episode, tvshowtitle,
def browse_user_torrents(self, folder_id): try: sysaddon = sys.argv[0] syshandle = int(sys.argv[1]) torrent_files = self.torrent_info(folder_id) except: return extensions = supported_video_extensions() try: file_info = [ i for i in torrent_files['files'] if i['path'].lower().endswith(tuple(extensions)) ] file_urls = torrent_files['links'] for c, i in enumerate(file_info): try: i.update({'url_link': file_urls[c]}) except: pass pack_info = sorted(file_info, key=lambda k: k['path']) except: return control.notification(title='default', message=33586, icon='default') file_str, downloadMenu, renameMenu, deleteMenu, clearFinishedMenu = \ control.lang(40047).upper(), control.lang(40048), control.lang(40049), control.lang(40050), control.lang(40051) for count, item in enumerate(pack_info, 1): try: cm = [] name = item['path'] if name.startswith('/'): name = name.split('/')[-1] url_link = item['url_link'] if url_link.startswith('/'): url_link = 'http' + url_link size = float(int(item['bytes'])) / 1073741824 label = '%02d | [B]%s[/B] | %.2f GB | [I]%s [/I]' % ( count, file_str, size, name) url = '%s?action=playURL&url=%s&caller=realdebrid&type=unrestrict' % ( sysaddon, url_link) cm.append(( downloadMenu, 'RunPlugin(%s?action=download&name=%s&image=%s&url=%s&caller=realdebrid&type=unrestrict)' % (sysaddon, quote_plus(name), quote_plus(rd_icon), url_link))) cm.append(( deleteMenu % 'Torrent', 'RunPlugin(%s?action=rd_DeleteUserTorrent&id=%s&name=%s)' % (sysaddon, item['id'], quote_plus(name)))) item = control.item(label=label) item.addContextMenuItems(cm) item.setArt({ 'icon': rd_icon, 'poster': rd_icon, 'thumb': rd_icon, 'fanart': addonFanart, 'banner': rd_icon }) item.setInfo(type='video', infoLabels='') video_streaminfo = {'codec': 'h264'} item.addStreamInfo('video', video_streaminfo) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=False) except: log_utils.error() pass control.content(syshandle, 'files') control.directory(syshandle, cacheToDisc=True)
def user_transfers_to_listItem(self): sysaddon = sys.argv[0] syshandle = int(sys.argv[1]) transfer_files = self.user_cloud()['magnets'] if not transfer_files: control.notification(message='Request Failure-Empty Content') return folder_str, deleteMenu, restartMenu = control.lang( 40046).upper(), control.lang(40050), control.lang(40008) for count, item in enumerate(transfer_files, 1): try: status_code = item['statusCode'] if status_code in (0, 1, 2, 3): active = True downloaded = item['downloaded'] size = item['size'] try: percent = str(round(float(downloaded) / size * 100, 1)) except: percent = '0' else: active = False folder_name = control.strip_non_ascii_and_unprintable( item['filename']) id = item['id'] status_str = '[COLOR %s]%s[/COLOR]' % ( control.getColor(control.setting('highlight.color')), item['status'].capitalize()) if active: label = '%02d | [B]%s[/B] - %s | [B]%s[/B]' % ( count, status_str, str(percent) + '%', folder_name) else: label = '%02d | [B]%s[/B] | [B]%s[/B] | [I]%s [/I]' % ( count, status_str, folder_str, folder_name) if status_code == 4: url = '%s?action=ad_BrowseUserCloud&source=%s' % ( sysaddon, quote_plus(json.dumps(item))) isFolder = True else: url = '' isFolder = False cm = [] cm.append( (deleteMenu % 'Transfer', 'RunPlugin(%s?action=ad_DeleteTransfer&id=%s&name=%s)' % (sysaddon, id, folder_name))) if status_code in (6, 7, 9, 10): cm.append(( restartMenu, 'RunPlugin(%s?action=ad_RestartTransfer&id=%s&name=%s)' % (sysaddon, id, folder_name))) item = control.item(label=label) item.addContextMenuItems(cm) item.setArt({ 'icon': ad_icon, 'poster': ad_icon, 'thumb': ad_icon, 'fanart': addonFanart, 'banner': ad_icon }) item.setInfo(type='video', infoLabels='') video_streaminfo = {'codec': 'h264'} item.addStreamInfo('video', video_streaminfo) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=isFolder) except: log_utils.error() control.content(syshandle, 'files') control.directory(syshandle, cacheToDisc=True)
def addDirectory(self, items, queue=False): if items == None or len(items) == 0: return sysaddon = sys.argv[0] addonPoster = addonBanner = control.addonInfo('icon') addonFanart = control.addonInfo('fanart') playlist = control.playlist if not queue == False: playlist.clear() try: devmode = True if 'testings.xml' in control.listDir(control.dataPath)[1] else False except: devmode = False mode = [i['content'] for i in items if 'content' in i] if 'movies' in mode: mode = 'movies' elif 'tvshows' in mode: mode = 'tvshows' elif 'seasons' in mode: mode = 'seasons' elif 'episodes' in mode: mode = 'episodes' elif 'addons' in mode: mode = 'addons' else: mode = 'videos' for i in items: try: try: name = control.lang(int(i['name'])).encode('utf-8') except: name = i['name'] url = '%s?action=%s' % (sysaddon, i['action']) try: url += '&url=%s' % urllib.quote_plus(i['url']) except: pass try: url += '&content=%s' % urllib.quote_plus(i['content']) except: pass if i['action'] == 'plugin' and 'url' in i: url = i['url'] try: devurl = dict(urlparse.parse_qsl(urlparse.urlparse(url).query))['action'] except: devurl = None if devurl == 'developer' and not devmode == True: raise Exception() poster = i['poster'] if 'poster' in i else '0' banner = i['banner'] if 'banner' in i else '0' fanart = i['fanart'] if 'fanart' in i else '0' if poster == '0': poster = addonPoster if banner == '0' and poster == '0': banner = addonBanner elif banner == '0': banner = poster content = i['content'] if 'content' in i else '0' folder = i['folder'] if 'folder' in i else True meta = dict((k,v) for k, v in i.iteritems() if not v == '0') cm = [] if content in ['movies', 'tvshows']: meta.update({'trailer': '%s?action=trailer&name=%s' % (sysaddon, urllib.quote_plus(name))}) cm.append((control.lang(30707).encode('utf-8'), 'RunPlugin(%s?action=trailer&name=%s)' % (sysaddon, urllib.quote_plus(name)))) if content in ['movies', 'tvshows', 'seasons', 'episodes']: cm.append((control.lang(30708).encode('utf-8'), 'XBMC.Action(Info)')) if (folder == False and not '|regex=' in str(i.get('url'))) or (folder == True and content in ['tvshows', 'seasons']): cm.append((control.lang(30723).encode('utf-8'), 'RunPlugin(%s?action=queueItem)' % sysaddon)) if content == 'movies': try: dfile = '%s (%s)' % (i['title'], i['year']) except: dfile = name try: cm.append((control.lang(30722).encode('utf-8'), 'RunPlugin(%s?action=addDownload&name=%s&url=%s&image=%s)' % (sysaddon, urllib.quote_plus(dfile), urllib.quote_plus(i['url']), urllib.quote_plus(poster)))) except: pass elif content == 'episodes': try: dfile = '%s S%02dE%02d' % (i['tvshowtitle'], int(i['season']), int(i['episode'])) except: dfile = name try: cm.append((control.lang(30722).encode('utf-8'), 'RunPlugin(%s?action=addDownload&name=%s&url=%s&image=%s)' % (sysaddon, urllib.quote_plus(dfile), urllib.quote_plus(i['url']), urllib.quote_plus(poster)))) except: pass elif content == 'songs': try: cm.append((control.lang(30722).encode('utf-8'), 'RunPlugin(%s?action=addDownload&name=%s&url=%s&image=%s)' % (sysaddon, urllib.quote_plus(name), urllib.quote_plus(i['url']), urllib.quote_plus(poster)))) except: pass if mode == 'movies': cm.append((control.lang(30711).encode('utf-8'), 'RunPlugin(%s?action=addView&content=movies)' % sysaddon)) elif mode == 'tvshows': cm.append((control.lang(30712).encode('utf-8'), 'RunPlugin(%s?action=addView&content=tvshows)' % sysaddon)) elif mode == 'seasons': cm.append((control.lang(30713).encode('utf-8'), 'RunPlugin(%s?action=addView&content=seasons)' % sysaddon)) elif mode == 'episodes': cm.append((control.lang(30714).encode('utf-8'), 'RunPlugin(%s?action=addView&content=episodes)' % sysaddon)) if devmode == True: try: cm.append(('Open in browser', 'RunPlugin(%s?action=browser&url=%s)' % (sysaddon, urllib.quote_plus(i['url'])))) except: pass item = control.item(label=name, iconImage=poster, thumbnailImage=poster) try: item.setArt({'poster': poster, 'tvshow.poster': poster, 'season.poster': poster, 'banner': banner, 'tvshow.banner': banner, 'season.banner': banner}) except: pass if not fanart == '0': item.setProperty('Fanart_Image', fanart) elif not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) if queue == False: item.setInfo(type='Video', infoLabels = meta) item.addContextMenuItems(cm) control.addItem(handle=int(sys.argv[1]), url=url, listitem=item, isFolder=folder) else: item.setInfo(type='Video', infoLabels = meta) playlist.add(url=url, listitem=item) except: pass if not queue == False: return control.player.play(playlist) try: i = items[0] if i['next'] == '': raise Exception() url = '%s?action=%s&url=%s' % (sysaddon, i['nextaction'], urllib.quote_plus(i['next'])) item = control.item(label=control.lang(30500).encode('utf-8')) item.setArt({'addonPoster': addonPoster, 'thumb': addonPoster, 'poster': addonPoster, 'tvshow.poster': addonPoster, 'season.poster': addonPoster, 'banner': addonPoster, 'tvshow.banner': addonPoster, 'season.banner': addonPoster}) item.setProperty('addonFanart_Image', addonFanart) control.addItem(handle=int(sys.argv[1]), url=url, listitem=item, isFolder=True) except: pass if not mode == None: control.content(int(sys.argv[1]), mode) control.directory(int(sys.argv[1]), cacheToDisc=True) if mode in ['movies', 'tvshows', 'seasons', 'episodes']: views.setView(mode, {'skin.estuary': 55})
def my_downloads_to_listItem(self, page): try: from datetime import datetime sysaddon = sys.argv[0] syshandle = int(sys.argv[1]) my_downloads, pages = self.downloads(page) except: my_downloads = None if not my_downloads: return extensions = supported_video_extensions() my_downloads = [ i for i in my_downloads if i['download'].lower().endswith(tuple(extensions)) ] downloadMenu, deleteMenu = control.lang(40048), control.lang(40050) for count, item in enumerate(my_downloads, 1): if page > 1: count += (page - 1) * 50 try: cm = [] generated = datetime.strptime(item['generated'], FormatDateTime) generated = generated.strftime('%Y-%m-%d') name = control.strip_non_ascii_and_unprintable( item['filename']) size = float(int(item['filesize'])) / 1073741824 label = '%02d | %.2f GB | %s | [I]%s [/I]' % (count, size, generated, name) url_link = item['download'] url = '%s?action=playURL&url=%s' % (sysaddon, url_link) cm.append(( downloadMenu, 'RunPlugin(%s?action=download&name=%s&image=%s&url=%s&caller=realdebrid)' % (sysaddon, quote_plus(name), quote_plus(rd_icon), url_link))) cm.append( (deleteMenu % 'File', 'RunPlugin(%s?action=rd_DeleteDownload&id=%s&name=%s)' % (sysaddon, item['id'], name))) item = control.item(label=label) item.addContextMenuItems(cm) item.setArt({ 'icon': rd_icon, 'poster': rd_icon, 'thumb': rd_icon, 'fanart': addonFanart, 'banner': rd_icon }) item.setInfo(type='video', infoLabels='') video_streaminfo = {'codec': 'h264'} item.addStreamInfo('video', video_streaminfo) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=False) except: log_utils.error() pass if page < pages: page += 1 next = True else: next = False if next: try: nextMenu = control.lang(32053) url = '%s?action=rd_MyDownloads&query=%s' % (sysaddon, page) page = ' [I](%s)[/I]' % page nextMenu = '[COLOR skyblue]' + nextMenu + page + '[/COLOR]' item = control.item(label=nextMenu) icon = control.addonNext() item.setArt({ 'icon': rd_icon, 'poster': rd_icon, 'thumb': rd_icon, 'fanart': addonFanart, 'banner': rd_icon }) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=True) except: log_utils.error() pass control.content(syshandle, 'files') control.directory(syshandle, cacheToDisc=True)
def movieDirectory(self, items): if items == None or len(items) == 0: control.idle() ; sys.exit() sysaddon = sys.argv[0] syshandle = int(sys.argv[1]) addonPoster, addonBanner = control.addonPoster(), control.addonBanner() addonFanart, settingFanart = control.addonFanart(), control.setting('fanart') traktCredentials = trakt.getTraktCredentialsInfo() try: isOld = False ; control.item().getArt('type') except: isOld = True isEstuary = True if 'estuary' in control.skin else False isPlayable = 'true' if not 'plugin' in control.infoLabel('Container.PluginName') else 'false' indicators = playcount.getMovieIndicators(refresh=True) if action == 'movies' else playcount.getMovieIndicators() playbackMenu = control.lang(32063).encode('utf-8') if control.setting('hosts.mode') == '2' else control.lang(32064).encode('utf-8') watchedMenu = control.lang(32068).encode('utf-8') if trakt.getTraktIndicatorsInfo() == True else control.lang(32066).encode('utf-8') unwatchedMenu = control.lang(32069).encode('utf-8') if trakt.getTraktIndicatorsInfo() == True else control.lang(32067).encode('utf-8') queueMenu = control.lang(32065).encode('utf-8') traktManagerMenu = control.lang(32070).encode('utf-8') nextMenu = control.lang(32053).encode('utf-8') for i in items: try: label = '%s (%s)' % (i['title'], i['year']) imdb, title, year = i['imdb'], i['originaltitle'], i['year'] sysname = urllib.quote_plus('%s (%s)' % (title, year)) systitle = urllib.quote_plus(title) poster, banner, fanart = i['poster'], i['banner'], i['fanart'] if banner == '0' and not fanart == '0': banner = fanart elif banner == '0' and not poster == '0': banner = poster if poster == '0': poster = addonPoster if banner == '0': banner = addonBanner meta = dict((k,v) for k, v in i.iteritems() if not v == '0') meta.update({'mediatype': 'movie'}) #meta.update({'trailer': '%s?action=trailer&name=%s' % (sysaddon, sysname)}) meta.update({'trailer': 'plugin://script.extendedinfo/?info=playtrailer&&id=%s' % imdb}) if i['duration'] == '0': meta.update({'duration': '120'}) try: meta.update({'duration': str(int(meta['duration']) * 60)}) except: pass try: meta.update({'genre': cleangenre.lang(meta['genre'], self.lang)}) except: pass if isEstuary == True: try: del meta['cast'] except: pass sysmeta = urllib.quote_plus(json.dumps(meta)) url = '%s?action=play&title=%s&year=%s&imdb=%s&meta=%s&t=%s' % (sysaddon, systitle, year, imdb, sysmeta, self.systime) sysurl = urllib.quote_plus(url) path = '%s?action=play&title=%s&year=%s&imdb=%s' % (sysaddon, systitle, year, imdb) cm = [] cm.append((queueMenu, 'RunPlugin(%s?action=queueItem)' % sysaddon)) try: overlay = int(playcount.getMovieOverlay(indicators, imdb)) if overlay == 7: cm.append((unwatchedMenu, 'RunPlugin(%s?action=moviePlaycount&imdb=%s&query=6)' % (sysaddon, imdb))) meta.update({'playcount': 1, 'overlay': 7}) else: cm.append((watchedMenu, 'RunPlugin(%s?action=moviePlaycount&imdb=%s&query=7)' % (sysaddon, imdb))) meta.update({'playcount': 0, 'overlay': 6}) except: pass if traktCredentials == True: cm.append((traktManagerMenu, 'RunPlugin(%s?action=traktManager&name=%s&imdb=%s&content=movie)' % (sysaddon, sysname, imdb))) cm.append((playbackMenu, 'RunPlugin(%s?action=alterSources&url=%s&meta=%s)' % (sysaddon, sysurl, sysmeta))) if isOld == True: cm.append((control.lang2(19033).encode('utf-8'), 'Action(Info)')) item = control.item(label=label) item.setArt({'icon': poster, 'thumb': poster, 'poster': poster, 'banner': banner}) if settingFanart == 'true' and not fanart == '0': item.setProperty('Fanart_Image', fanart) elif not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) item.addContextMenuItems(cm) item.setProperty('IsPlayable', isPlayable) item.setInfo(type='Video', infoLabels = meta) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=False) except: pass try: url = items[0]['next'] if url == '': raise Exception() icon = control.addonNext() url = '%s?action=moviePage&url=%s' % (sysaddon, urllib.quote_plus(url)) item = control.item(label=nextMenu) item.setArt({'icon': icon, 'thumb': icon, 'poster': icon, 'banner': icon}) if not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=True) except: pass control.content(syshandle, 'movies') #control.do_block_check(False) control.directory(syshandle, cacheToDisc=True) views.setView('movies', {'skin.confluence': 500})
def movieDirectory(items): if items == None or len(items) == 0: control.idle() sys.exit() sysaddon = sys.argv[0] syshandle = int(sys.argv[1]) addonPoster, addonBanner = control.addonPoster(), control.addonBanner() addonFanart, settingFanart = control.addonFanart(), control.setting( 'fanart') traktCredentials = trakt.getTraktCredentialsInfo() try: isOld = False control.item().getArt('type') except: isOld = True isPlayable = 'true' if not 'plugin' in control.infoLabel( 'Container.PluginName') else 'false' indicators = playcount.getMovieIndicators( refresh=True) if action == 'movies' else playcount.getMovieIndicators( ) playbackMenu = control.lang(32063) if control.setting( 'hosts.mode') == '2' else control.lang(32064) watchedMenu = control.lang(32066) unwatchedMenu = control.lang(32067) queueMenu = control.lang(32065) traktManagerMenu = control.lang(32070) remoteManagerMenu = 'Remote Library' nextMenu = control.lang(32053) addToLibrary = control.lang(32551) for i in items: try: label = '%s' % (i['title']) imdb, tmdb, title, year = i['imdb'], i['tmdb'], i[ 'originaltitle'], i['year'] sysname = urllib.parse.quote_plus('%s (%s)' % (title, year)) systitle = urllib.parse.quote_plus(title) meta = dict((k, v) for k, v in i.items() if not v == '0') meta.update({'code': imdb, 'imdbnumber': imdb, 'imdb_id': imdb}) meta.update({'tmdb_id': tmdb}) meta.update({'mediatype': 'movie'}) meta.update({ 'trailer': '%s?action=trailer&name=%s' % (sysaddon, urllib.parse.quote_plus(label)) }) #meta.update({'trailer': 'plugin://script.extendedinfo/?info=playtrailer&&id=%s' % imdb}) if not 'duration' in i: meta.update({'duration': '120'}) elif i['duration'] == '0': meta.update({'duration': '120'}) try: meta.update({'duration': str(int(meta['duration']) * 60)}) except: pass try: meta.update( {'genre': cleangenre.lang(meta['genre'], self.lang)}) except: pass poster = [ i[x] for x in ['poster3', 'poster', 'poster2'] if i.get(x, '0') != '0' ] poster = poster[0] if poster else addonPoster meta.update({'poster': poster}) #print(("MOVIE DIRECTORY META", meta)) sysmeta = urllib.parse.quote_plus(json.dumps(meta)) url = '%s?action=play&title=%s&year=%s&imdb=%s&meta=%s' % ( sysaddon, systitle, year, imdb, sysmeta) sysurl = urllib.parse.quote_plus(url) path = '%s?action=play&title=%s&year=%s&imdb=%s' % ( sysaddon, systitle, year, imdb) #print(("MOVIE DIRECTORY 2", i)) cm = [] cm.append((queueMenu, 'RunPlugin(%s?action=queueItem)' % sysaddon)) try: overlay = int(playcount.getMovieOverlay(indicators, imdb)) if overlay == 7: cm.append(( 'Marks As Unwatched', 'RunPlugin(%s?action=moviePlaycount&imdb=%s&query=6)' % (sysaddon, imdb))) meta.update({'playcount': 1, 'overlay': 7}) else: cm.append(( 'Marks As Watched', 'RunPlugin(%s?action=moviePlaycount&imdb=%s&query=7)' % (sysaddon, imdb))) meta.update({'playcount': 0, 'overlay': 6}) except: pass cm.append(( remoteManagerMenu, 'RunPlugin(%s?action=remoteManager&imdb=%s&tmdb=%s&meta=%s&content=movie)' % (sysaddon, imdb, tmdb, sysmeta))) if traktCredentials == True: cm.append(( traktManagerMenu, 'RunPlugin(%s?action=traktManager&name=%s&imdb=%s&content=movie)' % (sysaddon, sysname, imdb))) cm.append((playbackMenu, 'RunPlugin(%s?action=alterSources&url=%s&meta=%s)' % (sysaddon, sysurl, sysmeta))) if isOld == True: cm.append((control.lang2(19033), 'Action(Info)')) cm.append(( addToLibrary, 'RunPlugin(%s?action=movieToLibrary&name=%s&title=%s&year=%s&imdb=%s&tmdb=%s&icon=%s)' % (sysaddon, sysname, systitle, year, imdb, tmdb, poster))) item = control.item(label=label) art = {} art.update({'icon': poster, 'thumb': poster, 'poster': poster}) if 'banner' in i and not i['banner'] == '0': art.update({'banner': i['banner']}) else: art.update({'banner': addonBanner}) if 'clearlogo' in i and not i['clearlogo'] == '0': art.update({'clearlogo': i['clearlogo']}) if 'clearart' in i and not i['clearart'] == '0': art.update({'clearart': i['clearart']}) if settingFanart == 'true' and 'fanart2' in i and not i[ 'fanart2'] == '0': item.setProperty('Fanart_Image', i['fanart2']) elif settingFanart == 'true' and 'fanart' in i and not i[ 'fanart'] == '0': item.setProperty('Fanart_Image', i['fanart']) elif not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) #print(("MOVIE DIRECTORY 4", i)) item.setArt(art) #print(("MOVIE DIRECTORY 5", i)) item.addContextMenuItems(cm) #print(("MOVIE DIRECTORY 6", i)) item.setProperty('IsPlayable', isPlayable) #print(("MOVIE DIRECTORY 7", meta)) item.setInfo(type='Video', infoLabels=meta) #print(("MOVIE DIRECTORY 8", i)) video_streaminfo = {'codec': 'h264'} item.addStreamInfo('video', video_streaminfo) #print(("MOVIE DIRECTORY FINAL", i)) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=False) except: pass control.content(syshandle, 'movies') control.directory(syshandle, cacheToDisc=True)
def endDirectory(self, cacheToDisc=True): control.directory(int(sys.argv[1]), cacheToDisc=cacheToDisc)
def channelDirectory(self, items): if items == None or len(items) == 0: control.idle() ; sys.exit() sysaddon = sys.argv[0] syshandle = int(sys.argv[1]) addonPoster, addonBanner = control.addonPoster(), control.addonBanner() addonFanart, settingFanart = control.addonFanart(), control.setting('fanart') try: isOld = False ; control.item().getArt('type') except: isOld = True isPlayable = 'true' if not 'plugin' in control.infoLabel('Container.PluginName') else 'false' playbackMenu = control.lang(32063).encode('utf-8') if control.setting('hosts.mode') == '2' else control.lang(32064).encode('utf-8') queueMenu = control.lang(32065).encode('utf-8') refreshMenu = control.lang(32072).encode('utf-8') for i in items: try: label = '[B]%s[/B] : %s (%s)' % (i['channel'].upper(), i['title'], i['year']) sysname = urllib.quote_plus('%s (%s)' % (i['title'], i['year'])) systitle = urllib.quote_plus(i['title']) imdb, tmdb, year = i['imdb'], i['tmdb'], i['year'] meta = dict((k,v) for k, v in i.iteritems() if not v == '0') meta.update({'code': imdb, 'imdbnumber': imdb, 'imdb_id': imdb}) meta.update({'tmdb_id': tmdb}) meta.update({'mediatype': 'movie'}) meta.update({'trailer': '%s?action=trailer&name=%s' % (sysaddon, sysname)}) #meta.update({'trailer': 'plugin://script.extendedinfo/?info=playtrailer&&id=%s' % imdb}) meta.update({'playcount': 0, 'overlay': 6}) try: meta.update({'genre': cleangenre.lang(meta['genre'], self.lang)}) except: pass sysmeta = urllib.quote_plus(json.dumps(meta)) url = '%s?action=play&title=%s&year=%s&imdb=%s&meta=%s&t=%s' % (sysaddon, systitle, year, imdb, sysmeta, self.systime) sysurl = urllib.quote_plus(url) cm = [] cm.append((queueMenu, 'RunPlugin(%s?action=queueItem)' % sysaddon)) cm.append((refreshMenu, 'RunPlugin(%s?action=refresh)' % sysaddon)) cm.append((playbackMenu, 'RunPlugin(%s?action=alterSources&url=%s&meta=%s)' % (sysaddon, sysurl, sysmeta))) if isOld == True: cm.append((control.lang2(19033).encode('utf-8'), 'Action(Info)')) item = control.item(label=label) art = {} if 'poster2' in i and not i['poster2'] == '0': art.update({'icon': i['poster2'], 'thumb': i['poster2'], 'poster': i['poster2']}) elif 'poster' in i and not i['poster'] == '0': art.update({'icon': i['poster'], 'thumb': i['poster'], 'poster': i['poster']}) else: art.update({'icon': addonPoster, 'thumb': addonPoster, 'poster': addonPoster}) art.update({'banner': addonBanner}) if settingFanart == 'true' and 'fanart' in i and not i['fanart'] == '0': item.setProperty('Fanart_Image', i['fanart']) elif not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) item.setArt(art) item.addContextMenuItems(cm) item.setProperty('IsPlayable', isPlayable) item.setInfo(type='Video', infoLabels = meta) video_streaminfo = {'codec': 'h264'} item.addStreamInfo('video', video_streaminfo) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=False) except: pass control.content(syshandle, 'files') control.directory(syshandle, cacheToDisc=True)
def tvDirectory(items): if items == None or len(items) == 0: control.idle() sys.exit() sysaddon = sys.argv[0] syshandle = int(sys.argv[1]) addonPoster, addonBanner = control.addonPoster(), control.addonBanner() addonFanart, settingFanart = control.addonFanart(), control.setting( 'fanart') traktCredentials = trakt.getTraktCredentialsInfo() try: isOld = False control.item().getArt('type') except: isOld = True indicators = playcount.getTVShowIndicators( refresh=True ) if action == 'tvshows' else playcount.getTVShowIndicators() flatten = True if control.setting('flatten.tvshows') == 'true' else False watchedMenu = control.lang(32068) if trakt.getTraktIndicatorsInfo( ) == True else control.lang(32066) unwatchedMenu = control.lang(32069) if trakt.getTraktIndicatorsInfo( ) == True else control.lang(32067) queueMenu = control.lang(32065) traktManagerMenu = control.lang(32070) nextMenu = control.lang(32053) playRandom = control.lang(32535) addToLibrary = control.lang(32551) remoteManagerMenu = 'Remote Library' for i in items: try: label = i['title'] systitle = sysname = urllib.parse.quote_plus(i['originaltitle']) sysimage = urllib.parse.quote_plus(i['poster']) imdb, tvdb, year = i['imdb'], i['tvdb'], i['year'] meta = dict((k, v) for k, v in i.items() if not v == '0') meta.update({'code': imdb, 'imdbnumber': imdb, 'imdb_id': imdb}) meta.update({'tvdb_id': tvdb}) meta.update({'mediatype': 'tvshow'}) meta.update({ 'trailer': '%s?action=trailer&name=%s' % (sysaddon, urllib.parse.quote_plus(label)) }) if not 'duration' in i: meta.update({'duration': '60'}) elif i['duration'] == '0': meta.update({'duration': '60'}) try: meta.update({'duration': str(int(meta['duration']) * 60)}) except: pass try: meta.update( {'genre': cleangenre.lang(meta['genre'], self.lang)}) except: pass try: overlay = int(playcount.getTVShowOverlay(indicators, tvdb)) # #print ("realizer OVERLAY", label, overlay) if overlay == 7: meta.update({'playcount': 1, 'overlay': 7}) else: meta.update({'playcount': 0, 'overlay': 6}) except: pass sysmeta = urllib.parse.quote_plus(json.dumps(meta)) if flatten == True: url = '%s?action=episodes&tvshowtitle=%s&year=%s&imdb=%s&tvdb=%s' % ( sysaddon, systitle, year, imdb, tvdb) else: url = '%s?action=seasons&tvshowtitle=%s&year=%s&imdb=%s&tvdb=%s&meta=%s' % ( sysaddon, systitle, year, imdb, tvdb, sysmeta) cm = [] cm.append(( playRandom, 'RunPlugin(%s?action=random&rtype=season&tvshowtitle=%s&year=%s&imdb=%s&tvdb=%s)' % (sysaddon, urllib.parse.quote_plus(systitle), urllib.parse.quote_plus(year), urllib.parse.quote_plus(imdb), urllib.parse.quote_plus(tvdb)))) cm.append((queueMenu, 'RunPlugin(%s?action=queueItem)' % sysaddon)) cm.append(( watchedMenu, 'RunPlugin(%s?action=tvPlaycount&name=%s&imdb=%s&tvdb=%s&season=0&query=7)' % (sysaddon, systitle, imdb, tvdb))) cm.append(( unwatchedMenu, 'RunPlugin(%s?action=tvPlaycount&name=%s&imdb=%s&tvdb=%s&season=0&query=6)' % (sysaddon, systitle, imdb, tvdb))) cm.append(( remoteManagerMenu, 'RunPlugin(%s?action=remoteManager&imdb=%s&tvdb=%s&meta=%s&content=tv)' % (sysaddon, imdb, tvdb, sysmeta))) if not action == 'tvFavourites': cm.append(( 'Add to Watchlist', 'RunPlugin(%s?action=addFavourite&meta=%s&content=tvshows)' % (sysaddon, sysmeta))) if action == 'tvFavourites': cm.append(( 'Remove From Watchlist', 'RunPlugin(%s?action=deleteFavourite&meta=%s&content=tvshows)' % (sysaddon, sysmeta))) # if not action == 'tvdbFav':cm.append(('Add To Tvdb', 'RunPlugin(%s?action=tvdbAdd&tvshowtitle=%s&tvdb=%s)' % (sysaddon, systitle, tvdb))) # if action == 'tvdbFav': cm.append(('Remove From Tvdb', 'RunPlugin(%s?action=tvdbRemove&tvdb=%s)' % (sysaddon, tvdb))) if traktCredentials == True: cm.append(( traktManagerMenu, 'RunPlugin(%s?action=traktManager&name=%s&tvdb=%s&content=tvshow)' % (sysaddon, sysname, tvdb))) if isOld == True: cm.append((control.lang2(19033), 'Action(Info)')) cm.append(( addToLibrary, 'RunPlugin(%s?action=tvshowToLibrary&tvshowtitle=%s&year=%s&imdb=%s&tvdb=%s&icon=%s)' % (sysaddon, systitle, year, imdb, tvdb, i['poster']))) item = control.item(label=label) art = {} if 'poster' in i and not i['poster'] == '0': art.update({ 'icon': i['poster'], 'thumb': i['poster'], 'poster': i['poster'] }) #elif 'poster2' in i and not i['poster2'] == '0': #art.update({'icon': i['poster2'], 'thumb': i['poster2'], 'poster': i['poster2']}) else: art.update({ 'icon': addonPoster, 'thumb': addonPoster, 'poster': addonPoster }) if 'banner' in i and not i['banner'] == '0': art.update({'banner': i['banner']}) #elif 'banner2' in i and not i['banner2'] == '0': #art.update({'banner': i['banner2']}) elif 'fanart' in i and not i['fanart'] == '0': art.update({'banner': i['fanart']}) else: art.update({'banner': addonBanner}) if 'clearlogo' in i and not i['clearlogo'] == '0': art.update({'clearlogo': i['clearlogo']}) if 'clearart' in i and not i['clearart'] == '0': art.update({'clearart': i['clearart']}) if settingFanart == 'true' and 'fanart' in i and not i[ 'fanart'] == '0': item.setProperty('Fanart_Image', i['fanart']) #elif settingFanart == 'true' and 'fanart2' in i and not i['fanart2'] == '0': #item.setProperty('Fanart_Image', i['fanart2']) elif not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) item.setArt(art) item.addContextMenuItems(cm) item.setInfo(type='Video', infoLabels=meta) video_streaminfo = {'codec': 'h264'} item.addStreamInfo('video', video_streaminfo) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=True) except: pass control.content(syshandle, 'tvshows') control.directory(syshandle, cacheToDisc=True)
def movieDirectory(self, items): if items == None or len(items) == 0: return isFolder = True if control.setting( 'autoplay') == 'false' and control.setting( 'hosts.mode') == '1' else False isFolder = False if control.window.getProperty( 'PseudoTVRunning') == 'True' else isFolder playbackMenu = control.lang(30204).encode('utf-8') if control.setting( 'autoplay') == 'true' else control.lang(30203).encode('utf-8') traktCredentials = trakt.getTraktCredentialsInfo() indicators = playcount.getMovieIndicators() cacheToDisc = False if not action == 'movieSearch' else True addonPoster, addonBanner = control.addonPoster(), control.addonBanner() addonFanart, settingFanart = control.addonFanart(), control.setting( 'fanart') sysaddon = sys.argv[0] for i in items: try: label = '%s (%s)' % (i['title'], i['year']) imdb, title, year = i['imdb'], i['originaltitle'], i['year'] sysname = urllib.quote_plus('%s (%s)' % (title, year)) sysimage = urllib.quote_plus(i['poster']) systitle = urllib.quote_plus(title) poster, banner, fanart = i['poster'], i['banner'], i['fanart'] if poster == '0': poster = addonPoster if banner == '0' and poster == '0': banner = addonBanner elif banner == '0': banner = poster meta = dict((k, v) for k, v in i.iteritems() if not v == '0') meta.update({ 'trailer': '%s?action=trailer&name=%s' % (sysaddon, sysname) }) if i['duration'] == '0': meta.update({'duration': '120'}) try: meta.update({'duration': str(int(meta['duration']) * 60)}) except: pass try: meta.update( {'genre': cleangenre.lang(meta['genre'], self.lang)}) except: pass sysmeta = urllib.quote_plus(json.dumps(meta)) url = '%s?action=play&title=%s&year=%s&imdb=%s&meta=%s&t=%s' % ( sysaddon, systitle, year, imdb, sysmeta, self.systime) sysurl = urllib.quote_plus(url) path = '%s?action=play&title=%s&year=%s&imdb=%s' % ( sysaddon, systitle, year, imdb) if isFolder == True: url = '%s?action=sources&title=%s&year=%s&imdb=%s&meta=%s' % ( sysaddon, systitle, year, imdb, sysmeta) try: overlay = int(playcount.getMovieOverlay(indicators, imdb)) if overlay == 7: meta.update({'playcount': 1, 'overlay': 7}) else: meta.update({'playcount': 0, 'overlay': 6}) except: pass cm = [] cm.append((playbackMenu, 'RunPlugin(%s?action=alterSources&url=%s&meta=%s)' % (sysaddon, sysurl, sysmeta))) if isFolder == False: cm.append((control.lang(30202).encode('utf-8'), 'RunPlugin(%s?action=queueItem)' % sysaddon)) if traktCredentials == True: cm.append((control.lang(30208).encode( 'utf-8' ), 'RunPlugin(%s?action=traktManager&name=%s&imdb=%s&content=movie)' % (sysaddon, sysname, imdb))) cm.append((control.lang(30214).encode('utf-8'), 'RunPlugin(%s?action=trailer&name=%s)' % (sysaddon, sysname))) cm.append( (control.lang(30205).encode('utf-8'), 'Action(Info)')) cm.append( (control.lang(30206).encode('utf-8'), 'RunPlugin(%s?action=moviePlaycount&imdb=%s&query=7)' % (sysaddon, imdb))) cm.append( (control.lang(30207).encode('utf-8'), 'RunPlugin(%s?action=moviePlaycount&imdb=%s&query=6)' % (sysaddon, imdb))) cm.append( (control.lang(30212).encode('utf-8'), 'RunPlugin(%s?action=addView&content=movies)' % sysaddon)) item = control.item(label=label, iconImage=poster, thumbnailImage=poster) try: item.setArt({'poster': poster, 'banner': banner}) except: pass if settingFanart == 'true' and not fanart == '0': item.setProperty('Fanart_Image', fanart) elif not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) item.setInfo(type='Video', infoLabels=meta) item.setProperty('Video', 'true') #item.setProperty('IsPlayable', 'true') item.addContextMenuItems(cm, replaceItems=True) control.addItem(handle=int(sys.argv[1]), url=url, listitem=item, isFolder=isFolder) except: pass try: url = items[0]['next'] if url == '': raise Exception() url = '%s?action=movies&url=%s' % (sysaddon, urllib.quote_plus(url)) addonNext = control.addonNext() item = control.item(label=control.lang(30213).encode('utf-8'), iconImage=addonNext, thumbnailImage=addonNext) item.addContextMenuItems([], replaceItems=True) if not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) control.addItem(handle=int(sys.argv[1]), url=url, listitem=item, isFolder=True) except: pass control.content(int(sys.argv[1]), 'movies') control.directory(int(sys.argv[1]), cacheToDisc=cacheToDisc) views.setView('movies', {'skin.confluence': 500})
def endDirectory(self): control.content(syshandle, 'addons') control.directory(syshandle, cacheToDisc=True)
def to_items(url): #34 data = client.request(url, headers=headers) posts = zip( client.parseDOM(data, 'div', attrs={'class': 'content item-content'}), client.parseDOM(data, 'h2')) for post, name in posts: try: plot = re.findall(r'''Plot</div>(.+?)<div class="plot''', post, re.DOTALL)[0] except IndexError: plot = 'N/A' desc = client.replaceHTMLCodes(plot) desc = tools.clear_Title(desc) desc = desc.encode('utf-8') try: title = client.parseDOM(name, 'a')[0] except BaseException: title = client.parseDOM(name, 'img', ret='alt')[0] # try: # year = client.parseDOM(data, 'div', {'class': 'metadata'})[0] # year = client.parseDOM(year, 'span')[0] # year = '[COLOR lime]({0})[/COLOR]'.format(year) # except IndexError: # year = '(N/A)' title = tools.clear_Title(title) title = '[B][COLOR white]{}[/COLOR][/B]'.format(title).encode('utf-8') link = client.parseDOM(name, 'a', ret='href')[0] link = client.replaceHTMLCodes(link).encode('utf-8', 'ignore') try: poster = client.parseDOM(post, 'img', ret='src')[0] except IndexError: poster = client.parseDOM(post, 'img', ret='data-src')[0] poster = client.replaceHTMLCodes(poster).encode('utf-8', 'ignore') # if '/tvshows/' in link: # addon.add_directory({'mode': 'to_seasons', 'url': link}, {'title': title, 'plot': str(desc)}, # allfun, img=poster, fanart=FANART) # else: addon.add_directory({ 'mode': 'ddl_links', 'url': link }, { 'title': title, 'plot': str(desc) }, allfun, img=poster, fanart=FANART) try: np = client.parseDOM(data, 'a', ret='href', attrs={'rel': 'next'})[0] # np = dom_parser.parse_dom(np, 'a', req='href') # np = [i.attrs['href'] for i in np if 'icon-chevron-right' in i.content][0] page = re.findall(r'page=(\d+)$', np)[0] title = control.lang(32010).encode('utf-8') + \ ' [COLORwhite]([COLORlime]{}[/COLOR])[/COLOR]'.format(page) addon.add_directory({ 'mode': 'ddl_items', 'url': np }, {'title': title}, img=ART + 'next_page.png', fanart=FANART) except BaseException: pass control.content(int(sys.argv[1]), 'movies') control.directory(int(sys.argv[1])) view.setView('movies', {'skin.estuary': 55, 'skin.confluence': 500})
def movieDirectory(self, items): if items == None or len(items) == 0: return isFolder = True if control.setting('autoplay') == 'false' and control.setting('hosts.mode') == '1' else False isFolder = False if control.window.getProperty('PseudoTVRunning') == 'True' else isFolder playbackMenu = control.lang(30204).encode('utf-8') if control.setting('autoplay') == 'true' else control.lang(30203).encode('utf-8') traktCredentials = trakt.getTraktCredentialsInfo() indicators = playcount.getMovieIndicators() cacheToDisc = False if not action == 'movieSearch' else True addonPoster, addonBanner = control.addonPoster(), control.addonBanner() addonFanart, settingFanart = control.addonFanart(), control.setting('fanart') sysaddon = sys.argv[0] for i in items: try: label = '%s (%s)' % (i['title'], i['year']) imdb, title, year = i['imdb'], i['originaltitle'], i['year'] sysname = urllib.quote_plus('%s (%s)' % (title, year)) sysimage = urllib.quote_plus(i['poster']) systitle = urllib.quote_plus(title) poster, banner, fanart = i['poster'], i['banner'], i['fanart'] if poster == '0': poster = addonPoster if banner == '0' and poster == '0': banner = addonBanner elif banner == '0': banner = poster meta = dict((k,v) for k, v in i.iteritems() if not v == '0') meta.update({'trailer': '%s?action=trailer&name=%s' % (sysaddon, sysname)}) if i['duration'] == '0': meta.update({'duration': '120'}) try: meta.update({'duration': str(int(meta['duration']) * 60)}) except: pass try: meta.update({'genre': cleangenre.lang(meta['genre'], self.lang)}) except: pass try: del meta['tagline'] except: pass sysmeta = urllib.quote_plus(json.dumps(meta)) url = '%s?action=play&title=%s&year=%s&imdb=%s&meta=%s&t=%s' % (sysaddon, systitle, year, imdb, sysmeta, self.systime) sysurl = urllib.quote_plus(url) path = '%s?action=play&title=%s&year=%s&imdb=%s' % (sysaddon, systitle, year, imdb) if isFolder == True: url = '%s?action=sources&title=%s&year=%s&imdb=%s&meta=%s' % (sysaddon, systitle, year, imdb, sysmeta) try: overlay = int(playcount.getMovieOverlay(indicators, imdb)) if overlay == 7: meta.update({'playcount': 1, 'overlay': 7}) else: meta.update({'playcount': 0, 'overlay': 6}) except: pass cm = [] cm.append((playbackMenu, 'RunPlugin(%s?action=alterSources&url=%s&meta=%s)' % (sysaddon, sysurl, sysmeta))) if isFolder == False: cm.append((control.lang(30202).encode('utf-8'), 'RunPlugin(%s?action=queueItem)' % sysaddon)) if traktCredentials == True: cm.append((control.lang(30208).encode('utf-8'), 'RunPlugin(%s?action=traktManager&name=%s&imdb=%s&content=movie)' % (sysaddon, sysname, imdb))) cm.append((control.lang(30214).encode('utf-8'), 'RunPlugin(%s?action=trailer&name=%s)' % (sysaddon, sysname))) cm.append((control.lang(30205).encode('utf-8'), 'Action(Info)')) cm.append((control.lang(30206).encode('utf-8'), 'RunPlugin(%s?action=moviePlaycount&imdb=%s&query=7)' % (sysaddon, imdb))) cm.append((control.lang(30207).encode('utf-8'), 'RunPlugin(%s?action=moviePlaycount&imdb=%s&query=6)' % (sysaddon, imdb))) cm.append((control.lang(30212).encode('utf-8'), 'RunPlugin(%s?action=addView&content=movies)' % sysaddon)) item = control.item(label=label, iconImage=poster, thumbnailImage=poster) try: item.setArt({'poster': poster, 'banner': banner}) except: pass if settingFanart == 'true' and not fanart == '0': item.setProperty('Fanart_Image', fanart) elif not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) item.setInfo(type='Video', infoLabels = meta) item.setProperty('Video', 'true') #item.setProperty('IsPlayable', 'true') item.addContextMenuItems(cm, replaceItems=True) control.addItem(handle=int(sys.argv[1]), url=url, listitem=item, isFolder=isFolder) except: pass try: url = items[0]['next'] if url == '': raise Exception() url = '%s?action=movies&url=%s' % (sysaddon, urllib.quote_plus(url)) addonNext = control.addonNext() item = control.item(label=control.lang(30213).encode('utf-8'), iconImage=addonNext, thumbnailImage=addonNext) item.addContextMenuItems([], replaceItems=True) if not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) control.addItem(handle=int(sys.argv[1]), url=url, listitem=item, isFolder=True) except: pass control.content(int(sys.argv[1]), 'movies') control.directory(int(sys.argv[1]), cacheToDisc=cacheToDisc) views.setView('movies', {'skin.confluence': 500})
def to_links(url, img, plot): # Get Links try: html = client.request(url, headers=headers) try: # <h1 class="postTitle" rel="bookmark">American Dresser 2018 BRRip XviD AC3-RBG</h1> match = client.parseDOM(html, 'h2')[0] match = re.findall(r'(.+?)\.(\d{4}|S\d+E\d+)\.', match)[0] listitem = match except IndexError: match = client.parseDOM(html, 'h2')[0] match = re.sub('<.+?>', '', match) listitem = match name = '%s (%s)' % (listitem[0].replace('.', ' '), listitem[1]) main = client.parseDOM(html, 'div', {'class': 'content item-content'})[0] links = [] import resolveurl frames = client.parseDOM(main, 'a', ret='href') for url in frames: host = tools.GetDomain(url) if 'Unknown' in host: continue # ignore .rar files if any(x in url.lower() for x in ['.rar.', '.zip.', '.iso.', '.part']) \ or any(url.lower().endswith(x) for x in ['.rar', '.zip', '.iso', '.part']): continue if any(x in url.lower() for x in ['sample', 'zippyshare']): continue addon.log('******* %s : %s' % (host, url)) if resolveurl.HostedMediaFile(url=url): addon.log('in GetLinks if loop') title = url.rpartition('/') title = title[2].replace('.html', '') title = title.replace('.htm', '') title = title.replace( '.rar', '[COLOR red][B][I]RAR no streaming[/B][/I][/COLOR]') title = title.replace( 'rar', '[COLOR red][B][I]RAR no streaming[/B][/I][/COLOR]') title = title.replace('www.', '') title = title.replace('DDLValley.me_', ' ') title = title.replace('_', ' ') title = title.replace('.', ' ') title = title.replace( '480p', '[COLOR coral][B][I]480p[/B][/I][/COLOR]') title = title.replace( '540p', '[COLOR coral][B][I]540p[/B][/I][/COLOR]') title = title.replace( '720p', '[COLOR gold][B][I]720p[/B][/I][/COLOR]') title = title.replace( '1080p', '[COLOR orange][B][I]1080p[/B][/I][/COLOR]') title = title.replace( '1080i', '[COLOR orange][B][I]1080i[/B][/I][/COLOR]') title = title.replace('2160p', '[COLOR cyan][B][I]4K[/B][/I][/COLOR]') title = title.replace('.4K.', '[COLOR cyan][B][I]4K[/B][/I][/COLOR]') title = title.replace( 'mkv', '[COLOR gold][B][I]MKV[/B][/I][/COLOR] ') title = title.replace( 'avi', '[COLOR pink][B][I]AVI[/B][/I][/COLOR] ') title = title.replace( 'mp4', '[COLOR purple][B][I]MP4[/B][/I][/COLOR] ') host = host.replace( 'youtube.com', '[COLOR red][B][I]Movie Trailer[/B][/I][/COLOR]') if 'railer' in host: title = host + ' : ' + title addon.add_directory( { 'mode': 'PlayVideo', 'url': url, 'img': img, 'title': name, 'plot': plot }, { 'title': title, 'plot': plot }, [( control.lang(32007).encode('utf-8'), 'RunPlugin(plugin://plugin.video.rlshub/?mode=settings)', ), ( control.lang(32008).encode('utf-8'), 'RunPlugin(plugin://plugin.video.rlshub/?mode=ClearCache)', ), ( control.lang(32009).encode('utf-8'), 'RunPlugin(plugin://plugin.video.rlshub/?mode=setviews)', )], img=img, fanart=FANART, is_folder=False) else: links.append((host, title, url, name)) if control.setting('test.links') == 'true': threads = [] for i in links: threads.append(tools.Thread(tools.link_tester, i)) [i.start() for i in threads] [i.join() for i in threads] for item in tools.tested_links: link, title, name = item[0], item[1], item[2] cm = [ ( control.lang(32007).encode('utf-8'), 'RunPlugin(plugin://plugin.video.rlshub/?mode=settings)', ), ( control.lang(32008).encode('utf-8'), 'RunPlugin(plugin://plugin.video.rlshub/?mode=ClearCache)', ), ( control.lang(32009).encode('utf-8'), 'RunPlugin(plugin://plugin.video.rlshub/?mode=setviews)', ) ] downloads = True if control.setting( 'downloads') == 'true' and not ( control.setting('movie.download.path') == '' or control.setting('tv.download.path') == '') else False if downloads: # frame = resolveurl.resolve(link) cm.append((control.lang(32013).encode( 'utf-8' ), 'RunPlugin(plugin://plugin.video.rlshub/?mode=download&title=%s&img=%s&url=%s)' % (name, img, link))) addon.add_directory( { 'mode': 'PlayVideo', 'url': link, 'listitem': listitem, 'img': img, 'title': name, 'plot': plot }, { 'title': title, 'plot': plot }, cm, img=img, fanart=FANART, is_folder=False) else: for item in links: host, title, link, name = item[0], item[1], item[2], item[3] title = '%s - %s' % (host, title) cm = [ ( control.lang(32007).encode('utf-8'), 'RunPlugin(plugin://plugin.video.rlshub/?mode=settings)', ), ( control.lang(32008).encode('utf-8'), 'RunPlugin(plugin://plugin.video.rlshub/?mode=ClearCache)', ), ( control.lang(32009).encode('utf-8'), 'RunPlugin(plugin://plugin.video.rlshub/?mode=setviews)', ) ] downloads = True if control.setting( 'downloads') == 'true' and not ( control.setting('movie.download.path') == '' or control.setting('tv.download.path') == '') else False if downloads: cm.append((control.lang(32013).encode( 'utf-8' ), 'RunPlugin(plugin://plugin.video.rlshub/?mode=download&title=%s&img=%s&url=%s)' % (name, img, link))) addon.add_directory( { 'mode': 'PlayVideo', 'url': link, 'listitem': listitem, 'img': img, 'title': name, 'plot': plot }, { 'title': title, 'plot': plot }, cm, img=img, fanart=FANART, is_folder=False) except BaseException: control.infoDialog( control.lang(32012).encode('utf-8'), NAME, ICON, 5000) control.content(int(sys.argv[1]), 'videos') control.directory(int(sys.argv[1])) view.setView('videos', {'skin.estuary': 55, 'skin.confluence': 500})
def addItem(self, title, year, imdb, tvdb, season, episode, tvshowtitle, premiered, meta): try: if 'super.fav' in control.infoLabel('Container.PluginName'): return control.dialog.ok('Exodus', control.lang(30518).encode('utf-8'), '', '') self.sources = self.getSources(title, year, imdb, tvdb, season, episode, tvshowtitle, premiered) if self.sources == []: raise Exception() self.progressDialog = control.progressDialog self.progressDialog.create(control.addonInfo('name'), '') self.progressDialog.update(0, control.lang(30515).encode('utf-8'), str(' ')) trailerMenu = control.lang(30516).encode('utf-8') if tvshowtitle == None else control.lang(30517).encode('utf-8') infoMenu = control.lang(30502).encode('utf-8') if tvshowtitle == None else control.lang(30503).encode('utf-8') downloads = True if control.setting('downloads') == 'true' and not (control.setting('movie.download.path') == '' or control.setting('tv.download.path') == '') else False meta = json.loads(meta) try: del meta['year'] except: pass poster = meta['poster'] if 'poster' in meta else '0' banner = meta['banner'] if 'banner' in meta else '0' thumb = meta['thumb'] if 'thumb' in meta else poster fanart = meta['fanart'] if 'fanart' in meta else '0' if poster == '0': poster = control.addonPoster() if banner == '0' and poster == '0': banner = control.addonBanner() elif banner == '0': banner = poster if thumb == '0' and fanart == '0': thumb = control.addonFanart() elif thumb == '0': thumb = fanart if control.setting('fanart') == 'true' and not fanart == '0': pass else: fanart = control.addonFanart() systitle = urllib.quote_plus('%s (%s)' % (title, year) if tvshowtitle == None or season == None or episode == None else '%s S%02dE%02d' % (tvshowtitle, int(season), int(episode))) sysname = urllib.quote_plus('%s (%s)' % (title, year) if tvshowtitle == None or season == None or episode == None else tvshowtitle) sysimage, sysaddon = urllib.quote_plus(poster), sys.argv[0] for i in range(len(self.sources)): try: #if self.progressDialog.iscanceled(): break self.progressDialog.update(int((100 / float(len(self.sources))) * i)) label = self.sources[i]['label'] syssource = urllib.quote_plus(json.dumps([self.sources[i]])) url = '%s?action=playItem&source=%s' % (sysaddon, syssource) cm = [] cm.append((control.lang(30504).encode('utf-8'), 'RunPlugin(%s?action=queueItem)' % sysaddon)) if downloads == True: cm.append((control.lang(30505).encode('utf-8'), 'RunPlugin(%s?action=download&name=%s&image=%s&source=%s)' % (sysaddon, systitle, sysimage, syssource))) cm.append((trailerMenu, 'RunPlugin(%s?action=trailer&name=%s)' % (sysaddon, sysname))) cm.append((infoMenu, 'Action(Info)')) cm.append((control.lang(30506).encode('utf-8'), 'RunPlugin(%s?action=refresh)' % sysaddon)) cm.append((control.lang(30507).encode('utf-8'), 'RunPlugin(%s?action=openSettings)' % sysaddon)) cm.append((control.lang(30508).encode('utf-8'), 'RunPlugin(%s?action=openPlaylist)' % sysaddon)) item = control.item(label=label, iconImage='DefaultVideo.png', thumbnailImage=thumb) try: item.setArt({'poster': poster, 'tvshow.poster': poster, 'season.poster': poster, 'banner': banner, 'tvshow.banner': banner, 'season.banner': banner}) except: pass item.setInfo(type='Video', infoLabels = meta) if not fanart == None: item.setProperty('Fanart_Image', fanart) item.setProperty('Video', 'true') item.addContextMenuItems(cm, replaceItems=True) control.addItem(handle=int(sys.argv[1]), url=url, listitem=item, isFolder=False) except: pass control.content(int(sys.argv[1]), 'files') control.directory(int(sys.argv[1]), cacheToDisc=True) try: self.progressDialog.close() except: pass except: control.infoDialog(control.lang(30501).encode('utf-8')) try: self.progressDialog.close() except: pass