def search_menu(): from libs.database import DB menu = kodi.ContextMenu() menu.add('Search Filter', {"mode": "search_filter"}) kodi.add_menu_item({'mode': 'void'}, {'title': "[COLOR darkorange]%s[/COLOR]" % kodi.arg('title')}, icon='null', menu=menu) kodi.add_menu_item({'mode': 'search', 'type': kodi.arg('type')}, {'title': "*** New Search ***"}, icon='null', menu=menu) results = DB.query_assoc("SELECT search_id, query FROM search_history WHERE search_type=? ORDER BY ts DESC LIMIT 25", [kodi.arg('type')], quiet=True) if results is not None: for result in results: menu = kodi.ContextMenu() menu.add('Search Filter', {"mode": "search_filter"}) menu.add('Delete from search history', {"mode": "history_delete", "id": result['search_id']}) kodi.add_menu_item({'mode': 'search', 'type': kodi.arg('type'), 'query': result['query']}, {'title': result['query']}, menu=menu, icon='null') kodi.eod()
def addonid(): from commoncore.core import highlight from libs.github import re_version, content_url from distutils.version import LooseVersion rtype = 'api' results = github.search(q, 'id') if results is None: return def version_sort(name): v = re_version.search(name) if v: return LooseVersion(v.group(1)) else: return LooseVersion('0.0.0') results.sort(key=lambda x:version_sort(x['name']), reverse=True) for i in results: menu = kodi.ContextMenu() r = i['repository'] full_name = r['full_name'] title = highlight("%s/%s" % (full_name, i['name']), q, 'yellow') url = content_url % (full_name, i['path']) menu.add("Search Username", {'mode': 'search', 'type': 'username', 'query': r['owner']['login']}) kodi.add_menu_item({'mode': 'github_install', "url": url, "file": i['name'], "full_name": full_name}, {'title': title}, menu=menu, icon='null')
def feed_menu(): from libs.database import DB kodi.add_menu_item({'mode': 'new_feed'}, {'title': "*** New Search Feed ***"}, icon='null') feeds = DB.query_assoc( "SELECT feed_id, name, url, enabled FROM feed_subscriptions") for feed in feeds: menu = kodi.ContextMenu() name = feed['name'] if feed['name'] else feed['url'] if not feed['enabled']: title = "[COLOR darkred]%s[/COLOR]" % name else: title = name menu.add('Delete Feed', { "mode": "delete_feed", "title": title, "id": feed['feed_id'] }) kodi.add_menu_item({ 'mode': 'list_feed', 'url': feed['url'] }, {'title': title}, menu=menu, icon='null') kodi.eod()
def main(): menu = kodi.ContextMenu() menu.add( 'Set Default View', { "mode": "set_default_view", "api": { "name": "kodi", "method": "set_default_view", "args": ("list", ) } }) kodi.add_menu_item({'mode': 'tv_menu'}, {'title': "Shows"}, menu=menu, icon='shows.png') kodi.add_menu_item({'mode': 'movie_menu'}, {'title': "Movies"}, menu=menu, icon='movies.png') kodi.add_menu_item( { 'mode': 'execute_api', "api": { "name": "kodi", "method": "go_to_url", "args": ("plugin://plugin.video.scrapecore.bowser", ) } }, {'title': "Bowser"}, menu=menu, icon='bowser.png', visible=kodi.get_condition_visiblity( 'System.HasAddon(plugin.video.scrapecore.bowser)') == 1) kodi.add_menu_item({'mode': 'settings_menu'}, {'title': "Settings and Tools"}, menu=menu, icon='settings.png') kodi.eod(DEFAULT_VIEWS.LIST)
def premiumize_transfers(): import re from commoncore import premiumize from scrapecore.scrapers.common import BaseScraper, QUALITY id = kodi.arg('id', '') transfers = premiumize.list_transfers() kodi.add_menu_item( { "mode": "execute_api", "api": { "name": "premiumize", "method": "clear_transfers", "refresh": True, "confirm": "Confirm Clear Transfers(s)?", "message": "Delete all transfers" } }, {'title': "*** Clear Finished Transfered ***"}, icon="clear_transfers.png") for t in transfers['transfers']: menu = kodi.ContextMenu() kodi.add_menu_item({ 'mode': 'void', "id": t['id'] }, {'title': t['name']}, menu=menu, icon="definition/folder.png") kodi.eod(DEFAULT_VIEWS.STREAMS)
def realdebrid_torrents(): from commoncore import realdebrid from scrapecore.scrapers.common import BaseScraper s = BaseScraper() torrents = realdebrid.list_torrents() for t in torrents: menu = kodi.ContextMenu() icon = '' quality = s.test_quality(t['filename']) size = core.format_size(t['bytes']) display = "RealDebrid | %s | %s" % (core.format_color( size, 'blue'), t['filename']) kodi.add_video_item( { "mode": "realdebrid_direct", "name": t['filename'], "type": "stream", "url": t['links'][0] }, { "title": t['filename'], "display": display }, icon=icon, menu=menu) kodi.eod(DEFAULT_VIEWS.STREAMS)
def make_episode_directory(episode): infoLabel = core.make_infolabel('episode', episode, show=show, ids=ids, watched=watched) if not infoLabel: return infoLabel['display'] = "%sx%s. %s" % ( infoLabel['season'], infoLabel['episode'], infoLabel['title']) menu = kodi.ContextMenu() menu.add( 'Toggle Watched', { "mode": "toggle_watched", "api": { "name": "trakt", "method": "set_watched_state", "args": ("episode", infoLabel['trakt_id'], infoLabel['playcount'] == 0), "refresh": True } }) menu.add( 'Set Default View', { "mode": "set_default_view", "api": { "name": "kodi", "method": "set_default_view", "args": ("episode", ) } }) if infoLabel['aired']: inprogress = in_progress('episode', infoLabel['trakt_id']) kodi.add_menu_item( { "mode": "search_streams", "media": "episode", "trakt_id": infoLabel['trakt_id'], "title": infoLabel['showtitle'], "episode_title": infoLabel['title'], "year": infoLabel['year'], "season": infoLabel['season'], "episode": infoLabel['episode'], "ids": ids }, infoLabel, in_progress=inprogress, menu=menu, image=infoLabel['poster']) else: infoLabel['display'] = core.format_color(infoLabel['display'], 'maroon') kodi.add_menu_item({"mode": "void"}, infoLabel, menu=menu, image=infoLabel['poster'])
def movies_standard_menu(): menu = kodi.ContextMenu() menu.add( 'Set Default View', { "mode": "set_default_view", "api": { "name": "kodi", "method": "set_default_view", "args": ("list", ) } }) kodi.add_menu_item( { 'mode': 'movies_trending', "api": { "name": "trakt", "method": "get_trending_movies" } }, {'title': "Trending Movies"}, icon='trending.png') kodi.add_menu_item( { 'mode': 'movies_popular', "api": { "name": "trakt", "method": "get_popular_movies" } }, {'title': "Popular Movies"}, icon='popular.png') kodi.add_menu_item( { 'mode': 'movies_recommended', "api": { "name": "trakt", "method": "get_recommended_movies" } }, {'title': "Recommended Movies"}, icon='recommended.png') kodi.add_menu_item( { 'mode': 'movies_anticipated', "api": { "name": "trakt", "method": "get_anticipated_movies" } }, {'title': "Anticipated Movies"}, icon='anticipated.png') kodi.add_menu_item( { 'mode': 'movies_genres', 'media': 'movies', "api": { "name": "trakt", "method": "get_genres", "args": ("movies", ) } }, {'title': "Genres"}, icon='genres.png') kodi.eod(DEFAULT_VIEWS.LIST)
def make_season_directory(season): infoLabel = core.make_season_infolabel(season, ids) if not infoLabel: return if 'aired_episodes' in season and infoLabel[ 'season'] in watched and season['aired_episodes'] == len( watched[infoLabel['season']]): infoLabel['overlay'] = 7 infoLabel['playcount'] = 1 menu = kodi.ContextMenu() menu.add( 'Toggle Watched', { "mode": "toggle_watched", "api": { "name": "trakt", "method": "set_watched_state", "args": ("season", kodi.arg('trakt_id'), season, True), "refresh": True } }) menu.add( 'Set Default View', { "mode": "set_default_view", "api": { "name": "kodi", "method": "set_default_view", "args": ("season", ) } }) menu.add( 'Toggle Watched', { "mode": "toggle_watched", "api": { "name": "trakt", "method": "set_watched_state", "args": ("season", kodi.arg('trakt_id'), True, infoLabel['season']), "refresh": True } }) kodi.add_menu_item( { "mode": "list_episodes", "trakt_id": ids['trakt'], "season": infoLabel['season'], "ids": ids }, infoLabel, menu=menu, image=infoLabel['poster'])
def username(): rtype = 'api' response = github.find_zips(q) if response is None: return for r in github.sort_results(response['items']): url = github.content_url % (r['repository']['full_name'], r['path']) menu = kodi.ContextMenu() if r['is_repository']: menu.add('Browse Repository Contents', {"mode": "browse_repository", "url": url, "file": r['name'], "full_name": "%s/%s" % (q, r['repository']['name'])}) if r['is_feed']: r['display'] = "[COLOR yellow]%s[/COLOR]" % r['name'] kodi.add_menu_item({'mode': 'install_feed', "url": url}, {'title': r['name'], 'display': r['display']}, menu=menu, icon='null') else: kodi.add_menu_item({'mode': 'github_install', "url": url, "user": q, "file": r['name'], "full_name": "%s/%s" % (q, r['repository']['name'])}, {'title': r['name']}, menu=menu, icon='null')
def make_stream_directory(r): menu = kodi.ContextMenu() menu.add( 'Set Default View', { "mode": "set_default_view", "api": { "name": "kodi", "method": "set_default_view", "args": ("stream", ) } }) infoLabel = {"title": r['title'], "display": r['display']} menu.add( 'Master Control', { "mode": "master_control", "media": kodi.args['media'], "raw_url": r['raw_url'], "service": r['service'], "title": kodi.args['title'], "year": kodi.arg('year'), "season": kodi.arg('season'), "episode": kodi.arg('episode'), "trakt_id": kodi.arg('trakt_id') }) if r['torrent']: menu.add( 'Add to Cloud', { "mode": "execute_api", "api": { "name": "premiumize", "method": "create_transfer", "args": (r['raw_url'], ), "notify": True, "confirm": "Add to Premiumize Cloud?", "message": r['title'] } }) kodi.add_video_item( { "mode": "play_stream", "raw_url": r['raw_url'], "title": kodi.args['title'], "service": r['service'], "ids": ids, "media": kodi.args['media'], "trakt_id": kodi.args['trakt_id'] }, infoLabel, menu=menu, icon=r['icon'])
def feed_menu(): from libs.database import DB kodi.add_menu_item({'mode': 'install_local_feed'}, {'title': "*** Local Search Feed File ***"}, icon='install_feed_local.png') #kodi.add_menu_item({'mode': 'search', 'query': 'gitbrowser.feed', 'type': 'addonid'}, {'title': "*** Search for Feeds ***"}, icon='null') feeds = DB.query_assoc("SELECT feed_id, name, url, enabled FROM feed_subscriptions") for feed in feeds: menu = kodi.ContextMenu() name = feed['name'] if feed['name'] else feed['url'] if not feed['enabled']: title = "[COLOR darkred]%s[/COLOR]" % name else: title = name menu.add('Delete Feed', {"mode": "delete_feed", "title": title, "id": feed['feed_id']}) kodi.add_menu_item({'mode': 'list_feed', 'url': feed['url']}, {'title': title}, menu=menu, icon='null') kodi.eod()
def make_show_directory(record): infoLabel = core.make_infolabel('show', record) ids = record['show']['ids'] if 'show' in record else record['ids'] infoLabel['display'] = "%s (%s)" % (infoLabel['title'], infoLabel['year']) menu = kodi.ContextMenu() menu.add( 'Set Default View', { "mode": "set_default_view", "api": { "name": "kodi", "method": "set_default_view", "args": ("show", ) } }) if kodi.mode in ['shows_watchlist', 'shows_custom_list']: menu.add( 'Remove From List', { "mode": "execute_api", "api": { "name": "trakt", "method": "remove_from_list", "args": ("show", api['args'][0], infoLabel['trakt_id']), "refresh": True, "confirm": "Confirm Remove from List?", "message": api['args'][0] } }) else: menu.add( 'Add to List', { "mode": "execute_api", "api": { "name": "trakt", "method": "add_to_list", "args": ("show", infoLabel['trakt_id']) } }) kodi.add_menu_item( { "mode": "list_seasons", "trakt_id": infoLabel['trakt_id'], "ids": ids }, infoLabel, menu=menu, image=infoLabel['poster'])
def addonid(): from commoncore.core import highlight from libs.github import version_sort rtype = 'api' results = github.search(q, 'id') if results is None: return results.sort(key=lambda x:version_sort(x['name']), reverse=True) for i in results: menu = kodi.ContextMenu() r = i['repository'] full_name = r['full_name'] title = highlight("%s/%s" % (full_name, i['name']), q, 'yellow') url = get_download_url(full_name, i['path']) menu.add("Search Username", {'mode': 'search', 'type': 'username', 'query': r['owner']['login']}) kodi.add_menu_item({'mode': 'github_install', "url": url, "file": i['name'], "full_name": full_name}, {'title': title}, menu=menu, icon='null')
def repository(): rtype = 'api' results = github.search(q, 'title') if results is None: return for i in results['items']: user = i['owner']['login'] response = github.find_zips(user) if response is None: continue for r in github.sort_results(response['items']): url = github.content_url % (r['repository']['full_name'], r['path']) menu = kodi.ContextMenu() if r['is_repository']: menu.add('Browse Repository Contents', {"mode": "browse_repository", "url": url, "file": r['name'], "full_name": "%s/%s" % (q, r['repository']['name'])}) if r['is_feed']: kodi.add_menu_item({'mode': 'install_feed', "url": url}, {'title': r['name']}, menu=menu, icon='null') else: kodi.add_menu_item({'mode': 'github_install', "url": url, "user": q, "file": r['name'], "full_name": "%s/%s" % (q, r['repository']['name'])}, {'title': r['name']}, menu=menu, icon='null')
def premiumize_menu(): menu = kodi.ContextMenu() menu.add( 'Set Default View', { "mode": "set_default_view", "api": { "name": "kodi", "method": "set_default_view", "args": ("list", ) } }) kodi.add_menu_item({'mode': 'premiumize_transfers'}, {'title': "Torrent Transfer List"}, icon='cloud.png') kodi.add_menu_item({'mode': 'premiumize_folders'}, {'title': "Browse Torrent Cloud"}, icon='cloud.png') kodi.eod(DEFAULT_VIEWS.LIST)
def realdebrid_menu(): menu = kodi.ContextMenu() menu.add( 'Set Default View', { "mode": "set_default_view", "api": { "name": "kodi", "method": "set_default_view", "args": ("list", ) } }) kodi.add_menu_item({'mode': 'auth_realdebrid'}, {'title': "Authorize RealDebrid"}, icon='authorize.png') kodi.add_menu_item({'mode': 'realdebrid_torrents'}, {'title': "Browse Torrent Cloud"}, icon='cloud.png') kodi.eod(DEFAULT_VIEWS.LIST)
def settings_menu(): menu = kodi.ContextMenu() menu.add( 'Set Default View', { "mode": "set_default_view", "api": { "name": "kodi", "method": "set_default_view", "args": ("list", ) } }) kodi.add_menu_item( {'mode': 'realdebrid_menu'}, {'title': "RealDebrid"}, icon='realdebrid.png', visible=kodi.get_setting('realdebrid_enable', 'script.module.scrapecore') == 'true') kodi.add_menu_item( {'mode': 'premiumize_menu'}, {'title': "Premiumize Cloud"}, icon='cloud.png', visible=kodi.get_setting('premiumize_enable', 'script.module.scrapecore') == 'true') kodi.add_menu_item( { 'mode': 'scrapecore_settings', "api": { "name": "kodi", "method": "open_settings", "args": ("script.module.scrapecore", ) } }, {'title': "ScrapeCore Settings"}, icon='settings.png') kodi.add_menu_item( { 'mode': 'open_settings', 'addon_id': 'service.fanart.proxy' }, {'title': "Fanart Proxy Settings"}, icon='settings.png', visible=kodi.has_addon('service.fanart.proxy')) kodi.add_menu_item({'mode': 'commoncore_settings'}, {'title': "CommonCore Settings"}, icon='settings.png') kodi.add_menu_item({'mode': 'addon_settings'}, {'title': "Addon Settings"}, icon='settings.png') kodi.eod(DEFAULT_VIEWS.LIST)
def make_show_directory(record): ids = json.loads(record[0]) metadata = json.loads(record[1]) episode = metadata['episode'] show = metadata['show']['items'] infoLabel = metadata['episode'] infoLabel['display'] = "%sx%s. %s - %s" % ( infoLabel['season'], infoLabel['episode'], show['title'], infoLabel['title']) menu = kodi.ContextMenu() menu.add( 'Set Default View', { "mode": "set_default_view", "api": { "name": "kodi", "method": "set_default_view", "args": ("show", ) } }) menu.add( 'Add to List', { "mode": "execute_api", "api": { "name": "trakt", "method": "add_to_list", "args": ("show", infoLabel['trakt_id']) } }) kodi.add_menu_item( { "mode": "search_streams", "media": "episode", "trakt_id": infoLabel['trakt_id'], "title": show['title'], "year": show['year'], "season": infoLabel['season'], "episode": infoLabel['episode'], "ids": ids }, infoLabel, menu=menu, in_progress=True, image=infoLabel['poster'])
def scraper_list(): for s in scrapecore.get_scrapers(): if kodi.get_setting(s['service'] + '_enable') == 'true': title = format_color(s['name'], 'green') else: title = format_color(s['name'], 'maroon') menu = kodi.ContextMenu() menu.add( 'Uninstall Scraper', { "mode": "uninstall_scraper", "service": s['service'], "name": s['name'] }) kodi.add_menu_item({ 'mode': 'toggle_scraper', "service": s['service'] }, {'title': title}, icon='', menu=menu) kodi.eod()
def make_movie_directory(record): ids = json.loads(record[0]) infoLabel = json.loads(record[1]) infoLabel['display'] = "%s (%s)" % (infoLabel['title'], infoLabel['year']) menu = kodi.ContextMenu() menu.add( 'Set Default View', { "mode": "set_default_view", "api": { "name": "kodi", "method": "set_default_view", "args": ("movie", ) } }) menu.add( 'Add to List', { "mode": "execute_api", "api": { "name": "trakt", "method": "add_to_list", "args": ("movie", infoLabel['trakt_id']) } }) kodi.add_menu_item( { "mode": "search_streams", "media": "movie", "trakt_id": infoLabel['trakt_id'], "title": infoLabel['title'], "year": infoLabel['year'], "ids": ids }, infoLabel, menu=menu, in_progress=True, image=infoLabel['poster'])
def tv_menu(): from commoncore.trakt import is_authorized as trakt_authorized TRAKT_AUTH = trakt_authorized() menu = kodi.ContextMenu() menu.add( 'Set Default View', { "mode": "set_default_view", "api": { "name": "kodi", "method": "set_default_view", "args": ("list", ) } }) kodi.add_menu_item({'mode': 'my_calendar'}, {'title': "My Calendar"}, icon='calendar.png', visible=TRAKT_AUTH) kodi.add_menu_item({ 'mode': 'custom_list_menu', 'media': 'shows' }, {'title': "My Show Lists"}, icon='lists.png', visible=TRAKT_AUTH) kodi.add_menu_item( { 'mode': 'shows_watchlist', "api": { "name": "trakt", "method": "get_my_watchlist_shows" } }, {'title': "My Watchlist"}, icon='watchlist.png', visible=TRAKT_AUTH) kodi.add_menu_item( { 'mode': 'shows_collection', "api": { "name": "trakt", "method": "get_my_collection_shows" } }, {'title': "My Collection"}, icon='collected.png', visible=TRAKT_AUTH) kodi.add_menu_item({'mode': 'shows_standard_menu'}, {'title': "Trakt Lists"}, icon='lists.png', visible=TRAKT_AUTH) kodi.add_menu_item( { 'mode': 'shows_trending', "api": { "name": "trakt", "method": "get_trending_shows" } }, {'title': "Trending Shows"}, icon='trending.png', visible=TRAKT_AUTH == False) kodi.add_menu_item( { 'mode': 'shows_popular', "api": { "name": "trakt", "method": "get_popular_shows" } }, {'title': "Popular Shows"}, icon='popular.png', visible=TRAKT_AUTH == False) kodi.add_menu_item( { 'mode': 'shows_recommended', "api": { "name": "trakt", "method": "get_recommended_shows" } }, {'title': "Recommended Shows"}, icon='recommended.png', visible=TRAKT_AUTH == False) kodi.add_menu_item( { 'mode': 'shows_anticipated', "api": { "name": "trakt", "method": "get_anticipated_shows" } }, {'title': "Anticipated Shows"}, icon='anticipated.png', visible=TRAKT_AUTH == False) kodi.add_menu_item( { 'mode': 'shows_genres', "media": "shows", "api": { "name": "trakt", "method": "get_genres", "args": ("shows", ) } }, {'title': "Genres"}, icon='genres.png', visible=TRAKT_AUTH == False) kodi.add_menu_item( { 'mode': 'shows_inprogress', "api": { "name": "coreplayback", "method": "get_inprogress_shows" } }, {'title': "In Progress"}, icon='in_progress.png') kodi.add_menu_item({ 'mode': 'search_menu', 'media': 'show' }, {'title': "Search"}, icon='search.png') kodi.eod(DEFAULT_VIEWS.LIST)
def make_calendar_directory(record): show = record['show'] ids = show['ids'] episode = record['episode'] infoLabel = core.make_infolabel('episode', episode, ids=ids, watched=watched) if infoLabel['season'] == 0 or infoLabel['season'] == 0: return infoLabel['display'] = "%sx%s. %s - %s" % ( infoLabel['season'], infoLabel['episode'], show['title'], infoLabel['title']) if not infoLabel: return menu = kodi.ContextMenu() inprogress = in_progress('episode', infoLabel['trakt_id']) ids['episode_ids'] = episode['ids'] menu.add( 'Toggle Watched', { "mode": "toggle_watched", "api": { "name": "trakt", "method": "set_watched_state", "args": ("episode", infoLabel['trakt_id'], infoLabel['playcount'] == 0), "refresh": True } }) menu.add( 'Browse Seasons', { "mode": "list_seasons", "trakt_id": show['ids']['trakt'], "ids": show['ids'] }) menu.add( 'Set Default View', { "mode": "set_default_view", "api": { "name": "kodi", "method": "set_default_view", "args": ("episode", ) } }) kodi.add_menu_item( { "mode": "search_streams", "media": "episode", "trakt_id": infoLabel['trakt_id'], "title": show['title'], "episode_title": infoLabel['title'], "year": show['year'], "season": infoLabel['season'], "episode": infoLabel['episode'], "ids": ids }, infoLabel, in_progress=inprogress, menu=menu, image=infoLabel['poster'])
def premiumize_folders(): import re from commoncore import premiumize from scrapecore.scrapers.common import BaseScraper, QUALITY id = kodi.arg('id', '') folders = premiumize.list_folder(id) kodi.add_menu_item( { "mode": "execute_api", "api": { "name": "premiumize", "method": "delete_folder", "refresh": True, "confirm": "Confirm Delete Folder(s)?", "message": "Delete all", "args": ('', ) } }, {'title': "*** Delete All Files and Folders ***"}, icon="delete_all_files.png") for f in folders['content']: menu = kodi.ContextMenu() if f['type'] == 'folder': menu.add( 'Delete Folder', { "mode": "execute_api", "api": { "name": "premiumize", "method": "delete_folder", "args": (f['id'], ), "refresh": True, "confirm": "Confirm Delete Folder(s)?", "message": f['name'] } }) kodi.add_menu_item({ 'mode': 'premiumize_folders', "id": f['id'] }, {'title': f['name']}, menu=menu, icon="definition/folder.png") elif f['type'] == 'file': menu.add( 'Delete Item', { "mode": "execute_api", "api": { "name": "premiumize", "method": "delete_item", "args": (f['id'], ), "refresh": True, "confirm": "Confirm Delete Folder(s)?", "message": f['name'] } }) display = "PREMIUMIZE | %s | %s" % (core.format_color( core.format_size(f['size']), 'blue'), f['name']) if re.search("\.(txt|text|htm|html|info|ifo)$", f['name'], re.IGNORECASE): kodi.add_menu_item( { "mode": "premiumize_direct", "name": f['name'], "type": "txt", "url": f['link'] }, { "title": f['name'], "display": display }, menu=menu, icon='void.png') else: if re.search("\.(avi|mpg|mpeg|vob|mkv|mp4)$", f['name'], re.IGNORECASE): quality = QUALITY.r_map[BaseScraper().test_quality( f['name'])] icon = "definition/%s.png" % quality.lower() else: icon = '' kodi.add_video_item( { "mode": "premiumize_direct", "name": f['name'], "type": "stream", "url": f['link'] }, { "title": f['name'], "display": display }, icon=icon, menu=menu) kodi.eod(DEFAULT_VIEWS.STREAMS)
def make_movie_directory(record): ids = record['movie']['ids'] if 'movie' in record else record['ids'] infoLabel = core.make_infolabel('movie', record, watched=watched) infoLabel['display'] = "%s (%s)" % (infoLabel['title'], infoLabel['year']) menu = kodi.ContextMenu() inprogress = in_progress('movie', infoLabel['trakt_id']) menu.add( 'Toggle Watched', { "mode": "toggle_watched", "api": { "name": "trakt", "method": "set_watched_state", "args": ("movie", infoLabel['trakt_id'], infoLabel['playcount'] == 0), "refresh": True } }) if kodi.mode in ['shows_watchlist', 'shows_custom_list']: menu.add( 'Remove From List', { "mode": "execute_api", "api": { "name": "trakt", "method": "remove_from_list", "args": ("movie", api['args'][0], infoLabel['trakt_id']), "refresh": True, "confirm": "Confirm Remove from List?", "message": api['args'][0] } }) else: menu.add( 'Add to List', { "mode": "execute_api", "api": { "name": "trakt", "method": "add_to_list", "args": ("movie", infoLabel['trakt_id']) } }) menu.add( 'Set Default View', { "mode": "set_default_view", "api": { "name": "kodi", "method": "set_default_view", "args": ("movie", ) } }) kodi.add_menu_item( { "mode": "search_streams", "media": "movie", "trakt_id": infoLabel['trakt_id'], "title": infoLabel['title'], "year": infoLabel["year"], "ids": ids }, infoLabel, in_progress=inprogress, menu=menu, image=infoLabel['poster'])