# -*- coding: utf-8 -*-
import re

from module.network.RequestFactory import getURL
from module.plugins.Hook import Hook

from module.utils import removeChars

class RealdebridCom(Hook):
    __name__ = "RealdebridCom"
    __version__ = "0.4"
    __type__ = "hook"

    __config__ = [("activated", "bool", "Activated", "False"),
                  ("https", "bool", "Enable HTTPS", "False")]

    __description__ = """Real-Debrid.com hook plugin"""
    __author_name__ = ("Devirex, Hazzard")
    __author_mail__ = ("naibaf_11@yahoo.de")

    interval = 0
    hosters = []

    replacements = [("freakshare.net", "freakshare.com")]

    def getHostersCached(self):
        if not self.hosters:
            https = "https" if self.getConfig("https") else "http"
            page = getURL(https + "://real-debrid.com/api/hosters.php").replace("\"","").strip()

            self.hosters = [x.strip() for x in page.split(",") if x.strip()]

            for rep in self.replacements:
                if rep[0] in self.hosters:
                    self.hosters.remove(rep[0])
                    self.hosters.append(rep[1])

        return self.hosters

    def coreReady(self):
        pluginMap = {}
        for name in self.core.pluginManager.hosterPlugins.keys():
            pluginMap[name.lower()] = name

        supported = []
        new_supported = []

        for hoster in self.getHostersCached():
            name = removeChars(hoster.lower(), "-.")

            if pluginMap.has_key(name):
                supported.append(pluginMap[name])
            else:
                new_supported.append(hoster)

        module = self.core.pluginManager.getPlugin("RealdebridCom")
        klass = getattr(module, "RealdebridCom")
        #inject real debrid plugin
        self.logDebug("Overwritten Hosters: %s" % ", ".join(sorted(supported)))
        for hoster in supported:
            dict = self.core.pluginManager.hosterPlugins[hoster]
            dict["new_module"] = module
            dict["new_name"] = "RealdebridCom"

        self.logDebug("New Hosters: %s" % ", ".join(sorted(new_supported)))

        #create new regexp
        regexp = r".*(%s).*" % "|".join([klass.__pattern__] + [x.replace(".", "\\.") for x in new_supported])

        dict = self.core.pluginManager.hosterPlugins["RealdebridCom"]
        dict["pattern"] = regexp
        dict["re"] = re.compile(regexp)