示例#1
0
    def adjust_providers(self, status, package_disable=False):
        if status == 'disabled':
            action = 'enabled'
        if status == 'enabled':
            action = 'disabled'
        if len(self.known_providers) == 0:
            self.known_providers = database.get_providers()
        packages = list(set([provider['package'] for provider in self.known_providers]))
        selection = tools.showDialog.select("%s: %s Providers" %
                                            (tools.addonName, action[:-1].title()), packages)

        if selection == -1:
            return

        providers = [i for i in self.known_providers if i['package'] == packages[selection] and i['status'] == status]

        if package_disable is False:
            display_list = ["%s - %s" % (tools.colorString(i['provider_name'].upper()), i['provider_type'].title())
                            for i in providers if i['status'] == status]

            selection = tools.showDialog.multiselect("%s: %s Providers" %
                                                     (tools.addonName, action[:-1].title()), display_list)

            if selection is None:
                return

            for i in selection:
                provider = providers[i]
                database.add_provider(provider['provider_name'], provider['package'], action, self.language,
                                   provider['provider_type'])

        elif package_disable is True:
            for i in providers:
                database.add_provider(i['provider_name'], i['package'], action, self.language, i['provider_type'])
    def flip_mutliple_providers(self,
                                status,
                                provider_type=None,
                                package_name=None):

        tools.showBusyDialog()
        providers = self.providers

        if package_name:
            providers = [i for i in providers if i['package'] == package_name]

        if provider_type:
            providers = [
                i for i in providers if i['provider_type'] == provider_type
            ]

        for i in providers:
            self.providers_class.flip_provider_status(i['package'],
                                                      i['provider_name'],
                                                      status)

        self.providers = database.get_providers()
        self.fill_providers(self.package_list.getSelectedItem().getLabel())

        tools.closeBusyDialog()
    def flip_provider_status(self):
        provider_item = self.provider_list.getSelectedItem()
        new_status = self.providers_class.flip_provider_status(
            provider_item.getProperty('package'), provider_item.getLabel())

        provider_item.setProperty('status', new_status)
        self.providers = database.get_providers()
    def update_known_providers(self):
        provider_types = ['torrent', 'hosters']
        sys.path.append(tools.dataPath)
        import providers

        providers = providers.get_all(self.language)

        if len(self.pre_update_collection) > 0:
            pack_name = self.pre_update_collection[0]['package']

            hosters = providers[1]
            torrent = providers[0]

            for provider_type in range(len(provider_types)):
                for i in providers[provider_type]:
                    provider_name = i[1]
                    old_setting = [x for x in self.pre_update_collection if
                                   x['provider_type'] == provider_types[provider_type] and
                                   x['package'] == pack_name and
                                   x['provider_name'] == provider_name]

                    if len(old_setting) > 0:
                        old_setting = old_setting[0]
                        database.add_provider(old_setting['provider_name'],
                                              old_setting['package'],
                                              old_setting['status'],
                                              old_setting['country'],
                                              old_setting['provider_type'])
                    else:
                        database.add_provider(i[1], i[2], 'enabled', self.language, provider_types[provider_type])

        else:
            if self.known_providers is None or len(self.known_providers) == 0:

                for provider in providers[0]:
                    tools.log('Adding Provider %s' % provider[1])
                    database.add_provider(provider[1], provider[2], 'enabled', self.language, 'torrent')
                for provider in providers[1]:
                    tools.log('Adding Provider %s' % provider[1])
                    database.add_provider(provider[1], provider[2], 'enabled', self.language, 'hoster')

            else:

                for i in range(2):
                    for provider in providers[i]:
                        existing = [existing for existing in self.known_providers
                                    if provider[2] == existing['package']\
                                    and provider[1] == existing['provider_name']\
                                    and existing['provider_type'] == provider_types[i]]


                        if len(existing) == 0:
                            tools.log('Adding Provider %s' % provider[1])
                            database.add_provider(provider[1], provider[2], 'enabled', self.language,
                                                  provider_types[i])
                            check = False


        self.known_providers = database.get_providers()
示例#5
0
 def __init__(self):
     # self.language = tools.getSetting('general.language')
     self.language = 'en'
     tools.progressDialog.create(tools.addonName, 'Please Wait, Building Provider List')
     self.known_providers = database.get_providers()
     tools.progressDialog.close()
     self.update_known_providers()
     self.providers_path = os.path.join(tools.dataPath, 'providers')
     self.modules_path = os.path.join(tools.dataPath, 'providerModules')
示例#6
0
    def adjust_providers(self, status, package_disable=False):

        if status == 'disabled':
            action = 'enabled'
        if status == 'enabled':
            action = 'disabled'
        if len(self.known_providers) == 0:
            self.known_providers = database.get_providers()

        known_packages = [i for i in self.known_packages]

        package_display = list(
            set([
                '%s - %s' % (pack['pack_name'], pack['version'])
                for pack in known_packages
            ]))

        if len(known_packages) == 0:
            tools.showDialog.ok(tools.addonName, tools.lang(32074))
            return

        selection = tools.showDialog.select(
            "%s: %s Providers" % (tools.addonName, action[:-1].title()),
            package_display)

        if selection == -1:
            return

        providers = [
            i for i in self.known_providers
            if i['package'] == known_packages[selection]['pack_name']
            and i['status'] == status and i['country'] == self.language
        ]

        if package_disable is False:
            display_list = [
                "%s - %s" % (tools.colorString(
                    i['provider_name'].upper()), i['provider_type'].title())
                for i in providers if i['status'] == status
            ]

            selection = tools.showDialog.multiselect(
                "%s: %s Providers" % (tools.addonName, action[:-1].title()),
                display_list)

            if selection is None:
                return

            for i in selection:
                provider = providers[i]
                database.adjust_provider_status(provider['provider_name'],
                                                provider['package'], action)

        elif package_disable is True:
            for i in providers:
                database.adjust_provider_status(i['provider_name'],
                                                i['package'], action)
 def __init__(self):
     self.deploy_init()
     self.pre_update_collection = []
     self.language = 'en'
     self.known_providers = database.get_providers()
     self.known_packages = database.get_provider_packages()
     self.update_known_providers()
     self.providers_path = os.path.join(tools.dataPath, 'providers')
     self.modules_path = os.path.join(tools.dataPath, 'providerModules')
     self.meta_path = os.path.join(tools.dataPath, 'providerMeta')
示例#8
0
 def __init__(self):
     self.deploy_init()
     self.pre_update_collection = []
     # self.language = tools.getSetting('general.language')
     self.language = 'en'
     #tools.progressDialog.create(tools.addonName, 'Please Wait, Building Provider List')
     self.known_providers = database.get_providers()
     self.known_packages = database.get_provider_packages()
     self.update_known_providers()
     #tools.progressDialog.close()
     self.providers_path = os.path.join(tools.dataPath, 'providers')
     self.modules_path = os.path.join(tools.dataPath, 'providerModules')
     self.meta_path = os.path.join(tools.dataPath, 'providerMeta')
示例#9
0
    def update_known_providers(self):
        provider_types = ['torrent', 'hosters']
        sys.path.append(tools.dataPath)
        import providers

        all_providers = providers.get_all(self.language)
        all_providers = {
            'torrent': all_providers[0],
            'hosters': all_providers[1]
        }

        for provider_type in provider_types:

            for provider in all_providers[provider_type]:
                database.add_provider(provider[1], provider[2], 'enabled',
                                      self.language, provider_type)

        self.known_providers = database.get_providers()
示例#10
0
    def update_known_providers(self):
        sys.path.append(tools.dataPath)
        import providers
        providers = providers.get_all(self.language)

        if self.known_providers is None or len(self.known_providers) == 0:
            for provider in providers[0]:
                database.add_provider(provider[1], provider[2], 'enabled', self.language, 'torrent')
            for provider in providers[1]:
                database.add_provider(provider[1], provider[2], 'enabled', self.language, 'hoster')
            return

        for provider in providers[0]:
            check = False
            for kp in self.known_providers:
                if kp['country'] != self.language:
                    continue
                if kp['provider_type'] != 'torrent':
                    continue
                if provider[2] == kp['package'] and provider[1] == kp['provider_name']:
                    check = True
                    pass
            if check is False:
                tools.log('Adding Provider %s' % provider[1])
                database.add_provider(provider[1], provider[2], 'enabled', self.language, 'torrent')
                check = False

        for provider in providers[1]:
            check = False
            for kp in self.known_providers:
                if kp['country'] != self.language:
                    continue
                if kp['provider_type'] != 'hoster':
                    continue
                if provider[2] == kp['package'] and provider[1] == kp['provider_name']:
                    check = True
            if check is False:
                tools.log('Adding Provider %s' % provider[1])
                database.add_provider(provider[1], provider[2], 'enabled', self.language, 'hoster')
                check = False

        self.known_providers = database.get_providers()
示例#11
0
    def flip_provider_status(self,
                             package_name,
                             provider_name,
                             status_overide=None):

        current_status = [
            i for i in database.get_providers() if i['package'] == package_name
            and i['provider_name'] == provider_name
        ][0]['status']

        if not status_overide:
            if current_status == 'enabled':
                database.adjust_provider_status(provider_name, package_name,
                                                'disabled')
                return 'disabled'
            else:
                database.adjust_provider_status(provider_name, package_name,
                                                'enabled')
                return 'enabled'

        else:
            database.adjust_provider_status(provider_name, package_name,
                                            status_overide)
            return status_overide
示例#12
0
    def update_known_providers(self):
        provider_types = ['torrent', 'hosters']
        sys.path.append(tools.dataPath)
        import providers

        providers = providers.get_all(self.language)

        if len(self.pre_update_collection) > 0:
            pack_name = self.pre_update_collection[0]['package']

            hosters = providers[1]
            torrent = providers[0]

            for provider_type in range(len(provider_types)):
                for i in providers[provider_type]:
                    provider_name = i[1]

                    # We need to check that the provider file exists after updating
                    # For some reason lsdir still shows files as existing after the module removes them.
                    path = os.path.join(self.providers_path, pack_name,
                                        self.language,
                                        provider_types[provider_type],
                                        provider_name + ".py")

                    if not os.path.exists(path):
                        continue

                    old_setting = [
                        x for x in self.pre_update_collection
                        if x['provider_type'] == provider_types[provider_type]
                        and x['package'] == pack_name
                        and x['provider_name'] == provider_name
                    ]

                    if len(old_setting) > 0:
                        old_setting = old_setting[0]
                        database.add_provider(old_setting['provider_name'],
                                              old_setting['package'],
                                              old_setting['status'],
                                              old_setting['country'],
                                              old_setting['provider_type'])
                    else:
                        database.add_provider(i[1], i[2], 'enabled',
                                              self.language,
                                              provider_types[provider_type])

        else:
            if self.known_providers is None or len(self.known_providers) == 0:

                for provider in providers[0]:
                    tools.log('Adding Provider %s' % provider[1])
                    database.add_provider(provider[1], provider[2], 'enabled',
                                          self.language, 'torrent')
                for provider in providers[1]:
                    tools.log('Adding Provider %s' % provider[1])
                    database.add_provider(provider[1], provider[2], 'enabled',
                                          self.language, 'hoster')

            else:

                for i in range(2):
                    for provider in providers[i]:
                        existing = [existing for existing in self.known_providers
                                    if provider[2] == existing['package']\
                                    and provider[1] == existing['provider_name']\
                                    and existing['provider_type'] == provider_types[i]]

                        if len(existing) == 0:
                            tools.log('Adding Provider %s' % provider[1])
                            database.add_provider(provider[1], provider[2],
                                                  'enabled', self.language,
                                                  provider_types[i])
                            check = False

        self.known_providers = database.get_providers()
示例#13
0
    def install_zip(self, zip_file, silent=False):
        file_list = zip_file.namelist()

        for i in file_list:
            if i.startswith('/') or '..' in i:
                raise Exception

        meta_file = None
        for i in file_list:
            if i.startswith('meta.json'):
                meta_file = i

        if meta_file is not None:
            meta = zip_file.open(meta_file)
            meta = meta.readlines()
            meta = ''.join(meta)
            meta = meta.replace(' ', '').replace('\r', '').replace('\n', '')
            meta = json.loads(meta)
            requirements = ['author', 'name', 'version']
            for i in requirements:
                if i not in meta:
                    if not silent:
                        self.failed_prompt()
                    tools.log(
                        'Source pack is malformed, please check and correct issue in the meta file'
                    )
                    return
            author = meta['author']
            version = meta['version']
            pack_name = meta['name']
            remote_meta = meta.get('remote_meta', '')
        else:
            if not silent:
                self.failed_prompt()
            tools.log(
                'Source pack is malformed, please check and correct issue in the meta file'
            )
            import traceback
            traceback.print_exc()
            raise Exception

        if remote_meta == '':
            tools.showDialog.ok(tools.addonName,
                                tools.lang(33016).encode('utf-8'))

        line1 = tools.colorString(tools.lang(33001).encode(
            'utf-8')) + " %s - v%s" % (pack_name, version)
        line2 = tools.colorString(
            tools.lang(33002).encode('utf-8')) + "%s" % author
        line3 = tools.lang(33003).encode('utf-8')

        if not silent:
            accept = tools.showDialog.yesno(
                tools.addonName + " - %s" % tools.lang(33004).encode('utf-8'),
                line1, line2, line3,
                tools.lang(33005).encode('utf-8'),
                tools.lang(33006).encode('utf-8'))
            if accept == 0:
                return

        self.pre_update_collection = [
            i for i in database.get_providers() if i['package'] == pack_name
        ]

        database.remove_package_providers(pack_name)

        folders = ['providerModules/', 'providers/']
        meta_output_location = os.path.join(tools.dataPath, 'providerMeta',
                                            '%s.json' % pack_name)

        if os.path.isfile(meta_output_location):
            try:
                os.rename(meta_output_location,
                          '%s.temp' % meta_output_location)
            except Exception as e:
                self.failure_cleanup(meta_output_location, pack_name, folders)
                tools.log('Failed to create temporary meta file')
                if not silent:
                    tools.showDialog.ok(tools.addonName,
                                        tools.lang(33007).encode('utf-8'))
                return

            try:
                self.output_meta(meta)
            except:
                self.failure_cleanup(meta_output_location, pack_name, folders)
                tools.log('Failed to create new meta file')
                if not silent:
                    self.failed_prompt()
                return

        else:
            self.output_meta(meta)

        if not silent:
            install_progress = tools.progressDialog
            install_progress.create(
                tools.addonName,
                '%s - %s' % (pack_name, tools.lang(33008).encode('utf-8')),
                tools.lang(33009).encode('utf-8'))
            install_progress.update(-1)

        try:
            for folder in folders:
                try:
                    folder_path = os.path.join(tools.dataPath,
                                               folder.strip('/'), pack_name)
                    if os.path.exists(folder_path):
                        os.rename(folder_path, '%s.temp' % folder_path)
                    for file in file_list:
                        if file.startswith(folder):
                            zip_file.extract(file, tools.dataPath)

                except:
                    tools.log('Failed to extract to folder - %s' % folder)
                    import traceback
                    traceback.print_exc()
                    self.failure_cleanup(meta_output_location, pack_name,
                                         folders)
                    if not silent:
                        self.failed_prompt()
                    return
            try:
                zip_file.close()
            except:
                pass

            if not silent:
                install_progress.close()
            if not silent:
                tools.showDialog.ok(
                    tools.addonName,
                    '%s - %s' % (tools.lang(33010).encode('utf-8'), pack_name))
        except:
            import traceback
            traceback.print_exc()
            if not silent:
                install_progress.close()
                tools.showDialog.ok(
                    tools.addonName,
                    '%s - %s' % (tools.lang(33012).encode('utf-8'), pack_name),
                    tools.lang(33011).encode('utf-8'))
            return

        if os.path.exists('%s.temp' % meta_output_location):
            os.remove('%s.temp' % meta_output_location)
        for folder in folders:
            folder_path = os.path.join(tools.dataPath, folder.strip('/'),
                                       pack_name)
            if os.path.exists('%s.temp' % folder_path):
                shutil.rmtree('%s.temp' % folder_path)

        tools.log('Refreshing provider database ')
        database.add_provider_package(pack_name, author, remote_meta, version)

        self.update_known_providers()
        return True
class CustomProviders(tools.dialogWindow):

    installed_providers = database.get_providers()
    installed_packages = database.get_provider_packages()
    provider_packages = list(
        set(['%s' % pack['pack_name'] for pack in installed_packages]))
    package_display_strings = list(
        set([
            '%s - %s' % (pack['pack_name'], pack['version'])
            for pack in installed_packages
        ]))

    def __init__(self):

        # Window Base
        texture_path = os.path.join(tools.IMAGES_PATH, 'texture.png')
        self.texture = tools.imageControl(0, 0, 1280, 720, texture_path)
        self.addControl(self.texture)

        self.background = tools.imageControl(0, 0, 1280, 720, '')
        background_diffuse = '0x1FFFFFFF'
        self.background.setColorDiffuse(background_diffuse)
        self.addControl(self.background)

        #################
        # Window Items  #
        #################

        # Package Display
        self.package_list_control = tools.listControl(
            20, 130, 480, 640, 'font12', '0xFFFFFFFF', '',
            os.path.join(tools.IMAGES_PATH, 'highlight11.png'), '', 0, 0, 0, 0,
            30)
        self.addControl(self.package_list_control)
        self.package_list_control.addItems(self.package_display_strings)

        # Package Providers Display
        self.provider_list_control = tools.listControl(
            20, 130, 480, 640, 'font12', '0xFFFFFFFF', '',
            os.path.join(tools.IMAGES_PATH, 'highlight11.png'), '', 0, 0, 0, 0,
            30)
        self.addControl(self.provider_list_control)
        self.providers_display = []
        self.package_title = ''
        self.providers_title = ''
        self.setFocus(self.package_list_control)
        pass

    def onAction(self, action):

        id = action.getId()
        if id == 92 or id == 10:
            self.close()
            self.close()

        if id == 7:
            self.close()

        if id == 0:
            pass

    def doModal(self):
        tools.kodiGui.WindowDialog.doModal(self)
        self.clearProperties()
        return

    def onControl(self, control):
        if self.source_list.getId() == control.getId():
            self.close()

    def disable_provider(self):
        pass

    def enable_provider(self):
        pass
示例#15
0
 def poll_database(self):
     self.known_providers = database.get_providers()
     self.known_packages = database.get_provider_packages()
示例#16
0
    def install_zip(self, zip_file, silent=False):
        file_list = zip_file.namelist()

        for i in file_list:
            if i.startswith('/') or '..' in i:
                raise Exception

        zip_root_dir = ''
        if file_list[0].endswith('/'):
            zip_root_dir = file_list[0]
            for i, v in enumerate(file_list):
                file_list[i] = file_list[i].replace(zip_root_dir, '')
            file_list = file_list[1:]

        meta_file = None
        for i in file_list:
            if i.startswith('meta.json'):
                meta_file = i
                break

        if meta_file is not None:
            meta = zip_file.open(zip_root_dir + meta_file)
            meta = meta.readlines()
            meta = ''.join([
                i if not isinstance(value, bytes) else value.decode('utf-8')
                for value in meta
            ])
            meta = meta.replace(' ', '').replace('\r', '').replace('\n', '')
            meta = json.loads(meta)
            requirements = ['author', 'name', 'version']
            for i in requirements:
                if i not in meta:
                    if not silent:
                        self.failed_prompt()
                    tools.log(
                        'Source pack is malformed, please check and correct issue in the meta file'
                    )
                    return
            author = meta['author']
            version = meta['version']
            pack_name = meta['name']
            remote_meta = meta.get('remote_meta', '')
        else:
            if not silent:
                self.failed_prompt()
            tools.log(
                'Source pack is malformed, please check and correct issue in the meta file'
            )
            import traceback
            traceback.print_exc()
            raise Exception

        if remote_meta == '':
            tools.showDialog.ok(tools.addonName, tools.lang(33016))

        line1 = tools.colorString(
            tools.lang(33001)) + " %s - v%s" % (pack_name, version)
        line2 = tools.colorString(tools.lang(33002)) + "%s" % author
        line3 = tools.lang(33003)

        if not silent:
            accept = tools.showDialog.yesno(
                tools.addonName + " - %s" % tools.lang(33004), line1, line2,
                line3, tools.lang(33005), tools.lang(33006))
            if accept == 0:
                return

        self.pre_update_collection = [
            i for i in database.get_providers() if i['package'] == pack_name
        ]

        folders = ['providerModules/', 'providers/']
        meta_output_location = os.path.join(tools.dataPath, 'providerMeta',
                                            '%s.json' % pack_name)

        if os.path.isfile(meta_output_location):
            if os.path.isfile(meta_output_location + '.temp'):
                os.remove(meta_output_location + '.temp')
            try:
                os.rename(meta_output_location,
                          '%s.temp' % meta_output_location)
            except Exception as e:
                self.failure_cleanup(meta_output_location, pack_name, folders)
                tools.log('Failed to create temporary meta file')
                if not silent:
                    tools.showDialog.ok(tools.addonName, tools.lang(33007))
                return

            try:
                self.output_meta(meta)
            except:
                self.failure_cleanup(meta_output_location, pack_name, folders)
                tools.log('Failed to create new meta file')
                if not silent:
                    self.failed_prompt()
                return

        else:
            self.output_meta(meta)

        if not silent:
            install_progress = tools.progressDialog
            install_progress.create(tools.addonName,
                                    '%s - %s' % (pack_name, tools.lang(33008)),
                                    tools.lang(33009))
            install_progress.update(-1)
        try:
            for folder in folders:
                try:
                    folder_path = os.path.join(tools.dataPath,
                                               folder.strip('/'), pack_name)
                    if os.path.exists(folder_path):
                        if os.path.exists('%s.temp' % folder_path):
                            shutil.rmtree('%s.temp' % folder_path)
                        os.rename(folder_path, '%s.temp' % folder_path)
                    for file in file_list:
                        if file == 'providers/__init__.py':
                            continue
                        if file.startswith(folder):
                            memberpath = os.path.join(zip_root_dir, file)
                            targetpath = os.path.join(tools.dataPath, file)

                            upperdirs = os.path.dirname(targetpath)
                            if upperdirs and not os.path.exists(upperdirs):
                                os.makedirs(upperdirs)

                            if memberpath[-1] == '/':
                                if not os.path.isdir(targetpath):
                                    os.mkdir(targetpath)
                                continue

                            with zip_file.open(memberpath) as source, \
                                    open(targetpath, "wb") as target:
                                shutil.copyfileobj(source, target)

                except:
                    tools.log('Failed to extract to folder - %s' % folder)
                    import traceback
                    traceback.print_exc()
                    self.failure_cleanup(meta_output_location, pack_name,
                                         folders)
                    if not silent:
                        self.failed_prompt()
                    return
            try:
                zip_file.close()
            except:
                pass

            if not silent:
                try:
                    install_progress.close()
                except:
                    pass
            if not silent:
                tools.showDialog.ok(tools.addonName,
                                    '%s - %s' % (tools.lang(33010), pack_name))
        except:
            import traceback
            traceback.print_exc()
            if not silent:
                try:
                    install_progress.close()
                    tools.showDialog.ok(
                        tools.addonName,
                        '%s - %s' % (tools.lang(33012), pack_name),
                        tools.lang(33011))
                except:
                    pass
            return

        if os.path.exists('%s.temp' % meta_output_location):
            os.remove('%s.temp' % meta_output_location)
        for folder in folders:
            folder_path = os.path.join(tools.dataPath, folder.strip('/'),
                                       pack_name)
            if os.path.exists('%s.temp' % folder_path):
                shutil.rmtree('%s.temp' % folder_path)

        tools.log('Refreshing provider database ')
        database.add_provider_package(pack_name, author, remote_meta, version)

        tools.execute(
            'RunPlugin("plugin://plugin.video.%s/?action=refreshProviders")' %
            tools.addonName.lower())
        return True
    def update_known_providers(self):
        provider_types = ['torrent', 'hosters']
        sys.path.append(tools.dataPath)
        import providers

        all_providers = providers.get_all(self.language)
        all_providers = {'torrent': all_providers[0],
                         'hosters': all_providers[1]}

        database_providers = database.get_providers()

        for provider_type in provider_types:

            for provider in all_providers[provider_type]:
                database.add_provider(provider[1], provider[2], 'enabled', self.language,
                                      provider_type)

        # if len(self.pre_update_collection) > 0:
        #     pack_name = self.pre_update_collection[0]['package']
        #
        #     for provider_type in range(len(provider_types)):
        #         for i in providers[provider_type]:
        #             provider_name = i[1]
        #             tools.log(provider_name)
        #
        #             # We need to check that the provider file exists after updating
        #             # For some reason lsdir still shows files as existing after the module removes them.
        #             path = os.path.join(self.providers_path, pack_name, self.language,
        #                                 provider_types[provider_type], provider_name + ".py")
        #
        #             if not os.path.exists(path):
        #                 continue
        #
        #             old_setting = [x for x in self.pre_update_collection if
        #                            x['provider_type'] == provider_types[provider_type] and
        #                            x['package'] == pack_name and
        #                            x['provider_name'] == provider_name]
        #
        #             if len(old_setting) > 0:
        #                 old_setting = old_setting[0]
        #                 database.add_provider(old_setting['provider_name'],
        #                                       old_setting['package'],
        #                                       old_setting['status'],
        #                                       old_setting['country'],
        #                                       old_setting['provider_type'])
        #             else:
        #                 database.add_provider(i[1], i[2], 'enabled', self.language, provider_types[provider_type])
        #
        # else:
        #     if self.known_providers is None or len(self.known_providers) == 0:
        #
        #         for provider in providers[0]:
        #             tools.log('Adding Provider %s' % provider[1])
        #             database.add_provider(provider[1], provider[2], 'enabled', self.language, 'torrent')
        #         for provider in providers[1]:
        #             tools.log('Adding Provider %s' % provider[1])
        #             database.add_provider(provider[1], provider[2], 'enabled', self.language, 'hoster')
        #
        #     else:
        #
        #         for i in range(2):
        #             for provider in providers[i]:
        #                 existing = [existing for existing in self.known_providers
        #                             if provider[2] == existing['package']\
        #                             and provider[1] == existing['provider_name']\
        #                             and existing['provider_type'] == provider_types[i]]
        #
        #
        #                 if len(existing) == 0:
        #                     tools.log('Adding Provider %s' % provider[1])
        #                     database.add_provider(provider[1], provider[2], 'enabled', self.language,
        #                                           provider_types[i])
        #

        self.known_providers = database.get_providers()