diff options
Diffstat (limited to 'module')
| -rw-r--r-- | module/plugins/accounts/BayfilesCom.py | 46 | ||||
| -rw-r--r-- | module/plugins/accounts/HellshareCz.py | 10 | ||||
| -rw-r--r-- | module/plugins/hoster/BayfilesCom.py | 19 | ||||
| -rw-r--r-- | module/plugins/hoster/HellshareCz.py | 11 | 
4 files changed, 69 insertions, 17 deletions
| diff --git a/module/plugins/accounts/BayfilesCom.py b/module/plugins/accounts/BayfilesCom.py new file mode 100644 index 000000000..803e602cb --- /dev/null +++ b/module/plugins/accounts/BayfilesCom.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- + +""" +    This program is free software; you can redistribute it and/or modify +    it under the terms of the GNU General Public License as published by +    the Free Software Foundation; either version 3 of the License, +    or (at your option) any later version. + +    This program is distributed in the hope that it will be useful, +    but WITHOUT ANY WARRANTY; without even the implied warranty of +    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +    See the GNU General Public License for more details. + +    You should have received a copy of the GNU General Public License +    along with this program; if not, see <http://www.gnu.org/licenses/>. +     +    @author: zoidberg +""" + +from module.plugins.Account import Account +from module.common.json_layer import json_loads +import re +from time import mktime, strptime + +class BayfilesCom(Account): +    __name__ = "BayfilesCom" +    __version__ = "0.01" +    __type__ = "account" +    __description__ = """bayfiles.com account plugin""" +    __author_name__ = ("zoidberg") +    __author_mail__ = ("zoidberg@mujmail.cz") + +    def loadAccountInfo(self, user, req): +        response = json_loads(req.load("http://api.bayfiles.com/v1/account/info")) +        self.logDebug(response) + +        return {"premium": bool(response['premium']), \ +                "trafficleft": -1, \ +                "validuntil": response['expires'] if response['expires'] > 0 else -1} + +    def login(self, user, data, req): +        response = json_loads(req.load("http://api.bayfiles.com/v1/account/login/%s/%s" % (user, data["password"]))) +        self.logDebug(response) +        if response["error"]: +            self.logError(response["error"]) +            self.wrongPassword()
\ No newline at end of file diff --git a/module/plugins/accounts/HellshareCz.py b/module/plugins/accounts/HellshareCz.py index fc44e9307..8ed134f59 100644 --- a/module/plugins/accounts/HellshareCz.py +++ b/module/plugins/accounts/HellshareCz.py @@ -22,7 +22,7 @@ import re  class HellshareCz(Account):      __name__ = "HellshareCz" -    __version__ = "0.11" +    __version__ = "0.12"      __type__ = "account"      __description__ = """hellshare.cz account plugin"""      __author_name__ = ("zoidberg") @@ -37,17 +37,19 @@ class HellshareCz(Account):          found = re.search(self.CREDIT_LEFT_PATTERN, html)          if found is None:              credits = 0 +            premium = False          else:              credits = int(found.group(1)) * 1024 +            premium = True -        return {"validuntil": -1, "trafficleft": credits} +        return {"validuntil": -1, "trafficleft": credits, "premium": premium}      def login(self, user, data, req): -          html = req.load('http://www.hellshare.com/login?do=loginForm-submit', post={                  "login": "Log in",                  "password": data["password"], -                "username": user +                "username": user, +                "perm_login": "on"                  })          if "<p>You input a wrong user name or wrong password</p>" in html: diff --git a/module/plugins/hoster/BayfilesCom.py b/module/plugins/hoster/BayfilesCom.py index c771f28c6..e2c74e5c0 100644 --- a/module/plugins/hoster/BayfilesCom.py +++ b/module/plugins/hoster/BayfilesCom.py @@ -26,7 +26,7 @@ class BayfilesCom(SimpleHoster):      __name__ = "BayfilesCom"      __type__ = "hoster"      __pattern__ = r"http://(?:www\.)?bayfiles\.com/file/\w+/\w+/.*" -    __version__ = "0.01" +    __version__ = "0.02"      __description__ = """Bayfiles.com plugin - free only"""      __author_name__ = ("zoidberg")      __author_mail__ = ("zoidberg@mujmail.cz") @@ -37,7 +37,8 @@ class BayfilesCom(SimpleHoster):      WAIT_PATTERN = r'>Your IP [0-9.]* has recently downloaded a file\. Upgrade to premium or wait (\d+) minutes\.<'      VARS_PATTERN = r'var vfid = (\d+);\s*var delay = (\d+);'      LINK_PATTERN = r"javascript:window.location.href = '([^']+)';" - +    PREMIUM_LINK_PATTERN = r'(?:<a class="highlighted-btn" href="|(?=http://s\d+\.baycdn\.com/dl/))(.*?)"' +          def handleFree(self):          found = re.search(self.WAIT_PATTERN, self.html)          if found: @@ -69,9 +70,15 @@ class BayfilesCom(SimpleHoster):          # Get final link and download                  found = re.search(self.LINK_PATTERN, self.html)          if not found: self.parseError("Free link") -        url = found.group(1) -        self.logDebug("URL: " + url) - -        self.download(url) +        self.startDownload(found.group(1)) +         +    def handlePremium(self):    +        found = re.search(self.PREMIUM_LINK_PATTERN, self.html) +        if not found: self.parseError("Premium link") +        self.startDownload(found.group(1)) +             +    def startDownload(self, url): +        self.logDebug("%s URL: %s" % ("Premium" if self.premium else "Free", url)) +        self.download(url)          getInfo = create_getInfo(BayfilesCom)
\ No newline at end of file diff --git a/module/plugins/hoster/HellshareCz.py b/module/plugins/hoster/HellshareCz.py index cc8341f8e..0add79ed9 100644 --- a/module/plugins/hoster/HellshareCz.py +++ b/module/plugins/hoster/HellshareCz.py @@ -26,7 +26,7 @@ class HellshareCz(SimpleHoster):      __name__ = "HellshareCz"      __type__ = "hoster"      __pattern__ = r"(http://(?:.*\.)*hellshare\.(?:cz|com|sk|hu)/[^?]*/\d+).*" -    __version__ = "0.76" +    __version__ = "0.77"      __description__ = """Hellshare.cz"""      __author_name__ = ("zoidberg") @@ -46,18 +46,15 @@ class HellshareCz(SimpleHoster):          self.chunkLimit = 1      def process(self, pyfile): -        if self.account: -            self.account.relogin(self.user) -          pyfile.url = re.search(self.__pattern__, pyfile.url).group(1)          self.html = self.load(pyfile.url, decode = True)          self.getFileInfo()          found = re.search(self.SHOW_WINDOW_PATTERN, self.html)          if not found: self.parseError('SHOW WINDOW') -        url = found.group(1)         -        self.logDebug("SHOW WINDOW: " + url) -        self.html = self.load("http://download.hellshare.com" + url, decode=True) +        self.url = "http://www.hellshare.com" + found.group(1)         +        self.logDebug("SHOW WINDOW: " + self.url) +        self.html = self.load(self.url, decode=True)          if self.account:              self.handlePremium() | 
