class AllDebridCloudScraper(CloudScraper): def __init__(self, terminate_flag): super(AllDebridCloudScraper, self).__init__(terminate_flag) self.api_adapter = AllDebrid() self.debrid_provider = 'all_debrid' self._source_normalization = ( ("size", "size", lambda k: (k / 1024) / 1024), ("filename", ["release_title", "path"], None), ("id", "id", None), ("link", ["link", "url"], None), ) def _fetch_cloud_items(self): magnets = [ m for m in self.api_adapter.saved_magnets() if m['status'] == 'Ready' ] return [i for link_list in magnets for i in link_list['links'] ] + self.api_adapter.saved_links()['links'] def _is_valid_pack(self, item): return True def _is_enabled(self): return g.all_debrid_enabled()
class AllDebridResolver(TorrentResolverBase): """ Resolver for All Debrid """ def __init__(self): super(AllDebridResolver, self).__init__() self.debrid_module = AllDebrid() self._source_normalization = ( ("size", "size", lambda k: (k / 1024) / 1024), ("filename", ["release_title", "path"], None), ("id", "id", None), ("link", "link", None), ) self.magnet_id = None def _fetch_source_files(self, torrent, item_information): self.magnet_id = self.debrid_module.upload_magnet( torrent['hash'])["magnets"][0]["id"] status = self.debrid_module.magnet_status(self.magnet_id)["magnets"] if status["status"] != "Ready": raise UnexpectedResponse(status) return status['links'] def resolve_stream_url(self, file_info): """ Convert provided source file into a link playable through debrid service :param file_info: Normalised information on source file :return: streamable link """ return self.debrid_module.resolve_hoster(file_info["link"]) def _do_post_processing(self, item_information, torrent): pass
def __init__(self): super(AllDebridResolver, self).__init__() self.debrid_module = AllDebrid() self._source_normalization = ( ("size", "size", lambda k: (k / 1024) / 1024), ("filename", ["release_title", "path"], None), ("id", "id", None), ("link", "link", None), ) self.magnet_id = None
def __init__(self, terminate_flag): super(AllDebridCloudScraper, self).__init__(terminate_flag) self.api_adapter = AllDebrid() self.debrid_provider = 'all_debrid' self._source_normalization = ( ("size", "size", lambda k: (k / 1024) / 1024), ("filename", ["release_title", "path"], None), ("id", "id", None), ("link", ["link", "url"], None), )
def get_hoster_list(): """ Fetche :return: """ thread_pool = ThreadPool() hosters = {"premium": {}, "free": []} try: if g.get_bool_setting("premiumize.enabled") and g.get_bool_setting( "premiumize.hosters"): thread_pool.put(Premiumize().get_hosters, hosters) if g.get_bool_setting("realdebrid.enabled") and g.get_bool_setting( "rd.hosters"): thread_pool.put(RealDebrid().get_hosters, hosters) if g.get_bool_setting("alldebrid.enabled") and g.get_bool_setting( "alldebrid.hosters"): thread_pool.put(AllDebrid().get_hosters, hosters) thread_pool.wait_completion() except ValueError: g.log_stacktrace() xbmcgui.Dialog().notification(g.ADDON_NAME, g.get_language_string(30513)) return hosters return hosters
class _AllDebridDownloader(_DebridDownloadBase): def __init__(self, source): super(_AllDebridDownloader, self).__init__(source) self.debrid_module = AllDebrid() self.available_files = [] def _fetch_available_files(self): self.magnet_id = self.debrid_module.upload_magnet(self.source['hash'])["magnets"][0]["id"] status = self.debrid_module.magnet_status(self.magnet_id)['magnets'] if status["status"] != "Ready": raise UnexpectedResponse(status) return [{'path': i['filename'], 'url': i['link']} for i in status['links']] def _get_single_item_info(self, source): return source def _resolve_file_url(self, file): return self.debrid_module.resolve_hoster(file[0]["url"])
def __init__(self, source): super(_AllDebridDownloader, self).__init__(source) self.debrid_module = AllDebrid() self.available_files = []
def dispatch(params): url = params.get("url") action = params.get("action") action_args = params.get("action_args") pack_select = params.get("packSelect") source_select = params.get("source_select") == "true" overwrite_cache = params.get("seren_reload") == "true" resume = params.get("resume") force_resume_check = params.get("forceresumecheck") == "true" force_resume_off = params.get("forceresumeoff") == "true" force_resume_on = params.get("forceresumeon") == "true" smart_url_arg = params.get("smartPlay") == "true" mediatype = params.get("mediatype") endpoint = params.get("endpoint") g.log("Seren, Running Path - {}".format(g.REQUEST_PARAMS)) if action is None: from resources.lib.gui import homeMenu homeMenu.Menus().home() if action == "genericEndpoint": if mediatype == "movies": from resources.lib.gui.movieMenus import Menus else: from resources.lib.gui.tvshowMenus import Menus Menus().generic_endpoint(endpoint) elif action == "forceResumeShow": from resources.lib.modules import smartPlay from resources.lib.common import tools smartPlay.SmartPlay( tools.get_item_information(action_args)).resume_show() elif action == "moviesHome": from resources.lib.gui import movieMenus movieMenus.Menus().discover_movies() elif action == "moviesUpdated": from resources.lib.gui import movieMenus movieMenus.Menus().movies_updated() elif action == "moviesRecommended": from resources.lib.gui import movieMenus movieMenus.Menus().movies_recommended() elif action == "moviesSearch": from resources.lib.gui import movieMenus movieMenus.Menus().movies_search(action_args) elif action == "moviesSearchResults": from resources.lib.gui import movieMenus movieMenus.Menus().movies_search_results(action_args) elif action == "moviesSearchHistory": from resources.lib.gui import movieMenus movieMenus.Menus().movies_search_history() elif action == "myMovies": from resources.lib.gui import movieMenus movieMenus.Menus().my_movies() elif action == "moviesMyCollection": from resources.lib.gui import movieMenus movieMenus.Menus().my_movie_collection() elif action == "moviesMyWatchlist": from resources.lib.gui import movieMenus movieMenus.Menus().my_movie_watchlist() elif action == "moviesRelated": from resources.lib.gui import movieMenus movieMenus.Menus().movies_related(action_args) elif action == "colorPicker": g.color_picker() elif action == "authTrakt": from resources.lib.indexers import trakt trakt.TraktAPI().auth() elif action == "revokeTrakt": from resources.lib.indexers import trakt trakt.TraktAPI().revoke_auth() elif action == "getSources" or action == "smartPlay": from resources.lib.modules.smartPlay import SmartPlay from resources.lib.common import tools from resources.lib.modules import helpers item_information = tools.get_item_information(action_args) smart_play = SmartPlay(item_information) background = None resolver_window = None try: # Check to confirm user has a debrid provider authenticated and enabled if not g.premium_check(): xbmcgui.Dialog().ok( g.ADDON_NAME, tools.create_multiline_message( line1=g.get_language_string(30208), line2=g.get_language_string(30209), ), ) return None # workaround for widgets not generating a playlist on playback request play_list = smart_play.playlist_present_check(smart_url_arg) if play_list: g.log("Cancelling non playlist playback", "warning") xbmc.Player().play(g.PLAYLIST) return resume_time = smart_play.handle_resume_prompt( resume, force_resume_off, force_resume_on, force_resume_check) background = helpers.show_persistent_window_if_required( item_information) sources = helpers.SourcesHelper().get_sources( action_args, overwrite_cache=overwrite_cache) if sources is None: return if item_information["info"]["mediatype"] == "episode": source_select_style = "Episodes" else: source_select_style = "Movie" if (g.get_int_setting( "general.playstyle{}".format(source_select_style)) == 1 or source_select): if background: background.set_text(g.get_language_string(30198)) from resources.lib.modules import sourceSelect stream_link = sourceSelect.source_select( sources[0], sources[1], item_information) else: if background: background.set_text(g.get_language_string(30032)) stream_link = helpers.Resolverhelper( ).resolve_silent_or_visible(sources[1], sources[2], pack_select) if stream_link is None: g.close_busy_dialog() g.notification(g.ADDON_NAME, g.get_language_string(30033), time=5000) g.show_busy_dialog() if background: background.close() del background if not stream_link: raise NoPlayableSourcesException from resources.lib.modules import player player.SerenPlayer().play_source(stream_link, item_information, resume_time=resume_time) except NoPlayableSourcesException: try: background.close() del background except (UnboundLocalError, AttributeError): pass try: resolver_window.close() del resolver_window except (UnboundLocalError, AttributeError): pass g.cancel_playback() elif action == "preScrape": from resources.lib.database.skinManager import SkinManager from resources.lib.modules import helpers try: from resources.lib.common import tools item_information = tools.get_item_information(action_args) if item_information["info"]["mediatype"] == "episode": source_select_style = "Episodes" else: source_select_style = "Movie" sources = helpers.SourcesHelper().get_sources(action_args) if (g.get_int_setting( "general.playstyle{}".format(source_select_style)) == 0 and sources): from resources.lib.modules import resolver helpers.Resolverhelper().resolve_silent_or_visible( sources[1], sources[2], pack_select) finally: g.set_setting("general.tempSilent", "false") g.log("Pre-scraping completed") elif action == "authRealDebrid": from resources.lib.debrid import real_debrid real_debrid.RealDebrid().auth() elif action == "showsHome": from resources.lib.gui import tvshowMenus tvshowMenus.Menus().discover_shows() elif action == "myShows": from resources.lib.gui import tvshowMenus tvshowMenus.Menus().my_shows() elif action == "showsMyCollection": from resources.lib.gui import tvshowMenus tvshowMenus.Menus().my_shows_collection() elif action == "showsMyWatchlist": from resources.lib.gui import tvshowMenus tvshowMenus.Menus().my_shows_watchlist() elif action == "showsMyProgress": from resources.lib.gui import tvshowMenus tvshowMenus.Menus().my_show_progress() elif action == "showsMyRecentEpisodes": from resources.lib.gui import tvshowMenus tvshowMenus.Menus().my_recent_episodes() elif action == "showsRecommended": from resources.lib.gui import tvshowMenus tvshowMenus.Menus().shows_recommended() elif action == "showsUpdated": from resources.lib.gui import tvshowMenus tvshowMenus.Menus().shows_updated() elif action == "showsSearch": from resources.lib.gui import tvshowMenus tvshowMenus.Menus().shows_search(action_args) elif action == "showsSearchResults": from resources.lib.gui import tvshowMenus tvshowMenus.Menus().shows_search_results(action_args) elif action == "showsSearchHistory": from resources.lib.gui import tvshowMenus tvshowMenus.Menus().shows_search_history() elif action == "showSeasons": from resources.lib.gui import tvshowMenus tvshowMenus.Menus().show_seasons(action_args) elif action == "seasonEpisodes": from resources.lib.gui import tvshowMenus tvshowMenus.Menus().season_episodes(action_args) elif action == "showsRelated": from resources.lib.gui import tvshowMenus tvshowMenus.Menus().shows_related(action_args) elif action == "showYears": from resources.lib.gui import tvshowMenus tvshowMenus.Menus().shows_years(action_args) elif action == "searchMenu": from resources.lib.gui import homeMenu homeMenu.Menus().search_menu() elif action == "toolsMenu": from resources.lib.gui import homeMenu homeMenu.Menus().tools_menu() elif action == "clearCache": from resources.lib.common import tools g.clear_cache() elif action == "traktManager": from resources.lib.indexers import trakt from resources.lib.common import tools trakt.TraktManager(tools.get_item_information(action_args)) elif action == "onDeckShows": from resources.lib.gui import tvshowMenus tvshowMenus.Menus().on_deck_shows() elif action == "onDeckMovies": from resources.lib.gui.movieMenus import Menus Menus().on_deck_movies() elif action == "cacheAssist": from resources.lib.modules.cacheAssist import CacheAssistHelper CacheAssistHelper().auto_cache(action_args) elif action == "tvGenres": from resources.lib.gui import tvshowMenus tvshowMenus.Menus().shows_genres() elif action == "showGenresGet": from resources.lib.gui import tvshowMenus tvshowMenus.Menus().shows_genre_list(action_args) elif action == "movieGenres": from resources.lib.gui import movieMenus movieMenus.Menus().movies_genres() elif action == "movieGenresGet": from resources.lib.gui import movieMenus movieMenus.Menus().movies_genre_list(action_args) elif action == "shufflePlay": from resources.lib.modules import smartPlay smartPlay.SmartPlay(action_args).shuffle_play() elif action == "resetSilent": g.set_setting("general.tempSilent", "false") g.notification( "{}: {}".format(g.ADDON_NAME, g.get_language_string(30329)), g.get_language_string(30034), time=5000, ) elif action == "clearTorrentCache": from resources.lib.database.torrentCache import TorrentCache TorrentCache().clear_all() elif action == "openSettings": xbmc.executebuiltin("Addon.OpenSettings({})".format(g.ADDON_ID)) elif action == "myTraktLists": from resources.lib.modules.listsHelper import ListsHelper ListsHelper().my_trakt_lists(mediatype) elif action == "myLikedLists": from resources.lib.modules.listsHelper import ListsHelper ListsHelper().my_liked_lists(mediatype) elif action == "TrendingLists": from resources.lib.modules.listsHelper import ListsHelper ListsHelper().trending_lists(mediatype) elif action == "PopularLists": from resources.lib.modules.listsHelper import ListsHelper ListsHelper().popular_lists(mediatype) elif action == "traktList": from resources.lib.modules.listsHelper import ListsHelper ListsHelper().get_list_items() elif action == "nonActiveAssistClear": from resources.lib.gui import debridServices debridServices.Menus().assist_non_active_clear() elif action == "debridServices": from resources.lib.gui import debridServices debridServices.Menus().home() elif action == "cacheAssistStatus": from resources.lib.gui import debridServices debridServices.Menus().get_assist_torrents() elif action == "premiumize_transfers": from resources.lib.gui import debridServices debridServices.Menus().list_premiumize_transfers() elif action == "showsNextUp": from resources.lib.gui import tvshowMenus tvshowMenus.Menus().my_next_up() elif action == "runMaintenance": from resources.lib.common import maintenance maintenance.run_maintenance() elif action == "providerTools": from resources.lib.gui import homeMenu homeMenu.Menus().provider_menu() elif action == "installProviders": from resources.lib.modules.providers.install_manager import ( ProviderInstallManager, ) ProviderInstallManager().install_package(action_args) elif action == "uninstallProviders": from resources.lib.modules.providers.install_manager import ( ProviderInstallManager, ) ProviderInstallManager().uninstall_package() elif action == "showsNew": from resources.lib.gui import tvshowMenus tvshowMenus.Menus().shows_new() elif action == "realdebridTransfers": from resources.lib.gui import debridServices debridServices.Menus().list_rd_transfers() elif action == "cleanInstall": from resources.lib.common import maintenance maintenance.wipe_install() elif action == "premiumizeCleanup": from resources.lib.common import maintenance maintenance.premiumize_transfer_cleanup() elif action == "manualProviderUpdate": from resources.lib.modules.providers.install_manager import ( ProviderInstallManager, ) ProviderInstallManager().manual_update() elif action == "clearSearchHistory": from resources.lib.database.searchHistory import SearchHistory SearchHistory().clear_search_history(mediatype) elif action == "externalProviderInstall": from resources.lib.modules.providers.install_manager import ( ProviderInstallManager, ) confirmation = xbmcgui.Dialog().yesno(g.ADDON_NAME, g.get_language_string(30182)) if confirmation == 0: return ProviderInstallManager().install_package(1, url=url) elif action == "externalProviderUninstall": from resources.lib.modules.providers.install_manager import ( ProviderInstallManager, ) confirmation = xbmcgui.Dialog().yesno( g.ADDON_NAME, g.get_language_string(30184).format(url)) if confirmation == 0: return ProviderInstallManager().uninstall_package(package=url, silent=False) elif action == "showsNetworks": from resources.lib.gui import tvshowMenus tvshowMenus.Menus().shows_networks() elif action == "showsNetworkShows": from resources.lib.gui import tvshowMenus tvshowMenus.Menus().shows_networks_results(action_args) elif action == "movieYears": from resources.lib.gui import movieMenus movieMenus.Menus().movies_years() elif action == "movieYearsMovies": from resources.lib.gui import movieMenus movieMenus.Menus().movie_years_results(action_args) elif action == "syncTraktActivities": from resources.lib.database.trakt_sync.activities import TraktSyncDatabase TraktSyncDatabase().sync_activities() elif action == "traktSyncTools": from resources.lib.gui import homeMenu homeMenu.Menus().trakt_sync_tools() elif action == "flushTraktActivities": from resources.lib.database import trakt_sync trakt_sync.TraktSyncDatabase().flush_activities() elif action == "flushTraktDBMeta": from resources.lib.database import trakt_sync trakt_sync.TraktSyncDatabase().clear_all_meta() elif action == "myFiles": from resources.lib.gui import myFiles myFiles.Menus().home() elif action == "myFilesFolder": from resources.lib.gui import myFiles myFiles.Menus().my_files_folder(action_args) elif action == "myFilesPlay": from resources.lib.gui import myFiles myFiles.Menus().my_files_play(action_args) elif action == "forceTraktSync": from resources.lib.database.trakt_sync.activities import TraktSyncDatabase trakt_db = TraktSyncDatabase() trakt_db.flush_activities() trakt_db.sync_activities() elif action == "rebuildTraktDatabase": from resources.lib.database.trakt_sync import TraktSyncDatabase TraktSyncDatabase().re_build_database() elif action == "myUpcomingEpisodes": from resources.lib.gui import tvshowMenus tvshowMenus.Menus().my_upcoming_episodes() elif action == "myWatchedEpisodes": from resources.lib.gui import tvshowMenus tvshowMenus.Menus().my_watched_episode() elif action == "myWatchedMovies": from resources.lib.gui import movieMenus movieMenus.Menus().my_watched_movies() elif action == "showsByActor": from resources.lib.gui import tvshowMenus tvshowMenus.Menus().shows_by_actor(action_args) elif action == "movieByActor": from resources.lib.gui import movieMenus movieMenus.Menus().movies_by_actor(action_args) elif action == "playFromRandomPoint": from resources.lib.modules import smartPlay smartPlay.SmartPlay(action_args).play_from_random_point() elif action == "refreshProviders": from resources.lib.modules.providers import CustomProviders providers = CustomProviders() providers.update_known_providers() providers.poll_database() elif action == "installSkin": from resources.lib.database.skinManager import SkinManager SkinManager().install_skin() elif action == "uninstallSkin": from resources.lib.database.skinManager import SkinManager SkinManager().uninstall_skin() elif action == "switchSkin": from resources.lib.database.skinManager import SkinManager SkinManager().switch_skin() elif action == "manageProviders": g.show_busy_dialog() from resources.lib.gui.windows.provider_packages import ProviderPackages from resources.lib.database.skinManager import SkinManager window = ProviderPackages( *SkinManager().confirm_skin_path("provider_packages.xml")) window.doModal() del window elif action == "flatEpisodes": from resources.lib.gui.tvshowMenus import Menus Menus().flat_episode_list(action_args) elif action == "runPlayerDialogs": from resources.lib.modules.player import PlayerDialogs PlayerDialogs().display_dialog() elif action == "authAllDebrid": from resources.lib.debrid.all_debrid import AllDebrid AllDebrid().auth() elif action == "checkSkinUpdates": from resources.lib.database.skinManager import SkinManager SkinManager().check_for_updates() elif action == "authPremiumize": from resources.lib.debrid.premiumize import Premiumize Premiumize().auth() elif action == "testWindows": from resources.lib.gui.homeMenu import Menus Menus().test_windows() elif action == "testPlayingNext": from resources.lib.gui import mock_windows mock_windows.mock_playing_next() elif action == "testStillWatching": from resources.lib.gui import mock_windows mock_windows.mock_still_watching() elif action == "testResolverWindow": from resources.lib.gui import mock_windows mock_windows.mock_resolver() elif action == "testSourceSelectWindow": from resources.lib.gui import mock_windows mock_windows.mock_source_select() elif action == "testManualCacheWindow": from resources.lib.gui import mock_windows mock_windows.mock_cache_assist() elif action == "showsPopularRecent": from resources.lib.gui.tvshowMenus import Menus Menus().shows_popular_recent() elif action == "showsTrendingRecent": from resources.lib.gui.tvshowMenus import Menus Menus().shows_trending_recent() elif action == "moviePopularRecent": from resources.lib.gui.movieMenus import Menus Menus().movie_popular_recent() elif action == "movieTrendingRecent": from resources.lib.gui.movieMenus import Menus Menus().movie_trending_recent() elif action == "setDownloadLocation": from resources.lib.modules.download_manager import set_download_location set_download_location() elif action == "downloadManagerView": from resources.lib.gui.windows.download_manager import DownloadManager from resources.lib.database.skinManager import SkinManager window = DownloadManager( *SkinManager().confirm_skin_path("download_manager.xml")) window.doModal() del window elif action == "longLifeServiceManager": from resources.lib.modules.providers.service_manager import ( ProvidersServiceManager, ) ProvidersServiceManager().run_long_life_manager() elif action == "showsRecentlyWatched": from resources.lib.gui.tvshowMenus import Menus Menus().shows_recently_watched() elif action == "toggleLanguageInvoker": from resources.lib.common.maintenance import toggle_reuselanguageinvoker toggle_reuselanguageinvoker()
def authAllDebrid(payload, params): from resources.lib.debrid.all_debrid import AllDebrid AllDebrid().auth()
def all_debrid(self): from resources.lib.debrid.all_debrid import AllDebrid return AllDebrid()
def dispatch(params): from resources.lib.common import tools from resources.lib.modules import database tools.SETTINGS_CACHE = {} try: url = params.get('url') action = params.get('action') page = params.get('page') actionArgs = params.get('actionArgs') pack_select = params.get('packSelect') source_select = params.get('source_select') seren_reload = True if params.get('seren_reload') == 'true' else False resume = params.get('resume') forceresumeoff = True if params.get( 'forceresumeoff') == 'true' else False forceresumeon = True if params.get( 'forceresumeon') == 'true' else False smartPlay = True if params.get('smartPlay') == 'true' else False except: print('Welcome to console mode') print('Command Help:') print(' - Menu Number: opens the relevant menu page') print(' - shell: opens a interactive python shell within Seren') print(' - action xxx: run a custom Seren URL argument') url = '' action = None page = '' actionArgs = '' pack_select = '' source_select = '' seren_reload = '' resume = None forceresumeoff = True if params.get( 'forceresumeoff') == 'true' else False forceresumeon = True if params.get( 'forceresumeon') == 'true' else False smartPlay = True if params.get('smartPlay') == 'true' else False tools.log('Seren, Running Path - Action: %s, actionArgs: %s' % (action, actionArgs)) if action is None: from resources.lib.gui import homeMenu homeMenu.Menus().home() if action == 'smartPlay': from resources.lib.modules import smartPlay # if 'resume' not in actionArgs: # actionArgs = json.loads(actionArgs) # actionArgs['resume'] = sys.argv[3].split(':')[-1] # actionArgs = tools.quote(json.dumps(actionArgs, sort_keys=True)) smartPlay.SmartPlay(actionArgs).fill_playlist() if action == 'playbackResume': from resources.lib.modules import smartPlay smart = smartPlay.SmartPlay(actionArgs) smart.workaround() if action == 'moviesHome': from resources.lib.gui import movieMenus movieMenus.Menus().discoverMovies() if action == 'moviesPopular': from resources.lib.gui import movieMenus movieMenus.Menus().moviesPopular(page) if action == 'moviesTrending': from resources.lib.gui import movieMenus movieMenus.Menus().moviesTrending(page) if action == 'moviesPlayed': from resources.lib.gui import movieMenus movieMenus.Menus().moviesPlayed(page) if action == 'moviesWatched': from resources.lib.gui import movieMenus movieMenus.Menus().moviesWatched(page) if action == 'moviesCollected': from resources.lib.gui import movieMenus movieMenus.Menus().moviesCollected(page) if action == 'moviesAnticipated': from resources.lib.gui import movieMenus movieMenus.Menus().moviesAnticipated(page) if action == 'moviesBoxOffice': from resources.lib.gui import movieMenus movieMenus.Menus().moviesBoxOffice() if action == 'moviesUpdated': from resources.lib.gui import movieMenus movieMenus.Menus().moviesUpdated(page) if action == 'moviesRecommended': from resources.lib.gui import movieMenus movieMenus.Menus().moviesRecommended() if action == 'moviesSearch': from resources.lib.gui import movieMenus movieMenus.Menus().moviesSearch(actionArgs) if action == 'moviesSearchResults': from resources.lib.gui import movieMenus movieMenus.Menus().moviesSearchResults(actionArgs) if action == 'moviesSearchHistory': from resources.lib.gui import movieMenus movieMenus.Menus().moviesSearchHistory() if action == 'myMovies': from resources.lib.gui import movieMenus movieMenus.Menus().myMovies() if action == 'moviesMyCollection': from resources.lib.gui import movieMenus movieMenus.Menus().myMovieCollection() if action == 'moviesMyWatchlist': from resources.lib.gui import movieMenus movieMenus.Menus().myMovieWatchlist() if action == 'moviesRelated': from resources.lib.gui import movieMenus movieMenus.Menus().moviesRelated(actionArgs) if action == 'colorPicker': tools.colorPicker() if action == 'authTrakt': from resources.lib.indexers import trakt trakt.TraktAPI().auth() if action == 'revokeTrakt': from resources.lib.indexers import trakt trakt.TraktAPI().revokeAuth() if action == 'getSources': try: item_information = tools.get_item_information(actionArgs) # # This tomfoolery here is the new workaround for Seren to skip the building playlist window if tools.getSetting( 'smartplay.playlistcreate') == 'true' or smartPlay: if tools.playList.size() > 0: playlist_uris = [ tools.playList[i].getPath() for i in range(tools.playList.size()) ] else: playlist_uris = [] if ('showInfo' in item_information and tools.playList.size() == 0) \ or not any(sys.argv[2] in i for i in playlist_uris): try: name = item_information['info']['title'] item = tools.addDirectoryItem( name, 'getSources', item_information['info'], item_information['art'], item_information['cast'], isFolder=False, isPlayable=True, actionArgs=actionArgs, bulk_add=True, set_ids=item_information['ids']) tools.cancelPlayback() tools.playList.add(url=sys.argv[0] + sys.argv[2], listitem=item[1]) tools.player().play(tools.playList) return except: import traceback traceback.print_exc() return bookmark_style = tools.getSetting('general.bookmarkstyle') if tools.playList.size( ) == 1 and resume is not None and bookmark_style != '2' and not forceresumeoff: if bookmark_style == '0' and not forceresumeon: import datetime selection = tools.showDialog.contextmenu([ '{} {}'.format( tools.lang(32092), datetime.timedelta(seconds=int(resume))), tools.lang(40350) ]) if selection == -1: tools.cancelPlayback() sys.exit() elif selection != 0: resume = None else: resume = None # Assume if we couldn't get information using the normal method, that it's the legacy method if item_information is None: item_information = actionArgs if not tools.premium_check(): tools.showDialog.ok(tools.addonName, tools.lang(40146), tools.lang(40147)) return None if tools.playList.getposition() == 0 and tools.getSetting( 'general.scrapedisplay') == '0': display_background = True else: display_background = False from resources.lib.modules.skin_manager import SkinManager if display_background: from resources.lib.gui.windows.persistent_background import PersistentBackground background = PersistentBackground( *SkinManager().confirm_skin_path( 'persistent_background.xml'), actionArgs=actionArgs) background.setText(tools.lang(32045)) background.show() from resources.lib.modules import getSources uncached_sources, source_results, args = database.get( getSources.getSourcesHelper, 1, actionArgs, seren_reload=seren_reload, seren_sources=True) if len(source_results) <= 0: tools.showDialog.notification(tools.addonName, tools.lang(32047), time=5000) return if 'showInfo' in item_information: source_select_style = 'Episodes' else: source_select_style = 'Movie' if tools.getSetting( 'general.playstyle%s' % source_select_style) == '1' or source_select == 'true': try: background.setText(tools.lang(40135)) except: pass from resources.lib.modules import sourceSelect stream_link = sourceSelect.sourceSelect( uncached_sources, source_results, actionArgs) if stream_link is None: tools.showDialog.notification(tools.addonName, tools.lang(32047), time=5000) raise Exception if not stream_link: # user has backed out of source select, don't show no playable sources notification raise Exception else: try: background.setText(tools.lang(32046)) except: pass from resources.lib.modules import resolver resolver_window = resolver.Resolver( *SkinManager().confirm_skin_path('resolver.xml'), actionArgs=actionArgs) stream_link = database.get(resolver_window.doModal, 1, source_results, args, pack_select, seren_reload=seren_reload) del resolver_window if stream_link is None: tools.closeBusyDialog() tools.showDialog.notification(tools.addonName, tools.lang(32047), time=5000) raise Exception tools.showBusyDialog() try: background.close() except: pass try: del background except: pass from resources.lib.modules import player # if 'resume' not in actionArgs: # actionArgs = json.loads(actionArgs) # actionArgs['resume'] = sys.argv[3].split(':')[-1] # actionArgs = json.dumps(actionArgs, sort_keys=True) player.serenPlayer().play_source(stream_link, actionArgs, resume_time=resume, params=params) except: import traceback traceback.print_exc() # Perform cleanup and make sure all open windows close and playlist is cleared try: tools.closeBusyDialog() except: pass try: background.close() except: pass try: del background except: pass try: resolver_window.close() except: pass try: del resolver_window except: pass try: tools.playList.clear() except: pass try: tools.closeOkDialog() except: pass try: tools.cancelPlayback() except: pass if action == 'preScrape': from resources.lib.modules.skin_manager import SkinManager try: item_information = tools.get_item_information(actionArgs) if 'showInfo' in item_information: source_select_style = 'Episodes' else: source_select_style = 'Movie' from resources.lib.modules import getSources uncached_sources, source_results, args = database.get( getSources.getSourcesHelper, 1, actionArgs, seren_reload=seren_reload, seren_sources=True) if tools.getSetting('general.playstyle%s' % source_select_style) == '0': from resources.lib.modules import resolver resolver_window = resolver.Resolver( *SkinManager().confirm_skin_path('resolver.xml'), actionArgs=actionArgs) database.get(resolver_window.doModal, 1, source_results, args, pack_select, seren_reload=seren_reload) tools.setSetting(id='general.tempSilent', value='false') except: tools.setSetting(id='general.tempSilent', value='false') import traceback traceback.print_exc() pass tools.log('Pre-scraping completed') if action == 'authRealDebrid': from resources.lib.debrid import real_debrid real_debrid.RealDebrid().auth() if action == 'showsHome': from resources.lib.gui import tvshowMenus tvshowMenus.Menus().discoverShows() if action == 'myShows': from resources.lib.gui import tvshowMenus tvshowMenus.Menus().myShows() if action == 'showsMyCollection': from resources.lib.gui import tvshowMenus tvshowMenus.Menus().myShowCollection() if action == 'showsMyWatchlist': from resources.lib.gui import tvshowMenus tvshowMenus.Menus().myShowWatchlist() if action == 'showsMyProgress': from resources.lib.gui import tvshowMenus tvshowMenus.Menus().myProgress() if action == 'showsMyRecentEpisodes': from resources.lib.gui import tvshowMenus tvshowMenus.Menus().myRecentEpisodes() if action == 'showsPopular': from resources.lib.gui import tvshowMenus tvshowMenus.Menus().showsPopular(page) if action == 'showsRecommended': from resources.lib.gui import tvshowMenus tvshowMenus.Menus().showsRecommended() if action == 'showsTrending': from resources.lib.gui import tvshowMenus tvshowMenus.Menus().showsTrending(page) if action == 'showsPlayed': from resources.lib.gui import tvshowMenus tvshowMenus.Menus().showsPlayed(page) if action == 'showsWatched': from resources.lib.gui import tvshowMenus tvshowMenus.Menus().showsWatched(page) if action == 'showsCollected': from resources.lib.gui import tvshowMenus tvshowMenus.Menus().showsCollected(page) if action == 'showsAnticipated': from resources.lib.gui import tvshowMenus tvshowMenus.Menus().showsAnticipated(page) if action == 'showsUpdated': from resources.lib.gui import tvshowMenus tvshowMenus.Menus().showsUpdated(page) if action == 'showsSearch': from resources.lib.gui import tvshowMenus tvshowMenus.Menus().showsSearch(actionArgs) if action == 'showsSearchResults': from resources.lib.gui import tvshowMenus tvshowMenus.Menus().showsSearchResults(actionArgs) if action == 'showsSearchHistory': from resources.lib.gui import tvshowMenus tvshowMenus.Menus().showSearchHistory() if action == 'showSeasons': from resources.lib.gui import tvshowMenus tvshowMenus.Menus().showSeasons(actionArgs) if action == 'seasonEpisodes': from resources.lib.gui import tvshowMenus tvshowMenus.Menus().seasonEpisodes(actionArgs) if action == 'showsRelated': from resources.lib.gui import tvshowMenus tvshowMenus.Menus().showsRelated(actionArgs) if action == 'showYears': from resources.lib.gui import tvshowMenus tvshowMenus.Menus().showYears(actionArgs, page) if action == 'searchMenu': from resources.lib.gui import homeMenu homeMenu.Menus().searchMenu() if action == 'toolsMenu': from resources.lib.gui import homeMenu homeMenu.Menus().toolsMenu() if action == 'clearCache': from resources.lib.common import tools tools.clearCache() if action == 'traktManager': from resources.lib.indexers import trakt trakt.TraktAPI().traktManager(actionArgs) if action == 'onDeckShows': from resources.lib.gui import tvshowMenus tvshowMenus.Menus().onDeckShows() if action == 'onDeckMovies': from resources.lib.gui.movieMenus import Menus Menus().onDeckMovies() if action == 'cacheAssist': from resources.lib.modules import cacheAssist cacheAssist.CacheAssit(actionArgs) if action == 'tvGenres': from resources.lib.gui import tvshowMenus tvshowMenus.Menus().showGenres() if action == 'showGenresGet': from resources.lib.gui import tvshowMenus tvshowMenus.Menus().showGenreList(actionArgs, page) if action == 'movieGenres': from resources.lib.gui import movieMenus movieMenus.Menus().movieGenres() if action == 'movieGenresGet': from resources.lib.gui import movieMenus movieMenus.Menus().movieGenresList(actionArgs, page) if action == 'filePicker': from resources.lib.modules import smartPlay smartPlay.SmartPlay(actionArgs).torrent_file_picker() if action == 'shufflePlay': from resources.lib.modules import smartPlay try: smart = smartPlay.SmartPlay(actionArgs).shufflePlay() except: import traceback traceback.print_exc() pass if action == 'resetSilent': tools.setSetting('general.tempSilent', 'false') tools.showDialog.notification('{}: {}'.format(tools.addonName, tools.lang(40296)), tools.lang(32048), time=5000) if action == 'clearTorrentCache': from resources.lib.modules import database database.torrent_cache_clear() if action == 'openSettings': tools.execute('Addon.OpenSettings(%s)' % tools.addonInfo('id')) if action == 'myTraktLists': from resources.lib.indexers import trakt trakt.TraktAPI().myTraktLists(actionArgs) if action == 'traktList': from resources.lib.indexers import trakt trakt.TraktAPI().getListItems(actionArgs, page) if action == 'nonActiveAssistClear': from resources.lib.gui import debridServices debridServices.Menus().assist_non_active_clear() if action == 'debridServices': from resources.lib.gui import debridServices debridServices.Menus().home() if action == 'cacheAssistStatus': from resources.lib.gui import debridServices debridServices.Menus().get_assist_torrents() if action == 'premiumizeTransfers': from resources.lib.gui import debridServices debridServices.Menus().list_premiumize_transfers() if action == 'showsNextUp': from resources.lib.gui import tvshowMenus tvshowMenus.Menus().myNextUp() if action == 'runMaintenance': from resources.lib.common import maintenance maintenance.run_maintenance() if action == 'providerTools': from resources.lib.gui import homeMenu homeMenu.Menus().providerMenu() if action == 'adjustProviders': tools.log('adjustProviders endpoint has been deprecated') return # from resources.lib.modules import customProviders # # customProviders.providers().adjust_providers(actionArgs) if action == 'adjustPackage': tools.log('adjustPackage endpoint has been deprecated') return # DEPRECATED # from resources.lib.modules import customProviders # # customProviders.providers().adjust_providers(actionArgs, package_disable=True) if action == 'installProviders': from resources.lib.modules import customProviders customProviders.providers().install_package(actionArgs) if action == 'uninstallProviders': from resources.lib.modules import customProviders customProviders.providers().uninstall_package() if action == 'showsNew': from resources.lib.gui import tvshowMenus tvshowMenus.Menus().newShows() if action == 'realdebridTransfers': from resources.lib.gui import debridServices debridServices.Menus().list_RD_transfers() if action == 'cleanInstall': from resources.lib.common import maintenance maintenance.wipe_install() if action == 'buildPlaylistWorkaround': from resources.lib.modules import smartPlay smartPlay.SmartPlay(actionArgs).resume_playback() if action == 'premiumizeCleanup': from resources.lib.common import maintenance maintenance.premiumize_transfer_cleanup() if action == 'test2': pass if action == 'manualProviderUpdate': from resources.lib.modules import customProviders customProviders.providers().manual_update() if action == 'clearSearchHistory': from resources.lib.modules import database database.clearSearchHistory() if action == 'externalProviderInstall': from resources.lib.modules import customProviders confirmation = tools.showDialog.yesno(tools.addonName, tools.lang(40117)) if confirmation == 0: sys.exit() customProviders.providers().install_package(1, url=url) if action == 'externalProviderUninstall': from resources.lib.modules import customProviders confirmation = tools.showDialog.yesno(tools.addonName, tools.lang(40119) % url) if confirmation == 0: sys.exit() customProviders.providers().uninstall_package(package=url, silent=False) if action == 'showsNetworks': from resources.lib.gui import tvshowMenus tvshowMenus.Menus().showsNetworks() if action == 'showsNetworkShows': from resources.lib.gui import tvshowMenus tvshowMenus.Menus().showsNetworkShows(actionArgs, page) if action == 'movieYears': from resources.lib.gui import movieMenus movieMenus.Menus().movieYears() if action == 'movieYearsMovies': from resources.lib.gui import movieMenus movieMenus.Menus().movieYearsMovies(actionArgs, page) if action == 'syncTraktActivities': from resources.lib.modules.trakt_sync.activities import TraktSyncDatabase TraktSyncDatabase().sync_activities() if action == 'traktSyncTools': from resources.lib.gui import homeMenu homeMenu.Menus().traktSyncTools() if action == 'flushTraktActivities': from resources.lib.modules import trakt_sync trakt_sync.TraktSyncDatabase().flush_activities() if action == 'flushTraktDBMeta': from resources.lib.modules import trakt_sync trakt_sync.TraktSyncDatabase().clear_all_meta() if action == 'myFiles': from resources.lib.gui import myFiles myFiles.Menus().home() if action == 'myFilesFolder': from resources.lib.gui import myFiles myFiles.Menus().myFilesFolder(actionArgs) if action == 'myFilesPlay': from resources.lib.gui import myFiles myFiles.Menus().myFilesPlay(actionArgs) if action == 'forceTraktSync': from resources.lib.modules import trakt_sync from resources.lib.modules.trakt_sync.activities import TraktSyncDatabase trakt_sync.TraktSyncDatabase().flush_activities() TraktSyncDatabase().sync_activities() if action == 'rebuildTraktDatabase': from resources.lib.modules.trakt_sync import TraktSyncDatabase TraktSyncDatabase().re_build_database() if action == 'myUpcomingEpisodes': from resources.lib.gui import tvshowMenus tvshowMenus.Menus().myUpcomingEpisodes() if action == 'myWatchedEpisodes': from resources.lib.gui import tvshowMenus tvshowMenus.Menus().myWatchedEpisodes(page) if action == 'myWatchedMovies': from resources.lib.gui import movieMenus movieMenus.Menus().myWatchedMovies(page) if action == 'showsByActor': from resources.lib.gui import tvshowMenus tvshowMenus.Menus().showsByActor(actionArgs) if action == 'movieByActor': from resources.lib.gui import movieMenus movieMenus.Menus().moviesByActor(actionArgs) if action == 'playFromRandomPoint': from resources.lib.modules import smartPlay smartPlay.SmartPlay(actionArgs).play_from_random_point() if action == 'refreshProviders': from resources.lib.modules.customProviders import providers providers().update_known_providers() if action == 'installSkin': from resources.lib.modules.skin_manager import SkinManager SkinManager().install_skin() if action == 'uninstallSkin': from resources.lib.modules.skin_manager import SkinManager SkinManager().uninstall_skin() if action == 'switchSkin': from resources.lib.modules.skin_manager import SkinManager SkinManager().switch_skin() if action == 'manageProviders': tools.showBusyDialog() from resources.lib.gui.windows.custom_providers import CustomProviders from resources.lib.modules.skin_manager import SkinManager CustomProviders(*SkinManager().confirm_skin_path( 'custom_providers.xml')).doModal() if action == 'flatEpisodes': from resources.lib.gui.tvshowMenus import Menus Menus().flat_episode_list(actionArgs) if action == 'runPlayerDialogs': from resources.lib.modules.player import PlayerDialogs try: PlayerDialogs().display_dialog() except: import traceback traceback.print_exc() if action == 'authAllDebrid': from resources.lib.debrid.all_debrid import AllDebrid AllDebrid().auth() if action == 'checkSkinUpdates': from resources.lib.modules.skin_manager import SkinManager SkinManager().check_for_updates() if action == 'authPremiumize': from resources.lib.debrid.premiumize import Premiumize Premiumize().auth()