def __init__(self): self.list = [] self.languagesList = [ ('Hindi', 'hi'), ('Tamil', 'ta'), ('Telugu', 'te'), ('Marathi', 'mr'), ('Panjabi', 'pa'), ('Bengali', 'bn'), ('Gujarati', 'gu'), ('Malayalam', 'ml'), ('Kannada','kn') ] self.imdb_link = 'http://www.imdb.com' self.tmdb_key = base64.urlsafe_b64decode('MTdmMjI3YmVjNTdkOTQ4OGJiYzgyNzYyZmMxNDQ0NmM=') self.datetime = (datetime.datetime.utcnow() - datetime.timedelta(hours = 5)) self.systime = (self.datetime).strftime('%Y%m%d%H%M%S%f') self.imdb_user = control.setting('imdb_user').replace('ur', '') self.info_lang = control.setting('infoLang') or 'en' self.imdb_info_link = 'http://www.omdbapi.com/?i=%s&plot=full&r=json' self.trakt_info_link = 'http://api-v2launch.trakt.tv/movies/%s?extended=images' self.tm_art_link = 'http://api.themoviedb.org/3/movie/%s/images?api_key=%s' % ('%s',self.tmdb_key) self.tm_info_link = 'http://api.themoviedb.org/3/movie/%s?api_key=%s&append_to_response=credits,images,trailers' % ('%s',self.tmdb_key) self.tm_img_link = 'https://image.tmdb.org/t/p/w%s%s' #self.search_link = 'http://api.themoviedb.org/3/search/movie?api_key=%s&query=%s' self.search_link = 'http://www.imdb.com/search/title?sort=release_date,desc&title=%s' self.language_link = 'http://www.imdb.com/search/title?title_type=feature,tv_movie&num_votes=100,&production_status=released&languages=%s&count=40&start=1&sort=release_date,desc&start=1' self.featured_link = 'http://www.imdb.com/search/title?title_type=feature,tv_movie&languages=%s&num_votes=1000,&production_status=released&release_date=date[365],date[60]&sort=moviemeter,asc&count=40&start=1' self.popular_link = 'http://www.imdb.com/search/title?title_type=feature,tv_movie&languages=%s&num_votes=1000,&production_status=released&groups=top_1000&sort=moviemeter,asc&count=40&start=1' self.genre_link = 'http://www.imdb.com/search/title?title_type=feature,tv_movie&languages=%s&num_votes=100,&release_date=date[730],date[30]&genres=%s&sort=release_date,desc&count=40&start=1' self.year_link = 'http://www.imdb.com/search/title?title_type=feature,tv_movie&languages=%s&num_votes=100,&production_status=released&year=%s,%s&sort=release_date,desc&count=40&start=1'
def __init__(self): self.base_link_1 = 'http://%s.hotstar.com' self.base_link_2 = self.base_link_1 self.search_link = '/AVS/besc?action=SearchContents&channel=PCTV&maxResult=34&query=%s&startIndex=0&type=MOVIE,SERIES,SPORT,SPORT_LIVE' self.cdn_link = 'http://getcdn.hotstar.com/AVS/besc?action=GetCDN&asJson=Y&channel=PCTV&id=%s&type=VOD' self.info_link = '' self.now = datetime.datetime.now() self.theaters_link = '/category/%s/feed' % (self.now.year) self.added_link = '/category/hindi-movies/feed' self.HD_link = '/category/hindi-blurays/feed' self.res_map = { "1080": "1080p", "900": "HD", "720": "HD", "404": "SD", "360": "SCR" } self.srcs = [] if not (control.setting('hotstar_ip') == ''): self.ip = control.setting('hotstar_ip') else: ips = ['118.94.0.%s' % str(i) for i in range(0, 100)] self.ip = random.choice(ips) self.headers = { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Accept-Encoding': 'gzip, deflate, sdch', 'Connection': 'keep-alive', 'User-Agent': 'AppleCoreMedia/1.0.0.12B411 (iPhone; U; CPU OS 8_1 like Mac OS X; en_gb)', 'X-Forwarded-For': self.ip }
def __init__(self): self.base_link_1 = 'http://erosnow.com' self.base_link_2 = self.base_link_1 self.search_link = '/search/movies?q=%s&start=0&rows=20&cc=US' self.info_link = '/catalog/movie/%s/cc=US' self.login_link = 'https://erosnow.com/secured/dologin' self.now = datetime.datetime.now() self.user = control.setting('eros.user') self.password = control.setting('eros.pwd') self.srcs = []
def livetv(self, generateJSON=False): try: retValue = 0 generateJSON = cache.get(self.removeJSON, 168, __name__, table='live_cache') if not os.path.exists(self.filePath): generateJSON = 1 if generateJSON: fileFetcher = FileFetcher(self.fileName, control.addon) if control.setting('livelocal') == 'true': retValue = 1 else: retValue = fileFetcher.fetchFile() if retValue < 0: raise Exception() liveParser = LiveParser(self.fileName, control.addon) self.srcs = liveParser.parseFile() return (retValue, self.srcs) except: import traceback traceback.print_exc() pass
def sources(self, url): logger.debug('SOURCES URL %s' % url, __name__) try: quality = '' self.srcs = [] if url == None: return self.srcs try: result = client.request(url) except: result = '' result = result.decode('iso-8859-1').encode('utf-8') result = client.parseDOM(result, "div", attrs={"class": "col-md-12 mt20"})[0] try : item = client.parseDOM(result, "center")[0] url = re.compile('(SRC|src|data-config)=\"(.+?)\"').findall(item)[0][1] host = client.host(url) self.srcs.append({'source': host, 'parts' : '1', 'quality': quality, 'provider': 'iBollyTV', 'url': url, 'direct':False}) except: pass hypermode = False if control.setting('hypermode') == 'false' else True threads = [] try : result = client.parseDOM(result, "div", attrs={"class": "table-responsive"})[0] result = client.parseDOM(result, "tbody")[0] result = client.parseDOM(result, "tr") for item in result: if hypermode : threads.append(workers.Thread(self.source, item)) else : self.source(item) if hypermode: [i.start() for i in threads] stillWorking = True while stillWorking: stillWorking = False stillWorking = [True for x in threads if x.is_alive() == True] except: pass logger.debug('SOURCES [%s]' % self.srcs, __name__) return self.srcs except: return self.srcs
def __init__(self): self.list = [] self.trakt_link = 'http://api-v2launch.trakt.tv' self.tvdb_key = base64.urlsafe_b64decode('OUZDQkM2MjlEQzgyRjA4Qw==') self.datetime = (datetime.datetime.utcnow() - datetime.timedelta(hours=5)) self.systime = (self.datetime).strftime('%Y%m%d%H%M%S%f') self.today_date = (self.datetime).strftime('%Y-%m-%d') self.trakt_user = control.setting('trakt_user') self.info_lang = control.setting('infoLang') or 'en' self.tvdb_info_link = 'http://thetvdb.com/api/%s/series/%s/all/%s.zip' % ( self.tvdb_key, '%s', '%s') self.tvdb_image = 'http://thetvdb.com/banners/' self.tvdb_poster = 'http://thetvdb.com/banners/_cache/' self.mycalendar_link = 'http://api-v2launch.trakt.tv/calendars/my/shows/%s/31/' % ( self.datetime - datetime.timedelta(days=32)).strftime('%Y-%m-%d') self.progress_link = 'http://api-v2launch.trakt.tv/users/%s/watched/shows' % self.trakt_user self.calendar_link = 'http://api-v2launch.trakt.tv/calendars/all/shows/%s/%s' self.scn_link = 'http://m2v.ru' self.added_link = 'http://m2v.ru/?Part=11&func=part&page=1'
def __init__(self): self.list = [] self.tmdb_key = base64.urlsafe_b64decode('MTdmMjI3YmVjNTdkOTQ4OGJiYzgyNzYyZmMxNDQ0NmM=') self.tvdb_key = base64.urlsafe_b64decode('OUZDQkM2MjlEQzgyRjA4Qw==') self.datetime = (datetime.datetime.utcnow() - datetime.timedelta(hours = 5)) self.info_lang = control.setting('infoLang') or 'en' self.tvdb_info_link = 'http://thetvdb.com/api/%s/series/%s/%s.xml' % (self.tvdb_key, '%s', re.sub('bg', 'en', self.info_lang)) self.tvdb_search_link = 'http://thetvdb.com/api/GetSeries.php?seriesname=%s' self.tvdb_by_imdb = 'http://thetvdb.com/api/GetSeriesByRemoteID.php?imdbid=%s' self.imdb_by_query = 'http://www.omdbapi.com/?t=%s&y=%s' self.imdb_by_title = 'http://www.omdbapi.com/?t=%s' self.tvdb_image = 'http://thetvdb.com/banners/' self.burp_search_link = 'http://tv.burrp.com/search.html?q=%s'
def sources(self, url): logger.debug('SOURCES URL %s' % url, __name__) try: if url == None: return self.srcs url = '%s%s' % (self.base_link, url) try: result = client.request(url) except: result = '' result = result.decode('iso-8859-1').encode('utf-8') result = result.replace('\n', '').replace('\t', '') result = client.parseDOM(result, "table", attrs={"class": "table table-bordered"})[0] result = client.parseDOM(result, "tbody")[0] result = client.parseDOM(result, "tr") hypermode = False if control.setting( 'hypermode') == 'false' else True threads = [] for item in result: if hypermode: threads.append(workers.Thread(self.source, item)) else: self.source(item) if hypermode: [i.start() for i in threads] stillWorking = True while stillWorking: stillWorking = False stillWorking = [ True for x in threads if x.is_alive() == True ] logger.debug('SOURCES [%s]' % self.srcs, __name__) return self.srcs except: return self.srcs
def desiTV(self): listItems = [] provider = control.setting('tvshow.provider') if not provider == None: try: call = __import__('resources.lib.sources.%s' % provider, globals(), locals(), ['source'], -1).source() listItems = call.networks() except Exception as e: logger.error(e) pass else: from resources.lib.sources import desirulez listItems = desirulez.source().networks() listItems.sort() for item in listItems: self.addDirectoryItem(item['name'], '%s&provider=%s&url=%s' % (item['action'],item['provider'], item['url']), os.path.join( control.logoPath(), item['image']), 'DefaultMovies.png') self.endDirectory()
def __init__(self): self.list = [] self.tmdb_key = base64.urlsafe_b64decode( 'MTdmMjI3YmVjNTdkOTQ4OGJiYzgyNzYyZmMxNDQ0NmM=') self.tvdb_key = base64.urlsafe_b64decode('OUZDQkM2MjlEQzgyRjA4Qw==') self.datetime = (datetime.datetime.utcnow() - datetime.timedelta(hours=5)) self.today_date = (self.datetime).strftime('%Y-%m-%d') self.info_lang = control.setting('infoLang') or 'en' self.tmdb_info_link = 'http://api.themoviedb.org/3/tv/%s?api_key=%s&language=%s&append_to_response=credits,content_ratings,external_ids' % ( '%s', self.tmdb_key, '%s') self.tvdb_info_link = 'http://thetvdb.com/api/%s/series/%s/all/%s.zip' % ( self.tvdb_key, '%s', '%s') self.tmdb_by_imdb = 'http://api.themoviedb.org/3/find/%s?api_key=%s&external_source=imdb_id' % ( '%s', self.tmdb_key) self.tmdb_by_tvdb = 'http://api.themoviedb.org/3/find/%s?api_key=%s&external_source=tvdb_id' % ( '%s', self.tmdb_key) self.tvdb_by_imdb = 'http://thetvdb.com/api/GetSeriesByRemoteID.php?imdbid=%s' self.tmdb_image = 'http://image.tmdb.org/t/p/original' self.tmdb_poster = 'http://image.tmdb.org/t/p/w500' self.tvdb_image = 'http://thetvdb.com/banners/' self.tvdb_poster = 'http://thetvdb.com/banners/_cache/'
def episodeDirectory(self, items, provider=None, confViewMode='list', estViewMode='widelist'): if items == None or len(items) == 0: return isFolder = True if control.setting('host_select') == '1' else False isPlayable = 'true' if not 'plugin' in control.infoLabel( 'Container.PluginName') else 'false' playbackMenu = control.lang(30271).encode('utf-8') if control.setting( 'host_select') == '2' else control.lang(30270).encode('utf-8') cacheToDisc = False addonPoster, addonBanner = control.addonPoster(), control.addonBanner() addonFanart, settingFanart = control.addonFanart(), control.setting( 'fanart') indicators = playcount.getTVShowIndicators(refresh=True) 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 try: sysaction = items[0]['action'] except: sysaction = '' for i in items: try: try: if i['title'] == '0': label = '%sx%02d . %s %s' % (i['season'], int(i['episode']), 'Episode', i['episode']) else: label = '%sx%02d . %s' % (i['season'], int( i['episode']), i['title']) except: label = i['title'] if multi == True: label = '%s - %s' % (i['tvshowtitle'], label) systitle = sysname = urllib.quote_plus(i['tvshowtitle']) episodetitle, episodename = urllib.quote_plus( i['title']), urllib.quote_plus(i['name']) syspremiered = urllib.quote_plus(i['premiered']) imdb, tvdb, year, season, episode = i['imdb'], i['tvdb'], i[ 'year'], i['season'], i['episode'] poster, banner, fanart, thumb = i['poster'], i['banner'], i[ 'fanart'], i['thumb'] if poster == '0': poster = addonPoster if banner == '0' and poster == '0': banner = addonBanner elif banner == '0': banner = poster if thumb == '0' and fanart == '0': thumb = addonFanart elif thumb == '0': thumb = fanart 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 sysmeta = urllib.quote_plus(json.dumps(meta)) url = '%s?action=play&name=%s&title=%s&year=%s&imdb=%s&tvdb=%s&season=%s&episode=%s&tvshowtitle=%s&date=%s&meta=%s&t=%s' % ( sysaddon, episodename, episodetitle, year, imdb, tvdb, season, episode, systitle, syspremiered, sysmeta, self.systime) sysurl = urllib.quote_plus(url) if sysaction == 'episodes': url = '%s?action=episodes&tvshowtitle=%s&year=%s&imdb=%s&tvdb=%s&season=%s&episode=%s' % ( sysaddon, systitle, year, imdb, tvdb, season, episode) isFolder = True cacheToDisc = True cm = [] if isFolder == False: cm.append((control.lang(30261).encode('utf-8'), 'RunPlugin(%s?action=queueItem)' % sysaddon)) cm.append( (control.lang(30272).encode('utf-8'), 'Action(Info)')) if multi == True: cm.append((control.lang(30274).encode( 'utf-8' ), 'ActivateWindow(Videos,%s?action=seasons&tvshowtitle=%s&year=%s&imdb=%s&tvdb=%s,return)' % (sysaddon, systitle, year, imdb, tvdb))) cm.append((playbackMenu, 'RunPlugin(%s?action=alterSources&url=%s&meta=%s)' % (sysaddon, sysurl, sysmeta))) ''' try: overlay = int(playcount.getEpisodeOverlay(indicators, systitle, episode, season)) if overlay == 7: cm.append((control.lang(30264).encode('utf-8'), 'RunPlugin(%s?action=episodePlaycount&tvshowtitle=%s&episode=%s&season=%s&query=6&name=%s)' % (sysaddon, systitle, episode, season, episodename))) meta.update({'playcount': 1, 'overlay': 7}) else: cm.append((control.lang(30263).encode('utf-8'), 'RunPlugin(%s?action=episodePlaycount&tvshowtitle=%s&episode=%s&season=%s&query=7&name=%s)' % (sysaddon, systitle, episode, season, episodename))) meta.update({'playcount': 0, 'overlay': 6}) except Exception as e: logger.error(e, __name__) pass ''' #cm.append((control.lang(30273).encode('utf-8'), 'RunPlugin(%s?action=addView&content=episodes)' % sysaddon)) item = control.item(label=label, iconImage=thumb, thumbnailImage=thumb) 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.setProperty('IsPlayable', isPlayable) item.setProperty('resumetime', str(0)) item.setProperty('totaltime', str(1)) item.addContextMenuItems(cm) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=False) except: pass try: url = items[0]['next'] if url == '': raise Exception() url = '%s?action=episodes&tvshowtitle=%s&url=%s&provider=%s' % ( sysaddon, systitle, urllib.quote_plus(url), provider) addonNext = control.addonNext() item = control.item(label=control.lang(30213).encode('utf-8'), iconImage=addonNext, thumbnailImage=addonNext) item.addContextMenuItems([]) if not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=True) except: pass content = 'episodes' control.content(syshandle, content) control.directory(syshandle, cacheToDisc=cacheToDisc) views.setView( content, { 'skin.confluence': control.viewMode['confluence'][confViewMode], 'skin.estuary': control.viewMode['esturary'][estViewMode] })
def seasonDirectory(self, items): if items == None or len(items) == 0: return isFolder = True if control.setting('host_select') == '1' else False isFolder = False if control.window.getProperty( 'PseudoTVRunning') == 'True' else isFolder addonPoster, addonBanner = control.addonPoster(), control.addonBanner() addonFanart, settingFanart = control.addonFanart(), control.setting( 'fanart') for i in items: try: label = '%s %s' % ('Season', i['season']) systitle = sysname = urllib.quote_plus(i['tvshowtitle']) imdb, tvdb, year, season = i['imdb'], i['tvdb'], i['season'] poster, banner, fanart, thumb = i['poster'], i['banner'], i[ 'fanart'], i['thumb'] if poster == '0': poster = addonPoster if banner == '0' and poster == '0': banner = addonBanner elif banner == '0': banner = poster if thumb == '0' and poster == '0': thumb = addonPoster elif thumb == '0': thumb = 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': '60'}) try: meta.update({'duration': str(int(meta['duration']) * 60)}) except: pass sysmeta = urllib.quote_plus(json.dumps(meta)) url = '%s?action=episodes&tvshowtitle=%s&year=%s&imdb=%s&tvdb=%s&season=%s' % ( sysaddon, systitle, year, imdb, tvdb, season) cm = [] if isFolder == False: cm.append((control.lang(30261).encode('utf-8'), 'RunPlugin(%s?action=queueItem)' % sysaddon)) cm.append( (control.lang(30262).encode('utf-8'), 'Action(Info)')) cm.append((control.lang(30263).encode( 'utf-8' ), 'RunPlugin(%s?action=tvPlaycount&name=%s&year=%s&imdb=%s&tvdb=%s&season=%s&query=7)' % (sysaddon, systitle, year, imdb, tvdb, season))) cm.append((control.lang(30264).encode( 'utf-8' ), 'RunPlugin(%s?action=tvPlaycount&name=%s&year=%s&imdb=%s&tvdb=%s&season=%s&query=6)' % (sysaddon, systitle, year, imdb, tvdb, season))) #cm.append((control.lang(30267).encode('utf-8'), 'RunPlugin(%s?action=deleteFavourite&meta=%s&content=tvshows)' % (sysaddon, sysmeta))) #cm.append((control.lang(30268).encode('utf-8'), 'RunPlugin(%s?action=tvshowToLibrary&tvshowtitle=%s&year=%s&imdb=%s&tmdb=%s&tvdb=%s&tvrage=%s)' % (sysaddon, systitle, year, imdb, tmdb, tvdb, tvrage))) cm.append((control.lang(30269).encode('utf-8'), 'RunPlugin(%s?action=addView&content=seasons)' % sysaddon)) item = control.item(label=label, iconImage=thumb, thumbnailImage=thumb) try: item.setArt({ 'poster': thumb, 'tvshow.poster': poster, 'season.poster': thumb, '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) 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) viewMode = 'thumbnails' views.setView( 'seasons', { 'skin.confluence': control.viewMode['confluence'][viewMode], 'skin.estuary': control.viewMode['esturary'][viewMode] })
def tvshowDirectory(self, items, confViewMode='list', estViewMode='widelist'): if items == None or len(items) == 0: return isFolder = True if control.setting('host_select') == '1' else False addonPoster, addonBanner = control.addonPoster(), control.addonBanner() addonFanart, settingFanart = control.addonFanart(), control.setting('fanart') for i in items: try: label = i['name'] systitle = sysname = urllib.quote_plus(i['title']) sysimage = urllib.quote_plus(i['poster']) imdb, tvdb, year = i['imdb'], i['tvdb'], i['year'] try :sysurl, sysprovider = urllib.quote_plus(i['url']), i['provider'] except:pass 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': '60'}) try: meta.update({'duration': str(int(meta['duration']) * 60)}) except: pass sysmeta = urllib.quote_plus(json.dumps(meta)) action = 'episodes' url = '%s?action=%s&provider=%s&url=%s&tvshowtitle=%s&year=%s&imdb=%s&tvdb=%s' % (sysaddon, action, sysprovider, sysurl, systitle, year, imdb, tvdb) cm = [] if isFolder == False: cm.append((control.lang(30232).encode('utf-8'), 'RunPlugin(%s?action=queueItem)' % sysaddon)) cm.append((control.lang(30233).encode('utf-8'), 'Action(Info)')) cm.append((control.lang(30234).encode('utf-8'), 'RunPlugin(%s?action=tvPlaycount&name=%s&year=%s&imdb=%s&tvdb=%s&query=7)' % (sysaddon, systitle, year, imdb, tvdb))) cm.append((control.lang(30235).encode('utf-8'), 'RunPlugin(%s?action=tvPlaycount&name=%s&year=%s&imdb=%s&tvdb=%s&query=6)' % (sysaddon, systitle, year, 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) logger.debug('poster %s banner %s fanart %s' % (poster, banner, fanart)) 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) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=True) except Exception as e: logger.error(e, __name__) pass content = 'tvshows' control.content(syshandle, content) control.directory(syshandle, cacheToDisc=True) views.setView(content, {'skin.confluence': control.viewMode['confluence'][confViewMode], 'skin.estuary': control.viewMode['esturary'][estViewMode]})
def movieDirectory(self, items, lang=None): if items == None or len(items) == 0: control.infoDialog(control.lang(30518).encode('utf-8')) return indicators = playcount.getMovieIndicators() isPlayable = 'true' if not 'plugin' in control.infoLabel('Container.PluginName') else 'false' playbackMenu = control.lang(30204).encode('utf-8') if control.setting('host_select') == '2' else control.lang(30203).encode('utf-8') cacheToDisc = False if not action == 'movieSearch' else True addonPoster, addonBanner = control.addonPoster(), control.addonBanner() addonFanart, settingFanart = control.addonFanart(), control.setting('fanart') #try: # from metahandler import metahandlers # metaget = metahandlers.MetaData(tmdb_api_key=self.tmdb_key, preparezip=False) #except: # pass for i in items: try: label = '%s (%s)' % (i['title'], i['year']) imdb, title, year, trailer = i['imdb'], i['title'], i['year'], i.get('trailer') sysname = urllib.quote_plus('%s (%s)' % (title, year)) 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 #logger.debug('Title : %s poster : %s banner : %s fanart : %s' % (i['title'], poster, banner, fanart), __name__) meta = dict((k,v) for k, v in i.iteritems() if not v == '0') meta.update({'trailer': '%s?action=trailer&name=%s&url=%s' % (sysaddon, sysname, trailer)}) 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&name=%s&title=%s&year=%s&imdb=%s&meta=%s&t=%s' % (sysaddon, sysname, systitle, year, imdb, sysmeta, self.systime) sysurl = urllib.quote_plus(url) #try: # playcount = metaget._get_watched('movie', imdb, '', '') # if playcount == 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))) # AUTOPLAY cm.append((control.lang(30214).encode('utf-8'), 'RunPlugin(%s?action=trailer&name=%s&url=%s)' % (sysaddon, sysname, trailer))) # TRAILER cm.append((control.lang(30205).encode('utf-8'), 'Action(Info)')) # MOVIEINFORMATION cm.append((control.lang(30212).encode('utf-8'), 'RunPlugin(%s?action=addView&content=movies)' % sysaddon)) # SET MOVIES VIEW try: overlay = int(playcount.getMovieOverlay(indicators, imdb)) logger.debug('imdb : %s Overlay : %s' % (imdb, overlay), __name__) if overlay == 7: cm.append((control.lang(30206).encode('utf-8'), 'RunPlugin(%s?action=moviePlaycount&imdb=%s&query=6)' % (sysaddon, imdb))) meta.update({'playcount': 1, 'overlay': 7}) else: cm.append((control.lang(30207).encode('utf-8'), 'RunPlugin(%s?action=moviePlaycount&imdb=%s&query=7)' % (sysaddon, imdb))) meta.update({'playcount': 0, 'overlay': 6}) except Exception as e: logger.error(e, __name__) #pass 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', isPlayable) item.addContextMenuItems(cm) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=False) except Exception as e: logger.error(e, __name__) 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([]) if not addonFanart == None: item.setProperty('Fanart_Image', addonFanart) control.addItem(handle=syshandle, url=url, listitem=item, isFolder=True) except Exception as e: logger.error(e, __name__) pass content = 'movies' control.content(syshandle, content) control.directory(syshandle, cacheToDisc=cacheToDisc) views.setView(content, {'skin.confluence': control.viewMode['confluence']['thumbnails'], 'skin.estuary': control.viewMode['esturary']['list']})
def livetv(self): try: generateJSON = cache.get(self.removeJSON, 168, __name__, table='live_cache') if not os.path.exists(self.filePath): generateJSON = 1 if generateJSON: logger.debug('Generating %s JSON' % __name__, __name__) ''' filePath = os.path.join(control.dataPath, self.fileName) with open(filePath, 'w') as outfile: json.dump(self.base_link, outfile, sort_keys=True, indent=2) filename = open(self.filePath) result = filename.read() filename.close() self.base_link = json.loads(result) ''' channelList = {} if control.setting('livelocal') == 'true': self.base_location = os.path.join(control.dataPath, 'iptv_base.local') file = open(self.base_location) result = file.read() file.close() else: result = client.request(self.base_location) self.base_link = json.loads(result) for item in self.base_link: try: enabled = item['enabled'] if enabled == "false": logger.debug('Skipping %s' % item['link'], __name__) continue type = item['source'] link = item['link'] regex = item['regex'] headers = link.rsplit('|', 1)[1] link = link.rsplit('|', 1)[0] except: headers = None ''' if control.setting('livelocal') == 'true' : self.base_location = os.path.join(control.dataPath, 'test_base.local') file = open(self.base_location) result = file.read() file.close() else: result = client.request(link, timeout=5) ''' logger.debug('Fetching %s' % link, __name__) result = client.request(link, timeout=5) if result == None: continue result = result.replace('\r', '') result = re.findall(regex, result, re.IGNORECASE) for source, title, cUrl in result: title = title.strip() #title = cleantitle.live(title) #if title == 'SKIP': # continue if not headers == None: cUrl = '%s|%s' % (cUrl, headers) channelList['%s||%s' % (title, type)] = { 'icon': '', 'url': cUrl, 'provider': 'iptv', 'source': type, 'direct': False, 'quality': 'HD' } logger.debug( 'Fetched [%s] from %s' % (len(channelList), link), __name__) filePath = os.path.join(control.dataPath, self.fileName) with open(filePath, 'w') as outfile: json.dump(channelList, outfile, sort_keys=True, indent=2) liveParser = LiveParser(self.fileName, control.addon) self.srcs = liveParser.parseFile(decode=False) return (generateJSON, self.srcs) except Exception as e: import traceback traceback.print_exc() logger.error(e) pass
def __init__(self): self.index_provider = control.setting('idx_provider')
import sys import urlparse from ashock.modules import control from ashock.modules import logger from ashock.modules import views from ashock.modules import analytics sysaddon = sys.argv[0] ; syshandle = int(sys.argv[1]) artPath = control.artPath() ; addonFanart = control.addonFanart() try: action = dict(urlparse.parse_qsl(sys.argv[2].replace('?','')))['action'] except: action = None imdbMode = False if control.setting('imdb_user') == '' else True class navigator: def __init__(self): self.index_provider = control.setting('idx_provider') def root(self): self.addDirectoryItem(30860, 'movieLangNavigator', 'movies.png','DefaultMovies.png') #self.addDirectoryItem(90114, 'desiLiveNavigator', 'tv-live.png','DefaultMovies.png') #self.addDirectoryItem(90115, 'liveEPGNavigator', 'tv-epg.png','DefaultMovies.png') self.addDirectoryItem(30861, 'desiTVNavigator', 'tv-vod.png','DefaultMovies.png') self.addDirectoryItem(90116, 'openSettings&query=0.0', 'settings.png', 'DefaultMovies.png') self.addDirectoryItem(90117, 'clearCache', 'clearcache.png', 'DefaultMovies.png') self.addDirectoryItem(30864, 'changelog', 'changelog.png', 'DefaultMovies.png')