Example #1
0
 def __init__(self,
              source_dict,
              debrid_torrents,
              debrid_hosters,
              internal_scrapers,
              prescrape_sources,
              display_uncached_torrents,
              progress_dialog,
              disabled_ignored=False):
     self.scrape_provider = 'external'
     self.debrid_torrents, self.debrid_hosters = debrid_torrents, debrid_hosters
     self.source_dict, self.hostDict = source_dict, self.make_host_dict()
     self.internal_scrapers, self.prescrape_sources = internal_scrapers, prescrape_sources
     self.display_uncached_torrents = display_uncached_torrents
     self.progress_dialog, self.disabled_ignored = progress_dialog, disabled_ignored
     self.internal_activated, self.internal_prescraped = len(
         self.internal_scrapers) > 0, len(self.prescrape_sources) > 0
     self.processed_prescrape, self.scraping_started, self.threads_completed = False, False, False
     self.sources, self.final_sources, self.processed_internal_scrapers = [], [], []
     self.processed_internal_scrapers_append = self.processed_internal_scrapers.append
     self.sleep_time = display_sleep_time()
     self.pause_scrape = (self.sleep_time * 1.05) / 1000
     self.int_dialog_highlight, self.ext_dialog_highlight = get_setting(
         'int_dialog_highlight',
         'darkgoldenrod'), get_setting('ext_dialog_highlight', 'dodgerblue')
     self.finish_early = get_setting('search.finish.early') == 'true'
     self.int_total_format, self.ext_total_format = total_format % (
         self.int_dialog_highlight,
         '%s'), total_format % (self.ext_dialog_highlight, '%s')
     self.timeout = 60 if self.disabled_ignored else int(
         get_setting('scrapers.timeout.1', '60'))
     self.meta = json.loads(kodi_utils.get_property('fen_playback_meta'))
     self.background = self.meta.get('background', False)
     self.internal_sources_total = self.internal_sources_4K = self.internal_sources_1080p = self.internal_sources_720p = self.internal_sources_sd = 0
     self.sources_total = self.sources_4k = self.sources_1080p = self.sources_720p = self.sources_sd = 0
Example #2
0
 def get_memory_cache(self, db_type, id_type, media_id, current_time):
     result = None
     try:
         if db_type in ('movie', 'tvshow'):
             string = '%s_%s_%s' % (db_type, id_type, media_id)
         else:
             string = 'meta_season_%s' % str(media_id)
         try:
             cachedata = get_property(string.encode('utf-8'))
         except:
             cachedata = get_property(string)
         if cachedata:
             cachedata = eval(cachedata)
             if cachedata[0] > current_time:
                 result = cachedata[1]
     except:
         pass
     return result
Example #3
0
 def _process_internal_results(self):
     for i in self.internal_scrapers:
         win_property = kodi_utils.get_property('%s.internal_results' % i)
         if win_property in ('checked', '', None): continue
         try:
             sources = json.loads(win_property)
         except:
             continue
         kodi_utils.set_property('%s.internal_results' % i, 'checked')
         self._sources_quality_count(sources)
Example #4
0
def get_setting(setting_id, fallback=None):
    try:
        settings_dict = json.loads(get_property('fen_settings'))
    except:
        settings_dict = make_settings_dict()
    if settings_dict is None: settings_dict = get_setting_fallback(setting_id)
    value = settings_dict.get(setting_id, '')
    if fallback is None: return value
    if value == '': return fallback
    return value
Example #5
0
def open_MyAccounts(params):
    from myaccounts import openMASettings
    query = params.get('query', None)
    openMASettings(query)
    kodi_utils.sleep(100)
    while kodi_utils.get_visibility(
            'Window.IsVisible(addonsettings)') or kodi_utils.get_property(
                'myaccounts.active') == 'true':
        kodi_utils.sleep(250)
    kodi_utils.sleep(100)
    sync_MyAccounts()
    kodi_utils.sleep(100)
    open_settings('4.0')
Example #6
0
 def __init__(self, params):
     self.view = 'view.main'
     self.db_type = params.get('db_type', None)
     self.key = params.get('key', None)
     if self.db_type:
         self.window_id = 'FEN_%s_discover_params' % self.db_type.upper()
     else:
         self.window_id = ''
     try:
         self.discover_params = json.loads(
             kodi_utils.get_property(self.window_id))
     except:
         self.discover_params = {}
     self.base_str = '[B]%s:[/B]  [I]%s[/I]'
     self.include_base_str = '%s %s' % (ls(32188), '%s')
     self.exclude_base_str = '%s %s' % (ls(32189), '%s')
     self.heading_base = '%s %s - %s' % (ls(32036), ls(32451), '%s')
     self.tmdb_api = settings.tmdb_api_key()
Example #7
0
 def process_internal_results(self):
     if self.internal_prescraped and not self.processed_prescrape:
         self.process_quality_count(self.prescrape_sources, internal=True)
         self.processed_prescrape = True
     for i in self.internal_scrapers:
         win_property = kodi_utils.get_property('%s.internal_results' % i)
         if win_property in ('checked', '', None): continue
         try:
             internal_sources = json.loads(win_property)
         except:
             continue
         kodi_utils.set_property('%s.internal_results' % i, 'checked')
         self.processed_internal_scrapers_append(i)
         self.process_quality_count(internal_sources, internal=True)
     return [
         i for i in self.internal_scrapers
         if not i in self.processed_internal_scrapers
     ]
Example #8
0
def resolve_internal_sources(scrape_provider,
                             item_id,
                             url_dl,
                             direct_debrid_link=False):
    url = None
    try:
        if scrape_provider == 'furk':
            import json
            from indexers.furk import t_file_browser
            from modules.source_utils import seas_ep_query_list
            from modules.kodi_utils import get_property
            meta = json.loads(get_property('fen_playback_meta'))
            filtering_list = seas_ep_query_list(
                meta['season'],
                meta['episode']) if meta['vid_type'] == 'episode' else ''
            t_files = t_file_browser(item_id, filtering_list)
            url = t_files[0]['url_dl']
        elif scrape_provider == 'easynews':
            from indexers.easynews import resolve_easynews
            url = resolve_easynews({'url_dl': url_dl, 'play': 'false'})
        elif scrape_provider == 'rd_cloud':
            if direct_debrid_link: return url_dl
            from apis.real_debrid_api import RealDebridAPI
            url = RealDebridAPI().unrestrict_link(item_id)
        elif scrape_provider == 'pm_cloud':
            from apis.premiumize_api import PremiumizeAPI
            details = PremiumizeAPI().get_item_details(item_id)
            url = details['link']
            if url.startswith('/'): url = 'https' + url
        elif scrape_provider == 'ad_cloud':
            from apis.alldebrid_api import AllDebridAPI
            url = AllDebridAPI().unrestrict_link(item_id)
        elif scrape_provider == 'folders':
            if url_dl.endswith('.strm'):
                from modules.kodi_utils import open_file
                f = open_file(url_dl)
                url = f.read()
                f.close()
            else:
                url = url_dl
    except:
        pass
    return url
Example #9
0
def trakt_collection_lists(db_type, param1, param2):
    # param1 = the type of list to be returned (from 'new_page' param), param2 is currently not used
    limit = 20
    string_insert = 'movie' if db_type in ('movie', 'movies') else 'tvshow'
    window_property_name = 'fen_trakt_collection_%s' % string_insert
    try:
        data = json.loads(kodi_utils.get_property(window_property_name))
    except:
        data = trakt_fetch_collection_watchlist('collection', db_type)
    if param1 == 'recent':
        data.sort(key=lambda k: k['collected_at'], reverse=True)
    elif param1 == 'random':
        import random
        random.shuffle(data)
    data = data[:limit]
    for item in data:
        item['media_id'] = get_trakt_movie_id(
            item['media_ids']) if db_type == 'movies' else get_trakt_tvshow_id(
                item['media_ids'])
    return data, 1
Example #10
0
 def _confirm_threshold():
     nextep_threshold = nextep_settings['threshold']
     if nextep_threshold == 0: return True
     try:
         current_number = int(
             kodi_utils.get_property('fen_total_autoplays'))
     except:
         current_number = 1
     if current_number == nextep_threshold:
         current_number = 1
         kodi_utils.set_property('fen_total_autoplays', str(current_number))
         if open_window(('windows.next_episode', 'NextEpisode'),
                        'next_episode.xml',
                        meta=nextep_meta,
                        function='confirm'):
             return True
         else:
             kodi_utils.notification(32736, 1500)
             return False
     else:
         current_number += 1
         kodi_utils.set_property('fen_total_autoplays', str(current_number))
         return True
Example #11
0
 def _get_property(setting_id):
     return kodi_utils.get_property(
         'fen_%s' % setting_id) or get_setting(setting_id)
Example #12
0
 def _get_nextep_url():
     Sources().playback_prep(nextep_params)
     return kodi_utils.get_property('fen_nextep_url')
Example #13
0
def check_trakt_refresh():
    if kodi_utils.get_property('fen_refresh_trakt_info') == 'true':
        from apis.trakt_api import trakt_sync_activities
        trakt_sync_activities(force_update=True)
        kodi_utils.clear_property('fen_refresh_trakt_info')
Example #14
0
 def get_home_property(self, prop):
     return kodi_utils.get_property('fen.home_window.%s' % prop)
Example #15
0
def browse_audio_album(t_files, item_path=None):
    def build_list_object():
        try:
            cm = []
            url_params = {
                'mode': 'media_play',
                'url': item['url_dl'],
                'media_type': 'music'
            }
            url = build_url(url_params)
            track_name = clean_file_name(
                batch_replace(to_utf8(item['name']), formats)).upper()
            listitem = make_listitem()
            listitem.setLabel(track_name)
            down_file_params = {
                'mode': 'downloader',
                'name': item['name'],
                'url': item['url_dl'],
                'action': 'audio',
                'image': default_furk_icon
            }
            cm.append(
                (ls(32747), 'RunPlugin(%s)' % build_url(down_file_params)))
            listitem.addContextMenuItems(cm)
            listitem.setArt({
                'icon': default_furk_icon,
                'poster': default_furk_icon,
                'thumb': default_furk_icon,
                'fanart': fanart,
                'banner': default_furk_icon
            })
            kodi_utils.add_item(__handle__, url, listitem, True)
        except:
            pass

    from modules.utils import batch_replace
    __handle__ = int(argv[1])
    seperate = False
    if not t_files:
        seperate = True
        t_fs = kodi_utils.get_property('furk_t_files_json')
        t_files = json.loads(t_fs)
    t_files = [i for i in t_files if 'audio' in i['ct']]
    line = '%s[CR]%s[CR]%s'
    if seperate:
        if kodi_utils.confirm_dialog(text=32763,
                                     ok_label=32838,
                                     cancel_label=32764,
                                     top_space=True):
            for item in t_files:
                t_path = clean_file_name(item['path'])
                if t_path == item_path:
                    build_list_object()
            kodi_utils.set_content(__handle__, 'files')
            kodi_utils.end_directory(__handle__)
            kodi_utils.set_view_mode('view.premium')
        else:
            from modules.player import FenPlayer
            FenPlayer().playAudioAlbum(t_files, from_seperate=True)
    else:
        for item in t_files:
            build_list_object()
        kodi_utils.set_content(__handle__, 'files')
        kodi_utils.end_directory(__handle__)
        kodi_utils.set_view_mode('view.premium')