def format_results(self, results): if self.abort_event.is_set(): self.PB.close() return [] self.PB.update_subheading('Processing Results', '') self.PB.update_subheading('Processing Results', 'Formating Results...') regex_host = re.compile("\.\S+$") for r in results: service = r['service'].upper() host = format_color(regex_host.sub("", r['host'].upper()), 'darkred') #if r['cached']: host += " " + format_color('*', 'yellow') attribs = [service, host] if r['size']: r['size_sort'] = int(r['size']) else: r['size_sort'] = 0 if r['size']: attribs += [format_color(format_size(r['size']), 'blue')] if r['title']: attribs += [r['title']] display = ' | '.join(attribs) self.results[results.index(r)]['display'] = display kodi.sleep(250) self.PB.update_subheading('Processing Results', 'Removing Duplicates...') kodi.sleep(250) self.results = {v['raw_url']: v for v in results}.values() self.PB.update_subheading('Processing Results', 'Sorting...') kodi.sleep(250) results.sort(reverse=True, key=lambda k: (k['quality'], k['size_sort'])) self.PB.close() self.abort_event.set() return results
def format_results(results): for r in results: attribs = [r['host'].upper()] if r['size']: attribs += [format_color(format_size(r['size']), 'blue')] if 'premium' in r and r['premium']: attribs += [format_color(r['premium'], 'green')] if r['title']: attribs += [r['title']] display = ' | '.join(attribs) results[results.index(r)]['display'] = display return results
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') kodi.add_menu_item({ 'mode': 'toggle_scraper', "service": s['service'] }, {'title': title}, icon='') kodi.eod()
def search_filter(): from commoncore.core import format_color options = display =['None', 'Repository', 'Feed', 'Music Plugin', 'Video Plugin', 'Script'] filter = kodi.get_property('search.filter') if filter in options: index = options.index(filter) display[index] = format_color(display[index], 'yellow') else: display[0] = format_color(display[0], 'yellow') c = kodi.dialog_select("Filter Results by:", display) if c is not False: if c is 0: kodi.set_property('search.filter', '') else: kodi.set_property('search.filter', options[c])
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 search_filter(): from commoncore.core import format_color options = display =['None', 'Repository', 'Feed', 'Music Plugin', 'Video Plugin', 'Script'] filter = kodi.get_property('search.filter') if filter in options: index = options.index(filter) display[index] = format_color(display[index], 'yellow') else: display[0] = format_color(display[0], 'yellow') c = kodi.dialog_select("Filter Results by:", display) if c is not False: if c is 0: kodi.set_property('search.filter', '') else: kodi.set_property('search.filter', options[c])
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 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 movie_list(): from commoncore import trakt from coreplayback import in_progress api = kodi.arg('api', decode='json') if api['method'] == "search": query = core.get_query('Movies', api['args'][0]) api['args'] = (query, 'movie') results = core.execute_api(locals(), api) if not results: kodi.handel_error(kodi.get_name(), 'Not results found') watched = trakt.get_watched_history( 'movies') if trakt.is_authorized() else [] @kodi.map_directory(results['items']) 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']) if 'total_pages' in results and results['total_pages'] > 1 and results[ 'current_page'] < results['total_pages']: kodi.add_menu_item( { "mode": kodi.mode, "api": api, "page": results['current_page'] + 1 }, {"title": core.format_color("Next Page >>", 'green')}, icon="next_page.png") kodi.eod(DEFAULT_VIEWS.MOVIES)
def tv_list(): from commoncore import trakt api = kodi.arg('api', decode='json') if api['method'] == "search": query = core.get_query('Shows', api['args'][0]) api['args'] = (query, 'show') results = core.execute_api(locals(), api) if not results: kodi.handel_error(kodi.get_name(), 'Not results found') @kodi.map_directory(results['items']) 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']) if 'total_pages' in results and results['total_pages'] > 1 and results[ 'current_page'] < results['total_pages']: kodi.add_menu_item( { "mode": kodi.mode, "api": api, "page": results['current_page'] + 1 }, {"title": core.format_color("Next Page >>", 'green')}, icon="next_page.png") kodi.eod(DEFAULT_VIEWS.SHOWS)
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)