diff options
Diffstat (limited to 'module')
| -rw-r--r-- | module/plugins/accounts/Fastix.py | 36 | ||||
| -rw-r--r-- | module/plugins/hooks/Fastix.py | 28 | ||||
| -rw-r--r-- | module/plugins/hoster/Fastix.py | 70 | 
3 files changed, 134 insertions, 0 deletions
| diff --git a/module/plugins/accounts/Fastix.py b/module/plugins/accounts/Fastix.py new file mode 100644 index 000000000..c52961843 --- /dev/null +++ b/module/plugins/accounts/Fastix.py @@ -0,0 +1,36 @@ +from module.plugins.Account import Account
 +from module.common.json_layer import json_loads
 +
 +class Fastix(Account):
 +    __name__ = "Fastix"
 +    __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
 +        out_file = open("fastix_api.txt","w")
 +        out_file.write(api)
 +        out_file.close()
 +        if "error_code" in page:
 +            self.wrongPassword()
 +            
\ No newline at end of file diff --git a/module/plugins/hooks/Fastix.py b/module/plugins/hooks/Fastix.py new file mode 100644 index 000000000..2d2d09e38 --- /dev/null +++ b/module/plugins/hooks/Fastix.py @@ -0,0 +1,28 @@ +# -*- 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 Fastix(MultiHoster): +    __name__ = "Fastix" +    __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") +        list = json_loads(page) +        list = list['allow'] +        return list
\ No newline at end of file diff --git a/module/plugins/hoster/Fastix.py b/module/plugins/hoster/Fastix.py new file mode 100644 index 000000000..330ce78fc --- /dev/null +++ b/module/plugins/hoster/Fastix.py @@ -0,0 +1,70 @@ +# -*- 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
 +from module.utils import parseFileSize
 +
 +
 +class Fastix(Hoster):
 +    __name__ = "Fastix"
 +    __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.tries = 0
 +        self.chunkLimit = 3
 +        self.resumeDownload = True
 +
 +    def process(self, pyfile):
 +        if not self.account:
 +            self.logError("Please enter your Fastix account or deactivate this plugin")
 +            self.fail("No Fastix account provided")
 +
 +        self.log.debug("Fastix: Old URL: %s" % pyfile.url)
 +        if re.match(self.__pattern__, pyfile.url):
 +            new_url = pyfile.url
 +        else:
 +            in_file = open("fastix_api.txt","r")
 +            api_key = in_file.read()
 +            in_file.close()
 +            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("Fastix: 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)
 | 
