diff options
Diffstat (limited to 'pyload/plugins')
| -rw-r--r-- | pyload/plugins/accounts/FastixRu.py | 32 | ||||
| -rw-r--r-- | pyload/plugins/addons/FastixRu.py | 27 | ||||
| -rw-r--r-- | pyload/plugins/hoster/FastixRu.py | 66 | 
3 files changed, 125 insertions, 0 deletions
| diff --git a/pyload/plugins/accounts/FastixRu.py b/pyload/plugins/accounts/FastixRu.py new file mode 100644 index 000000000..3e1896e44 --- /dev/null +++ b/pyload/plugins/accounts/FastixRu.py @@ -0,0 +1,32 @@ +from module.plugins.Account import Account +from module.common.json_layer import json_loads + + +class FastixRu(Account): +    __name__ = "FastixRu" +    __version__ = "0.02" +    __type__ = "account" +    __description__ = """Fastix account plugin""" +    __author_name__ = ("Massimo, Rosamilia") +    __author_mail__ = ("max@spiritix.eu") + +    def loadAccountInfo(self, user, req): +        data = self.getAccountData(user) +        page = req.load("http://fastix.ru/api_v2/?apikey=%s&sub=getaccountdetails" % (data["api"])) +        page = json_loads(page) +        points = page['points'] +        kb = float(points) +        kb = kb * 1024 ** 2 / 1000 +        if points > 0: +            account_info = {"validuntil": -1, "trafficleft": kb} +        else: +            account_info = {"validuntil": None, "trafficleft": None, "premium": False} +        return account_info + +    def login(self, user, data, req): +        page = req.load("http://fastix.ru/api_v2/?sub=get_apikey&email=%s&password=%s" % (user, data["password"])) +        api = json_loads(page) +        api = api['apikey'] +        data["api"] = api +        if "error_code" in page: +            self.wrongPassword() diff --git a/pyload/plugins/addons/FastixRu.py b/pyload/plugins/addons/FastixRu.py new file mode 100644 index 000000000..25c9a1a67 --- /dev/null +++ b/pyload/plugins/addons/FastixRu.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- + +# should be working + +from module.network.RequestFactory import getURL +from module.plugins.internal.MultiHoster import MultiHoster +from module.common.json_layer import json_loads + + +class FastixRu(MultiHoster): +    __name__ = "FastixRu" +    __version__ = "0.02" +    __type__ = "hook" +    __config__ = [("activated", "bool", "Activated", "False"), +                  ("hosterListMode", "all;listed;unlisted", "Use for hosters (if supported)", "all"), +                  ("unloadFailing", "bool", "Revert to standard download if download fails", "False"), +                  ("interval", "int", "Reload interval in hours (0 to disable)", "24")] +    __description__ = """Fastix hook plugin""" +    __author_name__ = ("Massimo, Rosamilia") +    __author_mail__ = ("max@spiritix.eu") + +    def getHoster(self): +        page = getURL( +            "http://fastix.ru/api_v2/?apikey=5182964c3f8f9a7f0b00000a_kelmFB4n1IrnCDYuIFn2y&sub=allowed_sources") +        host_list = json_loads(page) +        host_list = host_list['allow'] +        return host_list diff --git a/pyload/plugins/hoster/FastixRu.py b/pyload/plugins/hoster/FastixRu.py new file mode 100644 index 000000000..4d3e7b93d --- /dev/null +++ b/pyload/plugins/hoster/FastixRu.py @@ -0,0 +1,66 @@ +# -*- coding: utf-8 -*- + +import re +from urllib import unquote +from random import randrange +from module.plugins.Hoster import Hoster +from module.common.json_layer import json_loads + + +class FastixRu(Hoster): +    __name__ = "FastixRu" +    __version__ = "0.02" +    __type__ = "hoster" +    __pattern__ = r"http?://.*fastix.ru\..*" +    __description__ = """Fastix hoster plugin""" +    __author_name__ = ("Massimo, Rosamilia") +    __author_mail__ = ("max@spiritix.eu") + +    def getFilename(self, url): +        try: +            name = unquote(url.rsplit("/", 1)[1]) +        except IndexError: +            name = "Unknown_Filename..." +        if name.endswith("..."):  # incomplete filename, append random stuff +            name += "%s.tmp" % randrange(100, 999) +        return name + +    def init(self): +        self.chunkLimit = 3 +        self.resumeDownload = True + +    def process(self, pyfile): +        if not self.account: +            self.logError(_("Please enter your %s account or deactivate this plugin") % "Fastix") +            self.fail("No Fastix account provided") + +        self.logDebug("Old URL: %s" % pyfile.url) +        if re.match(self.__pattern__, pyfile.url): +            new_url = pyfile.url +        else: +            api_key = self.account.getAccountData(self.user) +            api_key = api_key["api"] +            url = "http://fastix.ru/api_v2/?apikey=%s&sub=getdirectlink&link=%s" % (api_key, pyfile.url) +            page = self.load(url) +            data = json_loads(page) +            self.logDebug("Json data: %s" % str(data)) +            if "error\":true" in page: +                self.offline() +            else: +                new_url = data["downloadlink"] + +        self.logDebug("New URL: %s" % new_url) + +        if pyfile.name.startswith("http") or pyfile.name.startswith("Unknown"): +            #only use when name wasnt already set +            pyfile.name = self.getFilename(new_url) + +        self.download(new_url, disposition=True) + +        check = self.checkDownload({"error": "<title>An error occurred while processing your request</title>", +                                    "empty": re.compile(r"^$")}) + +        if check == "error": +            self.retry(reason="An error occurred while generating link.", wait_time=60) +        elif check == "empty": +            self.retry(reason="Downloaded File was empty.", wait_time=60) | 
