Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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()
Ejemplo n.º 4
0
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])
Ejemplo n.º 5
0
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)
Ejemplo n.º 6
0
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])
Ejemplo n.º 7
0
 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'])
Ejemplo n.º 8
0
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()
Ejemplo n.º 9
0
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)
Ejemplo n.º 10
0
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)
Ejemplo n.º 11
0
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)