def __init__(self, type='show'): self.list = [] self.type = type self.lang = control.apiLanguage()['tvdb'] self.season_special = False self.disable_fanarttv = control.setting('disable.fanarttv') # self.date_time = (datetime.utcnow() - timedelta(hours=5)) self.date_time = datetime.utcnow() self.today_date = (self.date_time).strftime('%Y-%m-%d') self.tvdb_key = control.setting('tvdb.api.key') self.tvdb_info_link = 'https://thetvdb.com/api/%s/series/%s/all/%s.zip' % ( self.tvdb_key.decode('base64'), '%s', '%s') self.tvdb_by_imdb = 'https://thetvdb.com/api/GetSeriesByRemoteID.php?imdbid=%s' self.tvdb_by_query = 'https://thetvdb.com/api/GetSeries.php?seriesname=%s' self.tvdb_image = 'https://thetvdb.com/banners/' self.tvdb_poster = 'https://thetvdb.com/banners/_cache/' self.trakt_user = control.setting('trakt.user').strip() self.traktCredentials = trakt.getTraktCredentialsInfo() self.traktwatchlist_link = 'https://api-v2launch.trakt.tv/users/me/watchlist/seasons' self.traktlist_link = 'https://api-v2launch.trakt.tv/users/%s/lists/%s/items' self.traktlists_link = 'https://api-v2launch.trakt.tv/users/me/lists' self.showunaired = control.setting('showunaired') or 'true' self.unairedcolor = control.getColor( control.setting('unaired.identify'))
def __init__(self, type='show'): self.list = [] self.type = type self.lang = control.apiLanguage()['tvdb'] self.season_special = False self.datetime = (datetime.datetime.utcnow() - datetime.timedelta(hours=5)) self.today_date = (self.datetime).strftime('%Y-%m-%d') tvdb_key_list = [ 'MDZjZmYzMDY5MGY5Yjk2MjI5NTcwNDRmMjE1OWZmYWU=', 'MUQ2MkYyRjkwMDMwQzQ0NA==', 'N1I4U1paWDkwVUE5WU1CVQ==' ] self.tvdb_key = tvdb_key_list[int(control.setting('tvdb.api.key'))] self.tvdb_info_link = 'https://thetvdb.com/api/%s/series/%s/all/%s.zip' % ( self.tvdb_key.decode('base64'), '%s', '%s') self.tvdb_by_imdb = 'https://thetvdb.com/api/GetSeriesByRemoteID.php?imdbid=%s' self.tvdb_by_query = 'https://thetvdb.com/api/GetSeries.php?seriesname=%s' self.tvdb_image = 'https://thetvdb.com/banners/' self.tvdb_poster = 'https://thetvdb.com/banners/_cache/' self.trakt_user = control.setting('trakt.user').strip() self.traktCredentials = trakt.getTraktCredentialsInfo() self.traktwatchlist_link = 'https://api-v2launch.trakt.tv/users/me/watchlist/seasons' self.traktlist_link = 'https://api-v2launch.trakt.tv/users/%s/lists/%s/items' self.traktlists_link = 'https://api-v2launch.trakt.tv/users/me/lists' self.showunaired = control.setting('showunaired') or 'true' self.unairedcolor = control.setting('unaired.identify') self.unairedcolor = control.getColor(self.unairedcolor)
def user_cloud_to_listItem(self, folder_id=None): sysaddon = sys.argv[0] syshandle = int(sys.argv[1]) folder_str, deleteMenu = control.lang(40046).upper(), control.lang(40050) cloud_dict = self.user_cloud()['magnets'] cloud_dict = [i for i in cloud_dict if i['statusCode'] == 4] for count, item in enumerate(cloud_dict, 1): try: cm = [] folder_name = item['filename'] # normalized_folder_name = normalize(folder_name) id = item['id'] status_str = '[COLOR %s]%s[/COLOR]' % (control.getColor(control.setting('highlight.color')), item['status'].capitalize()) label = '%02d | [B]%s[/B] | [B]%s[/B] | [I]%s [/I]' % (count, status_str, folder_str, folder_name) url = '%s?action=ad_BrowseUserCloud&source=%s' % (sysaddon, json.dumps(item)) cm.append((deleteMenu % 'Transfer', 'RunPlugin(%s?action=ad_DeleteTransfer&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=True) except: log_utils.error() pass control.content(syshandle, 'files') control.directory(syshandle, cacheToDisc=True)
def user_torrents_to_listItem(self): try: sysaddon = argv[0] syshandle = int(argv[1]) torrent_files = self.user_torrents() # log_utils.log('torrent_files = %s' % str(torrent_files), __name__, log_utils.LOGDEBUG) if not torrent_files: return # torrent_files = [i for i in torrent_files if i['status'] == 'downloaded'] folder_str, deleteMenu = control.lang(40046).upper(), control.lang( 40050) for count, item in enumerate(torrent_files, 1): try: cm = [] isFolder = True if item['status'] == 'downloaded' else False status = '[COLOR %s]%s[/COLOR]' % ( control.getColor(control.setting('highlight.color')), item['status'].capitalize()) folder_name = cleantitle.normalize(item['filename']) label = '%02d | [B]%s[/B] - %s | [B]%s[/B] | [I]%s [/I]' % ( count, status, str(item['progress']) + '%', folder_str, folder_name) url = '%s?action=rdBrowseUserTorrents&id=%s' % ( sysaddon, item['id']) if isFolder else None cm.append(( deleteMenu % 'Torrent', 'RunPlugin(%s?action=rdDeleteUserTorrent&id=%s&name=%s)' % (sysaddon, item['id'], quote_plus(folder_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='') control.addItem(handle=syshandle, url=url, listitem=item, isFolder=isFolder) except: log_utils.error() pass control.content(syshandle, 'files') control.directory(syshandle, cacheToDisc=True) except: log_utils.error() pass
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(title='default', message='Request Failure-Empty Content', icon='default') return folder_str, deleteMenu, restartMenu = control.lang(40046).upper(), control.lang(40050), control.lang(40008) for count, item in enumerate(transfer_files, 1): # log_utils.log('item = %s' % str(item), __name__, log_utils.LOGDEBUG) 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 = item['filename'] # normalized_folder_name = normalize(folder_name) 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, 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() pass control.content(syshandle, 'files') control.directory(syshandle, cacheToDisc=True)
def __init__(self): self.list = [] self.lang = control.apiLanguage()['tmdb'] self.enable_fanarttv = getSetting('enable.fanarttv') == 'true' self.prefer_tmdbArt = getSetting('prefer.tmdbArt') == 'true' self.date_time = datetime.now() self.today_date = (self.date_time).strftime('%Y-%m-%d') self.tmdb_poster_path = 'https://image.tmdb.org/t/p/w342' self.trakt_user = getSetting('trakt.username').strip() self.traktCredentials = trakt.getTraktCredentialsInfo() # self.traktwatchlist_link = 'https://api.trakt.tv/users/me/watchlist/seasons' # self.traktlists_link = 'https://api.trakt.tv/users/me/lists' self.showunaired = getSetting('showunaired') == 'true' self.unairedcolor = control.getColor(getSetting('unaired.identify')) self.showspecials = getSetting('tv.specials') == 'true'
def __init__(self, type='show'): self.list = [] self.type = type self.lang = control.apiLanguage()['tmdb'] self.season_special = False self.date_time = datetime.now() self.today_date = (self.date_time).strftime('%Y-%m-%d') self.tmdb_poster_path = 'https://image.tmdb.org/t/p/w300' self.trakt_user = control.setting('trakt.user').strip() self.traktCredentials = trakt.getTraktCredentialsInfo() self.traktwatchlist_link = 'https://api.trakt.tv/users/me/watchlist/seasons' self.traktlists_link = 'https://api.trakt.tv/users/me/lists' self.showunaired = control.setting('showunaired') == 'true' self.unairedcolor = control.getColor( control.setting('unaired.identify')) self.showspecials = control.setting('tv.specials') == 'true'
def __init__(self, type='show'): self.list = [] self.type = type self.lang = control.apiLanguage()['tvdb'] self.season_special = False self.disable_fanarttv = control.setting('disable.fanarttv') # self.date_time = (datetime.utcnow() - timedelta(hours=5)) self.date_time = datetime.utcnow() self.today_date = (self.date_time).strftime('%Y-%m-%d') self.tvdb_key = control.setting('tvdb.api.key') self.tvdb_image = 'https://thetvdb.com/banners/' self.tvdb_poster = 'https://thetvdb.com/banners/_cache/' self.trakt_user = control.setting('trakt.user').strip() self.traktCredentials = trakt.getTraktCredentialsInfo() self.traktwatchlist_link = 'https://api.trakt.tv/users/me/watchlist/seasons' self.traktlists_link = 'https://api.trakt.tv/users/me/lists' self.showunaired = control.setting('showunaired') or 'true' self.unairedcolor = control.getColor( control.setting('unaired.identify'))
def user_transfers_to_listItem(self): try: sysaddon, syshandle = argv[0], int(argv[1]) extensions = supported_video_extensions() transfer_files = self.user_transfers() if not transfer_files: if self.server_notifications: control.notification( message='Request Failure-Empty Content', icon=pm_icon) log_utils.log('Premiumize.me: Request Failure-Empty Content', __name__, log_utils.LOGDEBUG) return except: log_utils.error() return folder_str, file_str, downloadMenu, renameMenu, deleteMenu, clearFinishedMenu = control.lang(40046).upper(),\ control.lang(40047).upper(), control.lang(40048), control.lang(40049), control.lang(40050), control.lang(40051) for count, item in enumerate(transfer_files, 1): try: cm = [] type = 'folder' if item['file_id'] is None else 'file' name = control.strip_non_ascii_and_unprintable(item['name']) status = item['status'] progress = item['progress'] if status == 'finished': progress = 100 else: try: progress = re.findall(r'(?:\d{0,1}\.{0,1})(\d+)', str(progress))[0][:2] except: progress = 'UNKNOWN' if type == 'folder': isFolder = True if status == 'finished' else False status_str = '[COLOR %s]%s[/COLOR]' % (control.getColor( control.setting('highlight.color')), status.capitalize()) label = '%02d | [B]%s[/B] - %s | [B]%s[/B] | [I]%s [/I]' % ( count, status_str, str(progress) + '%', folder_str, name) url = '%s?action=pm_MyFiles&id=%s&name=%s' % ( sysaddon, item['folder_id'], quote_plus(name)) # Till PM addresses issue with item also being removed from public acess if item not accessed for 60 days this option is disabled. # cm.append((clearFinishedMenu, 'RunPlugin(%s?action=pm_ClearFinishedTransfers)' % sysaddon)) else: isFolder = False details = self.item_details(item['file_id']) if not details: if self.server_notifications: control.notification( message='Request Failure-Empty Content', icon=pm_icon) log_utils.log( 'Premiumize.me: Request Failure-Empty Content', __name__, log_utils.LOGDEBUG) return url_link = details['link'] if url_link.startswith('/'): url_link = 'https' + url_link size = details['size'] display_size = float(int(size)) / 1073741824 label = '%02d | %s%% | [B]%s[/B] | %.2f GB | [I]%s [/I]' % ( count, str(progress), file_str, display_size, name) url = '%s?action=playURL&url=%s' % (sysaddon, url_link) cm.append(( downloadMenu, 'RunPlugin(%s?action=download&name=%s&image=%s&url=%s&caller=premiumize)' % (sysaddon, quote_plus(name), quote_plus(pm_icon), url_link))) cm.append( (deleteMenu % 'Transfer', 'RunPlugin(%s?action=pm_DeleteTransfer&id=%s&name=%s)' % (sysaddon, item['id'], quote_plus(name)))) item = control.item(label=label) item.addContextMenuItems(cm) item.setArt({ 'icon': pm_icon, 'poster': pm_icon, 'thumb': pm_icon, 'fanart': addonFanart, 'banner': pm_icon }) item.setInfo(type='video', infoLabels='') control.addItem(handle=syshandle, url=url, listitem=item, isFolder=isFolder) except: log_utils.error() control.content(syshandle, 'files') control.directory(syshandle, cacheToDisc=True)
def __init__(self, type='movie', notifications=True): self.list = [] self.count = control.setting('page.item.limit') self.type = type self.notifications = notifications self.date_time = datetime.now() self.today_date = (self.date_time).strftime('%Y-%m-%d') self.hidecinema = control.setting('hidecinema') == 'true' self.trakt_user = control.setting('trakt.user').strip() self.traktCredentials = trakt.getTraktCredentialsInfo() self.lang = control.apiLanguage()['trakt'] self.imdb_user = control.setting('imdb.user').replace('ur', '') self.tmdb_key = control.setting('tmdb.api.key') if self.tmdb_key == '' or self.tmdb_key is None: self.tmdb_key = '3320855e65a9758297fec4f7c9717698' self.tmdb_session_id = control.setting('tmdb.session_id') # self.user = str(self.imdb_user) + str(self.tmdb_key) self.user = str(self.tmdb_key) self.disable_fanarttv = control.setting('disable.fanarttv') == 'true' self.unairedcolor = control.getColor(control.setting('movie.unaired.identify')) self.highlight_color = control.getColor(control.setting('highlight.color')) self.tmdb_link = 'https://api.themoviedb.org' self.tmdb_popular_link = 'https://api.themoviedb.org/3/movie/popular?api_key=%s&language=en-US®ion=US&page=1' self.tmdb_toprated_link = 'https://api.themoviedb.org/3/movie/top_rated?api_key=%s&page=1' self.tmdb_upcoming_link = 'https://api.themoviedb.org/3/movie/upcoming?api_key=%s&language=en-US®ion=US&page=1' self.tmdb_nowplaying_link = 'https://api.themoviedb.org/3/movie/now_playing?api_key=%s&language=en-US®ion=US&page=1' self.tmdb_boxoffice_link = 'https://api.themoviedb.org/3/discover/movie?api_key=%s&language=en-US®ion=US&sort_by=revenue.desc&page=1' self.tmdb_watchlist_link = 'https://api.themoviedb.org/3/account/{account_id}/watchlist/movies?api_key=%s&session_id=%s&sort_by=created_at.asc&page=1' % ('%s', self.tmdb_session_id) self.tmdb_favorites_link = 'https://api.themoviedb.org/3/account/{account_id}/favorite/movies?api_key=%s&session_id=%s&sort_by=created_at.asc&page=1' % ('%s', self.tmdb_session_id) self.tmdb_userlists_link = 'https://api.themoviedb.org/3/account/{account_id}/lists?api_key=%s&language=en-US&session_id=%s&page=1' % ('%s', self.tmdb_session_id) self.imdb_link = 'https://www.imdb.com' self.persons_link = 'https://www.imdb.com/search/name?count=100&name=' self.personlist_link = 'https://www.imdb.com/search/name?count=100&gender=male,female' self.person_link = 'https://www.imdb.com/search/title?title_type=feature,tv_movie&production_status=released&role=%s&sort=year,desc&count=%s&start=1' % ('%s', self.count) self.keyword_link = 'https://www.imdb.com/search/title?title_type=feature,tv_movie,documentary&num_votes=100,&keywords=%s&sort=moviemeter,asc&count=%s&start=1' % ('%s', self.count) self.oscars_link = 'https://www.imdb.com/search/title?title_type=feature,tv_movie&production_status=released&groups=oscar_best_picture_winners&sort=year,desc&count=%s&start=1' % self.count self.oscarsnominees_link = 'https://www.imdb.com/search/title?title_type=feature,tv_movie&production_status=released&groups=oscar_best_picture_nominees&sort=year,desc&count=%s&start=1' % self.count self.theaters_link = 'https://www.imdb.com/search/title?title_type=feature&num_votes=500,&release_date=date[90],date[0]&languages=en&sort=release_date,desc&count=%s&start=1' % self.count self.year_link = 'https://www.imdb.com/search/title?title_type=feature,tv_movie&num_votes=100,&production_status=released&year=%s,%s&sort=moviemeter,asc&count=%s&start=1' % ('%s', '%s', self.count) if self.hidecinema: hidecinema_rollback = str(int(control.setting('hidecinema.rollback')) * 30) self.mostpopular_link = 'https://www.imdb.com/search/title?title_type=feature,tv_movie&num_votes=1000,&production_status=released&groups=top_1000&release_date=,date[%s]&sort=moviemeter,asc&count=%s&start=1' % (hidecinema_rollback, self.count ) self.mostvoted_link = 'https://www.imdb.com/search/title?title_type=feature,tv_movie&num_votes=1000,&production_status=released&release_date=,date[%s]&sort=num_votes,desc&count=%s&start=1' % (hidecinema_rollback, self.count ) self.featured_link = 'https://www.imdb.com/search/title?title_type=feature,tv_movie&num_votes=1000,&production_status=released&release_date=,date[%s]&sort=moviemeter,asc&count=%s&start=1' % (hidecinema_rollback, self.count ) self.genre_link = 'https://www.imdb.com/search/title?title_type=feature,tv_movie,documentary&num_votes=100,&release_date=,date[%s]&genres=%s&sort=moviemeter,asc&count=%s&start=1' % (hidecinema_rollback, '%s', self.count) self.language_link = 'https://www.imdb.com/search/title?title_type=feature,tv_movie&num_votes=100,&production_status=released&primary_language=%s&sort=moviemeter,asc&release_date=,date[%s]&count=%s&start=1' % ('%s', hidecinema_rollback, self.count) self.certification_link = 'https://www.imdb.com/search/title?title_type=feature,tv_movie&num_votes=100,&production_status=released&certificates=%s&sort=moviemeter,asc&release_date=,date[%s]&count=%s&start=1' % ('%s', hidecinema_rollback, self.count) self.imdbboxoffice_link = 'https://www.imdb.com/search/title?title_type=feature,tv_movie&production_status=released&sort=boxoffice_gross_us,desc&release_date=,date[%s]&count=%s&start=1' % (hidecinema_rollback, self.count) else: self.mostpopular_link = 'https://www.imdb.com/search/title?title_type=feature,tv_movie&num_votes=1000,&production_status=released&groups=top_1000&sort=moviemeter,asc&count=%s&start=1' % self.count self.mostvoted_link = 'https://www.imdb.com/search/title?title_type=feature,tv_movie&num_votes=1000,&production_status=released&sort=num_votes,desc&count=%s&start=1' % self.count self.featured_link = 'https://www.imdb.com/search/title?title_type=feature,tv_movie&num_votes=1000,&production_status=released&sort=moviemeter,asc&count=%s&start=1' % self.count self.genre_link = 'https://www.imdb.com/search/title?title_type=feature,tv_movie,documentary&num_votes=100,&release_date=,date[0]&genres=%s&sort=moviemeter,asc&count=%s&start=1' % ('%s', self.count) self.language_link = 'https://www.imdb.com/search/title?title_type=feature,tv_movie&num_votes=100,&production_status=released&primary_language=%s&sort=moviemeter,asc&count=%s&start=1' % ('%s', self.count) self.certification_link = 'https://www.imdb.com/search/title?title_type=feature,tv_movie&num_votes=100,&production_status=released&certificates=%s&sort=moviemeter,asc&count=%s&start=1' % ('%s', self.count) self.imdbboxoffice_link = 'https://www.imdb.com/search/title?title_type=feature,tv_movie&production_status=released&sort=boxoffice_gross_us,desc&count=%s&start=1' % self.count self.imdbwatchlist_link = 'https://www.imdb.com/user/ur%s/watchlist?sort=date_added,desc' % self.imdb_user # only used to get users watchlist ID self.imdbwatchlist2_link = 'https://www.imdb.com/list/%s/?view=detail&sort=%s&title_type=movie,short,video,tvShort,tvMovie,tvSpecial&start=1' % ('%s', self.imdb_sort(type='movies.watchlist')) self.imdblists_link = 'https://www.imdb.com/user/ur%s/lists?tab=all&sort=mdfd&order=desc&filter=titles' % self.imdb_user self.imdblist_link = 'https://www.imdb.com/list/%s/?view=detail&sort=%s&title_type=movie,short,video,tvShort,tvMovie,tvSpecial&start=1' % ('%s', self.imdb_sort()) self.imdbratings_link = 'https://www.imdb.com/user/ur%s/ratings?sort=your_rating,desc&mode=detail&start=1' % self.imdb_user # IMDb ratings does not take title_type so filter is in imdb_list() function self.anime_link = 'https://www.imdb.com/search/keyword?keywords=anime&title_type=movie,tvMovie&sort=moviemeter,asc&count=%s&start=1' % self.count self.trakt_link = 'https://api.trakt.tv' self.search_link = 'https://api.trakt.tv/search/movie?limit=%s&page=1&query=' % self.count self.traktlistsearch_link = 'https://api.trakt.tv/search/list?limit=%s&page=1&query=' % self.count self.traktlist_link = 'https://api.trakt.tv/users/%s/lists/%s/items/movies' self.traktlikedlists_link = 'https://api.trakt.tv/users/likes/lists?limit=1000000' self.traktlists_link = 'https://api.trakt.tv/users/me/lists' self.traktwatchlist_link = 'https://api.trakt.tv/users/me/watchlist/movies' self.traktcollection_link = 'https://api.trakt.tv/users/me/collection/movies' # api collection does not support pagination atm self.trakthistory_link = 'https://api.trakt.tv/users/me/history/movies?limit=%s&page=1' % self.count self.traktunfinished_link = 'https://api.trakt.tv/sync/playback/movies?limit=40' self.traktanticipated_link = 'https://api.trakt.tv/movies/anticipated?limit=%s&page=1' % self.count self.trakttrending_link = 'https://api.trakt.tv/movies/trending?limit=%s&page=1' % self.count self.traktboxoffice_link = 'https://api.trakt.tv/movies/boxoffice' self.traktpopular_link = 'https://api.trakt.tv/movies/popular?limit=%s&page=1' % self.count self.traktrecommendations_link = 'https://api.trakt.tv/recommendations/movies?limit=40'