def hideItem(name, imdb=None, tvdb=None, season=None, episode=None, refresh=True): sections = ['progress_watched', 'calendar'] sections_display = [control.lang(40072), control.lang(40073)] selection = control.selectDialog([i for i in sections_display], heading=control.addonInfo('name') + ' - ' + control.lang(40074)) if selection == -1: return section = sections[selection] if episode is not None: post = {"shows": [{"ids": {"tvdb": tvdb}}]} else: post = {"movies": [{"ids": {"imdb": imdb}}]} getTrakt('users/hidden/%s' % section, post=post)[0] if refresh: control.refresh() control.trigger_widget_refresh() if control.setting('trakt.general.notifications') == 'true': control.notification( title=32315, message=control.lang(33053) % (name, sections_display[selection]), icon='default', sound=(control.setting('notification.sound') == 'true'))
def unwatch(name, imdb=None, tvdb=None, season=None, episode=None, refresh=True): if not tvdb: markMovieAsNotWatched(imdb) cachesyncMovies() elif episode: markEpisodeAsNotWatched(imdb, tvdb, season, episode) cachesyncTV(imdb) elif season: markSeasonAsNotWatched(imdb, tvdb, season) cachesyncTV(imdb) elif tvdb: markTVShowAsNotWatched(imdb, tvdb) cachesyncTV(imdb) else: markMovieAsNotWatched(imdb) cachesyncMovies() if refresh: control.refresh() control.trigger_widget_refresh() if control.setting('trakt.general.notifications') == 'true': if season and not episode: name = '%s-Season%s...' % (name, season) if season and episode: name = '%s-S%sxE%02d...' % (name, season, int(episode)) control.notification(title=32315, message=control.lang(35503) % name)
def unwatch(name, imdb=None, tvdb=None, season=None, episode=None, refresh=True): if tvdb is None: markMovieAsNotWatched(imdb) cachesyncMovies() elif episode is not None: markEpisodeAsNotWatched(imdb, tvdb, season, episode) cachesyncTV(imdb) elif season is not None: markSeasonAsNotWatched(imdb, tvdb, season) cachesyncTV(imdb) elif tvdb is not None: markTVShowAsNotWatched(imdb, tvdb) cachesyncTV(imdb) else: markMovieAsNotWatched(imdb) cachesyncMovies() if refresh: control.refresh() control.trigger_widget_refresh() if general_notification: if season and not episode: name = '%s-Season%s...' % (name, season) if season and episode: name = '%s-S%sxE%02d...' % (name, season, int(episode)) control.notification(title=32315, message=control.lang(35503) % name, icon='INFO', sound=notificationSound)
def cache_clear_bookmark(name, year='0'): cleared = False try: dbcon = get_connection_bookmarks() dbcur = dbcon.cursor() # idFile = md5() # for i in name: idFile.update(str(i)) # for i in year: idFile.update(str(i)) # idFile = str(idFile.hexdigest()) # dbcur.execute("DELETE FROM bookmark WHERE idFile = '%s'" % idFile) years = [str(year), str(int(year) + 1), str(int(year) - 1)] dbcur.execute( '''DELETE FROM bookmark WHERE Name="%s" AND year IN (%s)''' % (name, ','.join(i for i in years))) dbcur.connection.commit() control.refresh() control.trigger_widget_refresh() cleared = True except: log_utils.error() cleared = False finally: dbcur.close() dbcon.close() return cleared
def onPlayBackEnded(self): Bookmarks().reset(self.current_time, self.media_length, self.name, self.year) self.libForPlayback() if control.setting('crefresh') == 'true': xbmc.sleep(2000) xbmc.executebuiltin('Container.Refresh') control.trigger_widget_refresh() xbmc.log('onPlayBackEnded callback', 2)
def onPlayBackEnded(self): Bookmarks().reset(self.current_time, self.media_length, self.name, self.year) trakt.scrobbleReset(imdb=self.imdb, tvdb=self.tvdb, season=self.season, episode=self.episode, refresh=False) self.libForPlayback() # if control.setting('crefresh') == 'true': # control.refresh() # control.sleep(500) control.trigger_widget_refresh() xbmc.log('[ plugin.video.venom ] onPlayBackEnded callback', 2)
def scrobbleReset(imdb, tvdb=None, season=None, episode=None, refresh=True): control.busy() try: type = 'movie' if not episode else 'episode' if type == 'movie': items = [{'type': 'movie', 'movie': {'ids': {'imdb': imdb}}}] getTrakt('/scrobble/start', { "movie": { "ids": { "imdb": imdb } }, "progress": 0 }) else: items = [{ 'type': 'episode', 'episode': { 'season': season, 'number': episode }, 'show': { 'ids': { 'imdb': imdb, 'tvdb': tvdb } } }] getTrakt( '/scrobble/start', { "show": { "ids": { "tvdb": tvdb } }, "episode": { "season": season, "number": episode }, "progress": 0 }) timestamp = datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S.000Z") items[0].update({'paused_at': timestamp}) traktsync.delete_bookmark(items) control.hide() if refresh: control.refresh() control.trigger_widget_refresh() if control.setting('trakt.scrobble.notify') == 'true': control.notification(message=32082) except: log_utils.error()
def onPlayBackStopped(self): Bookmarks().reset(self.current_time, self.media_length, self.name, self.year) try: if (self.current_time / self.media_length) >= .80: self.libForPlayback() except: pass if control.setting('crefresh') == 'true': xbmc.sleep(2000) xbmc.executebuiltin('Container.Refresh') # control.playlist.clear() control.trigger_widget_refresh() xbmc.log('onPlayBackStopped callback', 2)
def onPlayBackStopped(self): if self.media_length == 0: return try: Bookmarks().reset(self.current_time, self.media_length, self.name, self.year) if control.setting('trakt.scrobble') == 'true': Bookmarks().set_scrobble(self.current_time, self.media_length, self.media_type, self.imdb, self.tmdb, self.tvdb, self.season, self.episode) if (self.current_time / self.media_length) > .85: self.libForPlayback() except: log_utils.error() # if control.setting('crefresh') == 'true': # control.refresh() # control.sleep(500) # control.playlist.clear() control.trigger_widget_refresh() xbmc.log('[ plugin.video.venom ] onPlayBackStopped callback', 2)
def onPlayBackStopped(self): try: Bookmarks().reset(self.current_time, self.media_length, self.name, self.year) Bookmarks().set_scrobble(self.current_time, self.media_length, self.media_type, self.imdb, self.tvdb, self.season, self.episode) if (self.current_time / self.media_length) >= .80: self.libForPlayback() except: log_utils.error() pass if control.setting('crefresh') == 'true': xbmc.sleep(2000) xbmc.executebuiltin('Container.Refresh') # control.playlist.clear() control.trigger_widget_refresh() xbmc.log('onPlayBackStopped callback', 2)
def cache_clear_bookmark(name, year='0'): cursor = _get_connection_cursor_bookmarks() idFile = hashlib.md5() for i in name: idFile.update(str(i)) for i in year: idFile.update(str(i)) idFile = str(idFile.hexdigest()) years = [str(year), str(int(year)+1), str(int(year)-1)] try: # cursor.execute("DELETE FROM bookmark WHERE idFile = '%s'" % idFile) cursor.execute('DELETE FROM bookmark WHERE Name = "%s" AND year IN (%s)' % (name, ','.join(i for i in years))) cursor.connection.commit() control.execute('Container.Refresh') control.trigger_widget_refresh() except: log_utils.error() pass cursor.close()
def manager(name, imdb=None, tvdb=None, season=None, episode=None, refresh=True): lists = [] try: if season: season = int(season) if episode: episode = int(episode) if tvdb: media_type = 'Show' else: media_type = 'Movie' items = [(control.lang(33651), 'watch')] items += [(control.lang(33652), 'unwatch')] items += [(control.lang(33653), 'rate')] items += [(control.lang(33654), 'unrate')] items += [(control.lang(40075) % media_type, 'hideItem')] if control.setting('trakt.scrobble') == 'true' and control.setting( 'resume.source') == '1': items += [(control.lang(40076), 'scrobbleReset')] items += [(control.lang(33575), '/sync/collection')] items += [(control.lang(33576), '/sync/collection/remove')] if season or episode: items += [(control.lang(33573), '/sync/watchlist')] items += [(control.lang(33574), '/sync/watchlist/remove')] items += [(control.lang(33577), '/sync/watchlist')] items += [(control.lang(33578), '/sync/watchlist/remove')] items += [(control.lang(33579), '/users/me/lists/%s/items')] result = getTraktAsJson('/users/me/lists') lists = [(i['name'], i['ids']['slug']) for i in result] lists = [lists[i // 2] for i in range(len(lists) * 2)] for i in range(0, len(lists), 2): # lists[i] = ((control.lang(33580) % lists[i][0]).encode('utf-8'), '/users/me/lists/%s/items' % lists[i][1]) lists[i] = ((control.lang(33580) % lists[i][0]), '/users/me/lists/%s/items' % lists[i][1]) for i in range(1, len(lists), 2): # lists[i] = ((control.lang(33581) % lists[i][0]).encode('utf-8'), '/users/me/lists/%s/items/remove' % lists[i][1]) lists[i] = ((control.lang(33581) % lists[i][0]), '/users/me/lists/%s/items/remove' % lists[i][1]) items += lists control.hide() select = control.selectDialog([i[0] for i in items], heading=control.addonInfo('name') + ' - ' + control.lang(32515)) if select == -1: return if select >= 0: if items[select][0] == control.lang(33651): control.busy() watch(name, imdb=imdb, tvdb=tvdb, season=season, episode=episode, refresh=refresh) control.hide() elif items[select][0] == control.lang(33652): control.busy() unwatch(name, imdb=imdb, tvdb=tvdb, season=season, episode=episode, refresh=refresh) control.hide() elif items[select][0] == control.lang(33653): control.busy() rate(imdb=imdb, tvdb=tvdb, season=season, episode=episode) control.hide() elif items[select][0] == control.lang(33654): control.busy() unrate(imdb=imdb, tvdb=tvdb, season=season, episode=episode) control.hide() elif items[select][0] == control.lang(40075) % media_type: control.busy() hideItem(name=name, imdb=imdb, tvdb=tvdb, season=season, episode=episode) control.hide() elif items[select][0] == control.lang(40076): control.busy() scrobbleReset(imdb=imdb, tvdb=tvdb, season=season, episode=episode) control.hide() else: if not tvdb: post = {"movies": [{"ids": {"imdb": imdb}}]} else: if episode: if items[select][0] == control.lang(33573) or items[ select][0] == control.lang(33574): post = {"shows": [{"ids": {"tvdb": tvdb}}]} else: post = { "shows": [{ "ids": { "tvdb": tvdb }, "seasons": [{ "number": season, "episodes": [{ "number": episode }] }] }] } name = name + ' - ' + '%sx%02d' % (season, episode) elif season: if items[select][0] == control.lang(33573) or items[ select][0] == control.lang(33574): post = {"shows": [{"ids": {"tvdb": tvdb}}]} else: post = { "shows": [{ "ids": { "tvdb": tvdb }, "seasons": [{ "number": season }] }] } name = name + ' - ' + 'Season %s' % season else: post = {"shows": [{"ids": {"tvdb": tvdb}}]} if items[select][0] == control.lang(33579): slug = listAdd(successNotification=True) if slug: getTrakt(items[select][1] % slug, post=post)[0] else: getTrakt(items[select][1], post=post)[0] control.hide() message = 33583 if 'remove' in items[select][1] else 33582 if refresh: control.refresh() control.trigger_widget_refresh() if control.setting('trakt.general.notifications') == 'true': control.notification(title=name, message=message) except: log_utils.error() control.hide()
elif action == 'openSettings': control.openSettings(query) elif action == 'open.Settings.CacheProviders': control.openSettings(query) elif action == 'artwork': control.artwork() elif action == 'UpNextSettings': control.openSettings('0.0', 'service.upnext') elif action == 'contextVenomSettings': control.openSettings('0.0', 'context.venom') control.trigger_widget_refresh() elif action == 'openscrapersSettings': control.openSettings('0.0', 'script.module.openscrapers') elif action == 'urlResolver': try: import resolveurl resolveurl.display_settings() except: pass elif action == 'urlResolverRDTorrent': control.openSettings(query, "script.module.resolveurl") ####################################################
def router(params): action = params.get('action') id = params.get('id') name = params.get('name') title = params.get('title') year = params.get('year') imdb = params.get('imdb') tmdb = params.get('tmdb') tvdb = params.get('tvdb') season = params.get('season') episode = params.get('episode') tvshowtitle = params.get('tvshowtitle') type = params.get('type') url = params.get('url') query = params.get('query') source = params.get('source') if action is None: from resources.lib.menus import navigator isUpdate = control.homeWindow.getProperty('venom.updated') if isUpdate == 'true': control.execute( 'RunPlugin(plugin://plugin.video.venom/?action=tools_cleanSettings)' ) control.homeWindow.clearProperty('venom.updated') from resources.lib.modules import changelog changelog.get() navigator.Navigator().root() #################################################### #---MOVIES #################################################### elif action == 'movieNavigator': from resources.lib.menus import navigator navigator.Navigator().movies() elif action == 'movieliteNavigator': from resources.lib.menus import navigator navigator.Navigator().movies(lite=True) elif action == 'mymovieNavigator': from resources.lib.menus import navigator navigator.Navigator().mymovies() elif action == 'mymovieliteNavigator': from resources.lib.menus import navigator navigator.Navigator().mymovies(lite=True) elif action == 'movies': from resources.lib.menus import movies movies.Movies().get(url) elif action == 'moviePage': from resources.lib.menus import movies movies.Movies().get(url) elif action == 'tmdbmovies': from resources.lib.menus import movies movies.Movies().getTMDb(url) elif action == 'tmdbmoviePage': from resources.lib.menus import movies movies.Movies().getTMDb(url) elif action == 'movieSearch': from resources.lib.menus import movies movies.Movies().search() elif action == 'movieSearchnew': from resources.lib.menus import movies movies.Movies().search_new() elif action == 'movieSearchterm': from resources.lib.menus import movies movies.Movies().search_term(name) elif action == 'moviePerson': from resources.lib.menus import movies movies.Movies().person() elif action == 'movieGenres': from resources.lib.menus import movies movies.Movies().genres() elif action == 'movieLanguages': from resources.lib.menus import movies movies.Movies().languages() elif action == 'movieCertificates': from resources.lib.menus import movies movies.Movies().certifications() elif action == 'movieYears': from resources.lib.menus import movies movies.Movies().years() elif action == 'moviePersons': from resources.lib.menus import movies movies.Movies().persons(url) elif action == 'moviesUnfinished': from resources.lib.menus import movies movies.Movies().unfinished(url) elif action == 'movieUserlists': from resources.lib.menus import movies movies.Movies().userlists() elif action == 'movies_traktUnfinishedManager': from resources.lib.menus import movies movies.Movies().unfinishedManager() #################################################### #---Collections #################################################### elif action and action.startswith('collections'): if action == 'collections_Navigator': from resources.lib.menus import collections collections.Collections().collections_Navigator() elif action == 'collections_Boxset': from resources.lib.menus import collections collections.Collections().collections_Boxset() elif action == 'collections_Kids': from resources.lib.menus import collections collections.Collections().collections_Kids() elif action == 'collections_BoxsetKids': from resources.lib.menus import collections collections.Collections().collections_BoxsetKids() elif action == 'collections_Superhero': from resources.lib.menus import collections collections.Collections().collections_Superhero() elif action == 'collections_MartialArts': from resources.lib.menus import collections collections.Collections().collections_martial_arts() elif action == 'collections_MartialArtsActors': from resources.lib.menus import collections collections.Collections().collections_martial_arts_actors() elif action == 'collections': from resources.lib.menus import collections collections.Collections().get(url) #################################################### #---Furk #################################################### elif action and action.startswith('furk'): if action == "furkNavigator": from resources.lib.menus import navigator navigator.Navigator().furk() elif action == "furkUserFiles": from resources.lib.menus import furk furk.Furk().user_files() elif action == "furkMetaSearch": from resources.lib.menus import furk furk.Furk().furk_meta_search(url) elif action == "furkSearch": from resources.lib.menus import furk furk.Furk().search() elif action == "furkSearchNew": from resources.lib.menus import furk furk.Furk().search_new() #################################################### # TV Shows #################################################### # if action and action.startswith('tv_'): elif action == 'tvNavigator': from resources.lib.menus import navigator navigator.Navigator().tvshows() elif action == 'tvliteNavigator': from resources.lib.menus import navigator navigator.Navigator().tvshows(lite=True) elif action == 'mytvNavigator': from resources.lib.menus import navigator navigator.Navigator().mytvshows() elif action == 'mytvliteNavigator': from resources.lib.menus import navigator navigator.Navigator().mytvshows(lite=True) elif action == 'tvshows': from resources.lib.menus import tvshows tvshows.TVshows().get(url) elif action == 'tvshowPage': from resources.lib.menus import tvshows tvshows.TVshows().get(url) elif action == 'tmdbTvshows': from resources.lib.menus import tvshows tvshows.TVshows().getTMDb(url) elif action == 'tmdbTvshowPage': from resources.lib.menus import tvshows tvshows.TVshows().getTMDb(url) elif action == 'tvmazeTvshows': from resources.lib.menus import tvshows tvshows.TVshows().getTVmaze(url) elif action == 'tvmazeTvshowPage': from resources.lib.menus import tvshows tvshows.TVshows().getTVmaze(url) elif action == 'tvSearch': from resources.lib.menus import tvshows tvshows.TVshows().search() elif action == 'tvSearchnew': from resources.lib.menus import tvshows tvshows.TVshows().search_new() elif action == 'tvSearchterm': from resources.lib.menus import tvshows tvshows.TVshows().search_term(name) elif action == 'tvPerson': from resources.lib.menus import tvshows tvshows.TVshows().person() elif action == 'tvGenres': from resources.lib.menus import tvshows tvshows.TVshows().genres() elif action == 'tvNetworks': from resources.lib.menus import tvshows tvshows.TVshows().networks() elif action == 'tvLanguages': from resources.lib.menus import tvshows tvshows.TVshows().languages() elif action == 'tvCertificates': from resources.lib.menus import tvshows tvshows.TVshows().certifications() elif action == 'tvPersons': from resources.lib.menus import tvshows tvshows.TVshows().persons(url) elif action == 'tvUserlists': from resources.lib.menus import tvshows tvshows.TVshows().userlists() elif action == 'tvOriginals': from resources.lib.menus import tvshows tvshows.TVshows().originals() elif action == 'shows_traktHiddenManager': from resources.lib.menus import tvshows tvshows.TVshows().traktHiddenManager() #################################################### #---SEASONS #################################################### elif action == 'seasons': from resources.lib.menus import seasons art = params.get('art') seasons.Seasons().get(tvshowtitle, year, imdb, tmdb, tvdb, art) #################################################### #---EPISODES #################################################### elif action == 'episodes': from resources.lib.menus import episodes meta = params.get('meta') episodes.Episodes().get(tvshowtitle, year, imdb, tmdb, tvdb, meta, season, episode) elif action == 'calendar': from resources.lib.menus import episodes episodes.Episodes().calendar(url) elif action == 'upcomingProgress': from resources.lib.menus import episodes episodes.Episodes().upcoming_progress(url) elif action == 'calendars': from resources.lib.menus import episodes episodes.Episodes().calendars() elif action == 'episodesUnfinished': from resources.lib.menus import episodes episodes.Episodes().unfinished(url) elif action == 'episodesUserlists': from resources.lib.menus import episodes episodes.Episodes().userlists() elif action == 'episodes_traktUnfinishedManager': from resources.lib.menus import episodes episodes.Episodes().unfinishedManager() #################################################### #---Premium Services #################################################### elif action == 'premiumNavigator': from resources.lib.menus import navigator navigator.Navigator().premium_services() elif action and action.startswith('pm_'): if action == 'pm_ServiceNavigator': from resources.lib.menus import navigator navigator.Navigator().premiumize_service() elif action == 'pm_AccountInfo': from resources.lib.debrid import premiumize premiumize.Premiumize().account_info_to_dialog() # elif action == 'pm_Authorize': # from resources.lib.debrid import premiumize # premiumize.Premiumize().auth() elif action == 'pm_MyFiles': from resources.lib.debrid import premiumize premiumize.Premiumize().my_files_to_listItem(id, name) elif action == 'pm_Transfers': from resources.lib.debrid import premiumize premiumize.Premiumize().user_transfers_to_listItem() elif action == 'pm_Rename': from resources.lib.debrid import premiumize premiumize.Premiumize().rename(type, id, name) elif action == 'pm_Delete': from resources.lib.debrid import premiumize premiumize.Premiumize().delete(type, id, name) elif action == 'pm_DeleteTransfer': from resources.lib.debrid import premiumize premiumize.Premiumize().delete_transfer(id, name) elif action == 'pm_ClearFinishedTransfers': # disabled for now till PM fixes from resources.lib.debrid import premiumize premiumize.Premiumize().clear_finished_transfers() elif action and action.startswith('rd_'): if action == 'rd_ServiceNavigator': from resources.lib.menus import navigator navigator.Navigator().realdebrid_service() elif action == 'rd_AccountInfo': from resources.lib.debrid import realdebrid realdebrid.RealDebrid().account_info_to_dialog() # elif action == 'rd_Authorize': # from resources.lib.debrid import realdebrid # realdebrid.RealDebrid().auth() elif action == 'rd_UserTorrentsToListItem': from resources.lib.debrid import realdebrid realdebrid.RealDebrid().user_torrents_to_listItem() elif action == 'rd_MyDownloads': from resources.lib.debrid import realdebrid realdebrid.RealDebrid().my_downloads_to_listItem(int(query)) elif action == 'rd_BrowseUserTorrents': from resources.lib.debrid import realdebrid realdebrid.RealDebrid().browse_user_torrents(id) elif action == 'rd_DeleteUserTorrent': from resources.lib.debrid import realdebrid realdebrid.RealDebrid().delete_user_torrent(id, name) elif action == 'rd_DeleteDownload': from resources.lib.debrid import realdebrid realdebrid.RealDebrid().delete_download(id, name) elif action and action.startswith('ad_'): if action == 'ad_ServiceNavigator': from resources.lib.menus import navigator navigator.Navigator().alldebrid_service() elif action == 'ad_AccountInfo': from resources.lib.debrid import alldebrid alldebrid.AllDebrid().account_info_to_dialog() # elif action == 'ad_Authorize': # from resources.lib.debrid import alldebrid # alldebrid.AllDebrid().auth() elif action == 'ad_Transfers': from resources.lib.debrid import alldebrid alldebrid.AllDebrid().user_transfers_to_listItem() elif action == 'ad_CloudStorage': from resources.lib.debrid import alldebrid alldebrid.AllDebrid().user_cloud_to_listItem() elif action == 'ad_BrowseUserCloud': from resources.lib.debrid import alldebrid alldebrid.AllDebrid().browse_user_cloud(source) elif action == 'ad_DeleteTransfer': from resources.lib.debrid import alldebrid alldebrid.AllDebrid().delete_transfer(id, name, silent=False) elif action == 'ad_RestartTransfer': from resources.lib.debrid import alldebrid alldebrid.AllDebrid().restart_transfer(id, name, silent=False) #################################################### #---Anime #################################################### elif action and action.startswith('anime_'): if action == 'anime_Navigator': from resources.lib.menus import navigator navigator.Navigator().anime() elif action == 'anime_Movies': from resources.lib.menus import movies movies.Movies().get(url) elif action == 'anime_TVshows': from resources.lib.menus import tvshows tvshows.TVshows().get(url) #################################################### #---YouTube #################################################### elif action == 'youtube': from resources.lib.menus import youtube if id is None: youtube.yt_index().root(action) else: youtube.yt_index().get(action, id) elif action == 'sectionItem': pass # Placeholder. This is a non-clickable menu item for notes, etc. #################################################### #---Download #################################################### elif action and action.startswith('download'): if action == 'downloadNavigator': from resources.lib.menus import navigator navigator.Navigator().downloads() elif action == 'download': caller = params.get('caller') image = params.get('image') if caller == 'sources': # future, move to downloader module for pack support control.busy() try: from json import loads as jsloads from resources.lib.modules import sources from resources.lib.modules import downloader downloader.download( name, image, sources.Sources().sourcesResolve(jsloads(source)[0]), title) except: import traceback traceback.print_exc() if caller == 'premiumize': control.busy() try: from resources.lib.modules import downloader from resources.lib.debrid import premiumize downloader.download( name, image, premiumize.Premiumize().add_headers_to_url( url.replace(' ', '%20'))) except: import traceback traceback.print_exc() if caller == 'realdebrid': control.busy() try: from resources.lib.modules import downloader from resources.lib.debrid import realdebrid if type == 'unrestrict': downloader.download( name, image, realdebrid.RealDebrid().unrestrict_link( url.replace(' ', '%20'))) else: downloader.download(name, image, url.replace(' ', '%20')) except: import traceback traceback.print_exc() if caller == 'alldebrid': control.busy() try: from resources.lib.modules import downloader from resources.lib.debrid import alldebrid downloader.download( name, image, alldebrid.AllDebrid().unrestrict_link( url.replace(' ', '%20'))) except: import traceback traceback.print_exc() #################################################### #---Tools #################################################### elif action and action.startswith('tools_'): if action == 'tools_ShowNews': from resources.lib.modules import newsinfo newsinfo.news() elif action == 'tools_ShowChangelog': from resources.lib.modules import changelog changelog.get() elif action == 'tools_ShowHelp': from resources.help import help help.get(name) elif action == 'tools_LanguageInvoker': from resources.lib.modules import language_invoker language_invoker.set_reuselanguageinvoker() elif action == 'tools_toolNavigator': from resources.lib.menus import navigator navigator.Navigator().tools() elif action == 'tools_traktToolsNavigator': from resources.lib.menus import navigator navigator.Navigator().traktTools() elif action == 'tools_searchNavigator': from resources.lib.menus import navigator navigator.Navigator().search() elif action == 'tools_viewsNavigator': from resources.lib.menus import navigator navigator.Navigator().views() elif action == 'tools_addView': from resources.lib.modules import views content = params.get('content') views.addView(content) elif action == 'tools_resetViewTypes': from resources.lib.modules import views views.clearViews() elif action == 'tools_cleanSettings': from resources.lib.modules import clean_settings clean_settings.clean_settings() elif action == 'tools_openMyAccount': from myaccounts import openMASettings from resources.lib.modules import my_accounts openMASettings(query) control.sleep(500) while control.condVisibility('Window.IsVisible(addonsettings)' ) or control.homeWindow.getProperty( 'myaccounts.active') == 'true': control.sleep(500) control.sleep(100) my_accounts.syncMyAccounts() control.sleep(100) if params.get('opensettings') == 'true': control.openSettings(params.get('query2'), 'plugin.video.venom') elif action == 'tools_syncMyAccount': from resources.lib.modules import my_accounts my_accounts.syncMyAccounts() if params.get('opensettings') == 'true': control.openSettings(query, 'plugin.video.venom') elif action == 'tools_traktAcctMyAccounts': control.execute( 'RunScript(script.module.myaccounts, action=traktAcct)') elif action == 'tools_adAcctMyAccounts': control.execute( 'RunScript(script.module.myaccounts, action=alldebridAcct)') elif action == 'tools_pmAcctMyAccounts': control.execute( 'RunScript(script.module.myaccounts, action=premiumizeAcct)') elif action == 'tools_rdAcctMyAccounts': control.execute( 'RunScript(script.module.myaccounts, action=realdebridAcct)') elif action == 'tools_openSettings': control.openSettings(query) elif action == 'tools_contextVenomSettings': control.openSettings('0.0', 'context.venom') control.trigger_widget_refresh() elif action == 'tools_fenomscrapersSettings': control.openSettings('0.0', 'script.module.fenomscrapers') elif action == 'tools_traktManager': from resources.lib.modules import trakt watched = (params.get('watched') == 'True') if params.get('watched') else None unfinished = (params.get('unfinished') == 'True') if params.get('unfinished') else False trakt.manager(name, imdb, tvdb, season, episode, watched=watched, unfinished=unfinished) elif action == 'tools_cachesyncMovies': from resources.lib.modules import trakt trakt.cachesyncMovies(int(params.get('timeout'))) elif action == 'tools_cachesyncTVShows': from resources.lib.modules import trakt trakt.cachesyncTVShows(int(params.get('timeout'))) elif action == 'tools_syncTraktProgress': from resources.lib.modules import trakt trakt.sync_progress() elif action == 'tools_syncTraktWatched': from resources.lib.modules import trakt trakt.sync_watched() #################################################### #---Play #################################################### elif action and action.startswith('play_'): if action == 'play_Item': from resources.lib.modules import sources premiered = params.get('premiered') meta = params.get('meta') select = params.get('select') rescrape = params.get('rescrape') sources.Sources().play(title, year, imdb, tmdb, tvdb, season, episode, tvshowtitle, premiered, meta, select, rescrape) # if episode and control.homeWindow.getProperty('venom.isplaying.playlist') != 'true': # if int(episode) != 1: control.playlist.clear() # import xbmc # enable_playnext = control.setting('enable.playnext') == 'true' # media_type = 'movie' if tvshowtitle is None else 'episode' # rescrape = params.get('rescrape') # select = params.get('select') # if control.homeWindow.getProperty('venom.isplaying.playlist') == 'true' or enable_playnext is False or media_type == 'movie' or rescrape or select == '0': # try: # if control.homeWindow.getProperty('venom.isplaying.playlist') == 'true': # xbmc.log('[ plugin.video.venom ] venom.isplaying.playlist = %s' % control.homeWindow.getProperty('venom.isplaying.playlist'), 1) # from resources.lib.modules import sources # premiered = params.get('premiered') # meta = params.get('meta') # xbmc.log('[ plugin.video.venom ] control.playlist.size() = %s' % control.playlist.size(), 1) # xbmc.log('[ plugin.video.venom ] control.playlist.getposition() = %s' % control.playlist.getposition(), 1) # xbmc.log('[ plugin.video.venom ] Calling....sources.Sources().play()', 1) # if int(control.playlist.getposition()) == -1 or (int(control.playlist.getposition()) == (control.playlist.size() - 1)): # control.homeWindow.clearProperty('venom.isplaying.playlist') # sources.Sources().play(title, year, imdb, tmdb, tvdb, season, episode, tvshowtitle, premiered, meta, select, rescrape) # except: # import traceback # traceback.print_exc() # else: # try: # xbmc.log('[ plugin.video.venom ] control.playlist.size() = %s' % control.playlist.size(), 1) # is_widget = 'plugin' not in control.infoLabel('Container.PluginName') # if is_widget: # control.playlist.clear() # control.cancelPlayback() # # control.playlist.clear() # # control.cancelPlayback() # if control.playlist.size() <= 1: # current_ep = episode # xbmc.log('[ plugin.video.venom ] current_ep = %s' % current_ep, 1) # from json import dumps as jsdumps # from resources.lib.menus import episodes # meta = params.get('meta') # items = episodes.Episodes().get(tvshowtitle, year, imdb, tmdb, tvdb, meta, season, episode, create_directory=False) # control.playlist.clear() # for i in items: # title = i['title'] # systitle = quote_plus(title) # year = i['year'] # imdb = i['imdb'] # tmdb = i['tmdb'] # tvdb = i['tvdb'] # season = i['season'] # episode = i['episode'] # tvshowtitle = i['tvshowtitle'] # systvshowtitle = quote_plus(tvshowtitle) # premiered = i['premiered'] # sysmeta = quote_plus(jsdumps(i)) # url = 'plugin://plugin.video.venom/?action=play_Item&title=%s&year=%s&imdb=%s&tmdb=%s&tvdb=%s&season=%s&episode=%s&tvshowtitle=%s&premiered=%s&meta=%s&select=1' % ( # systitle, year, imdb, tmdb, tvdb, season, episode, systvshowtitle, premiered, sysmeta) # item = control.item(label=title, offscreen=True) # # item.setProperty('IsPlayable', 'true') # control.playlist.add(url=url, listitem=item) # control.homeWindow.setProperty('venom.isplaying.playlist', 'true') # playlist_urls = [control.playlist[i].getPath() for i in range(control.playlist.size())] # xbmc.log('[ plugin.video.venom ] control.playlist.size() = %s' % control.playlist.size(), 1) # xbmc.log('[ plugin.video.venom ] playlist_urls = %s' % playlist_urls, 1) # xbmc.log('[ plugin.video.venom ] Calling....control.player2().play(control.playlist)', 1) # control.player2().play(control.playlist) # return # except: # control.homeWindow.clearProperty('venom.isplaying.playlist') # import traceback # traceback.print_exc() elif action == "play_preScrapeNext": from resources.lib.modules.player import PlayNext PlayNext().prescrapeNext() elif action == "play_nextWindowXML": from resources.lib.modules.player import PlayNext play_next = PlayNext() play_next.display_xml() del play_next elif action == 'play_All': # context menu works same as "Play from Here" control.player2().play(control.playlist) elif action == 'play_URL': caller = params.get('caller') if caller == 'realdebrid': from resources.lib.debrid import realdebrid if type == 'unrestrict': control.player.play( realdebrid.RealDebrid().unrestrict_link( url.replace(' ', '%20'))) else: control.player.play(url.replace(' ', '%20')) elif caller == 'alldebrid': from resources.lib.debrid import alldebrid if type == 'unrestrict': control.player.play(alldebrid.AllDebrid().unrestrict_link( url.replace(' ', '%20'))) else: control.player.play(url.replace(' ', '%20')) else: control.player.play(url.replace(' ', '%20')) elif action == 'play_EpisodesList': # global context option from json import dumps as jsdumps from resources.lib.menus import episodes meta = params.get('meta') items = episodes.Episodes().get(tvshowtitle, year, imdb, tmdb, tvdb, meta, season, episode, create_directory=False) control.playlist.clear() for i in items: title = i['title'] systitle = quote_plus(title) year = i['year'] imdb = i['imdb'] tmdb = i['tmdb'] tvdb = i['tvdb'] season = i['season'] episode = i['episode'] tvshowtitle = i['tvshowtitle'] systvshowtitle = quote_plus(tvshowtitle) premiered = i['premiered'] sysmeta = quote_plus(jsdumps(i)) url = 'plugin://plugin.video.venom/?action=play_Item&title=%s&year=%s&imdb=%s&tmdb=%s&tvdb=%s&season=%s&episode=%s&tvshowtitle=%s&premiered=%s&meta=%s&select=1' % ( systitle, year, imdb, tmdb, tvdb, season, episode, systvshowtitle, premiered, sysmeta) item = control.item(label=title, offscreen=True) control.playlist.add(url=url, listitem=item) control.player2().play(control.playlist) elif action == 'play_Trailer': from resources.lib.modules import trailer windowedtrailer = params.get('windowedtrailer') windowedtrailer = int(windowedtrailer) if windowedtrailer in ( "0", "1") else 0 trailer.Trailer().play(type, name, year, url, imdb, windowedtrailer) elif action == 'play_Random': rtype = params.get('rtype') if rtype == 'movie': from resources.lib.menus import movies rlist = movies.Movies().get(url, create_directory=False) xbmc.log('movie rlist=%s' % rlist, 1) xbmc.log('url=%s' % url, 1) r = 'plugin://plugin.video.venom/?action=play_Item' elif rtype == 'episode': from resources.lib.menus import episodes meta = params.get('meta') rlist = episodes.Episodes().get(tvshowtitle, year, imdb, tmdb, tvdb, meta, season, create_directory=False) r = 'plugin://plugin.video.venom/?action=play_Item' elif rtype == 'season': from resources.lib.menus import seasons art = params.get('art') rlist = seasons.Seasons().get(tvshowtitle, year, imdb, tmdb, tvdb, art, create_directory=False) r = 'plugin://plugin.video.venom/?action=play_Random&rtype=episode' elif rtype == 'show': from resources.lib.menus import tvshows rlist = tvshows.TVshows().get(url, create_directory=False) r = 'plugin://plugin.video.venom/?action=play_Random&rtype=season' from random import randint from json import dumps as jsdumps try: rand = randint(1, len(rlist)) - 1 for p in [ 'title', 'year', 'imdb', 'tmdb', 'tvdb', 'season', 'episode', 'tvshowtitle', 'premiered', 'select' ]: if rtype == "show" and p == "tvshowtitle": try: r += '&' + p + '=' + quote_plus( rlist[rand]['title']) except: pass else: try: r += '&' + p + '=' + quote_plus(str( rlist[rand][p])) except: pass try: r += '&meta=' + quote_plus(jsdumps(rlist[rand])) except: r += '&meta=' + quote_plus("{}") if rtype == "movie": try: control.notification( title=32536, message='%s (%s)' % (rlist[rand]['title'], rlist[rand]['year'])) except: pass elif rtype == "episode": try: control.notification(title=32536, message='%s - %01dx%02d - %s' % (rlist[rand]['tvshowtitle'], int(rlist[rand]['season']), int(rlist[rand]['episode']), rlist[rand]['title'])) except: pass control.execute('RunPlugin(%s)' % r) except: control.notification(message=32537) elif action == 'play': # for support of old style .strm library files from resources.lib.modules import sources premiered = params.get('premiered') meta = params.get('meta') select = params.get('select') rescrape = params.get('rescrape') sources.Sources().play(title, year, imdb, tmdb, tvdb, season, episode, tvshowtitle, premiered, meta, select, rescrape) #################################################### #---Playlist #################################################### elif action and action.startswith('playlist_'): if action == 'playlist_Manager': from resources.lib.modules import playlist art = params.get('art') meta = params.get('meta') playlist.playlistManager(name, url, meta, art) elif action == 'playlist_Show': from resources.lib.modules import playlist playlist.playlistShow() elif action == 'playlist_Clear': from resources.lib.modules import playlist playlist.playlistClear() elif action == 'playlist_QueueItem': control.queueItem() if name is None: control.notification(title=35515, message=35519) else: control.notification(title=name, message=35519) #################################################### #---Playcount #################################################### elif action and action.startswith('playcount_'): if action == 'playcount_Movie': from resources.lib.modules import playcount playcount.movies(name, imdb, query) elif action == 'playcount_Episode': from resources.lib.modules import playcount playcount.episodes(name, imdb, tvdb, season, episode, query) elif action == 'playcount_TVShow': from resources.lib.modules import playcount playcount.tvshows(name, imdb, tvdb, season, query) #################################################### #---Source Actions #################################################### elif action == 'alterSources': from resources.lib.modules import sources meta = params.get('meta') sources.Sources().alterSources(url, meta) elif action == 'showDebridPack': from resources.lib.modules.sources import Sources caller = params.get('caller') Sources().debridPackDialog(caller, name, url, source) elif action == 'sourceInfo': from resources.lib.modules.sources import Sources Sources().sourceInfo(source) elif action == 'cacheTorrent': caller = params.get('caller') pack = True if type == 'pack' else False if caller == 'RD': from resources.lib.debrid.realdebrid import RealDebrid as debrid_function elif caller == 'PM': from resources.lib.debrid.premiumize import Premiumize as debrid_function elif caller == 'AD': from resources.lib.debrid.alldebrid import AllDebrid as debrid_function success = debrid_function().add_uncached_torrent(url, pack=pack) if success: from resources.lib.modules import sources meta = params.get('meta') items = params.get('items') sources.Sources().playItem(title, items, source, meta) #################################################### #---Library Actions #################################################### elif action and action.startswith('library_'): if action == 'library_Navigator': from resources.lib.menus import navigator navigator.Navigator().library() elif action == 'library_movieToLibrary': from resources.lib.modules import library library.libmovies().add(name, title, year, imdb, tmdb) elif action == 'library_moviesToLibrary': from resources.lib.modules import library library.libmovies().range(url, name) elif action == 'library_moviesListToLibrary': from resources.lib.menus import movies movies.Movies().moviesListToLibrary(url) elif action == 'library_moviesToLibrarySilent': from resources.lib.modules import library library.libmovies().silent(url) elif action == 'library_tvshowToLibrary': from resources.lib.modules import library library.libtvshows().add(tvshowtitle, year, imdb, tmdb, tvdb) elif action == 'library_tvshowsToLibrary': from resources.lib.modules import library library.libtvshows().range(url, name) elif action == 'library_tvshowsListToLibrary': from resources.lib.menus import tvshows tvshows.TVshows().tvshowsListToLibrary(url) elif action == 'library_tvshowsToLibrarySilent': from resources.lib.modules import library library.libtvshows().silent(url) elif action == 'library_update': control.notification(message=32085) from resources.lib.modules import library library.libepisodes().update() library.libmovies().list_update() library.libtvshows().list_update() while True: if control.condVisibility('Library.IsScanningVideo'): control.sleep(3000) continue else: break control.sleep(1000) control.notification(message=32086) elif action == 'library_clean': from resources.lib.modules import library library.lib_tools().clean() elif action == 'library_setup': from resources.lib.modules import library library.lib_tools().total_setup() elif action == 'library_service': from resources.lib.modules import library library.lib_tools().service() #################################################### #---Cache #################################################### elif action and action.startswith('cache_'): if action == 'cache_Navigator': from resources.lib.menus import navigator navigator.Navigator().cf() elif action == 'cache_clearAll': from resources.lib.menus import navigator navigator.Navigator().clearCacheAll() elif action == 'cache_clearSources': from resources.lib.menus import navigator navigator.Navigator().clearCacheProviders() elif action == 'cache_clearMeta': from resources.lib.menus import navigator navigator.Navigator().clearCacheMeta() elif action == 'cache_clearCache': from resources.lib.menus import navigator navigator.Navigator().clearCache() elif action == 'cache_clearSearch': from resources.lib.menus import navigator navigator.Navigator().clearCacheSearch() elif action == 'cache_clearSearchPhrase': from resources.lib.menus import navigator navigator.Navigator().clearCacheSearchPhrase(source, name) elif action == 'cache_clearBookmarks': from resources.lib.menus import navigator navigator.Navigator().clearBookmarks() elif action == 'cache_clearBookmark': from resources.lib.menus import navigator navigator.Navigator().clearBookmark(name, year) elif action == 'cache_clearKodiBookmark': # context.venom action call only from resources.lib.database import cache cache.clear_local_bookmark(url)