From d0acce3be51760fc97c6d8cf298ef37ba2f299ec Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Sun, 2 Aug 2015 18:37:00 +0200 Subject: Fix https://github.com/pyload/pyload/issues/1591 --- module/plugins/accounts/XFileSharingPro.py | 19 ++++------ module/plugins/crypter/XFileSharingProFolder.py | 43 ++++++++++++++++------ module/plugins/hoster/XFileSharingPro.py | 47 ++++++++++++++++--------- module/plugins/internal/SimpleCrypter.py | 28 +++++++-------- module/plugins/internal/XFSAccount.py | 2 +- 5 files changed, 83 insertions(+), 56 deletions(-) (limited to 'module/plugins') diff --git a/module/plugins/accounts/XFileSharingPro.py b/module/plugins/accounts/XFileSharingPro.py index 62270a2b0..7066445b2 100644 --- a/module/plugins/accounts/XFileSharingPro.py +++ b/module/plugins/accounts/XFileSharingPro.py @@ -6,7 +6,7 @@ from module.plugins.internal.XFSAccount import XFSAccount class XFileSharingPro(XFSAccount): __name__ = "XFileSharingPro" __type__ = "account" - __version__ = "0.07" + __version__ = "0.08" __status__ = "testing" __description__ = """XFileSharingPro multi-purpose account plugin""" @@ -17,15 +17,10 @@ class XFileSharingPro(XFSAccount): HOSTER_DOMAIN = None - def init(self): - if self.HOSTER_DOMAIN: - return super(XFileSharingPro, self).init() - - def login(self, user, password, data, req): - if self.HOSTER_DOMAIN: - try: - return super(XFileSharingPro, self).login(user, data, req) - except Exception: - self.HOSTER_URL = self.HOSTER_URL.replace("www.", "") - return super(XFileSharingPro, self).login(user, data, req) + try: + return super(XFileSharingPro, self).login(user, data, req) + + except Fail: + self.HOSTER_URL = self.HOSTER_URL.replace("www.", "") + return super(XFileSharingPro, self).login(user, data, req) diff --git a/module/plugins/crypter/XFileSharingProFolder.py b/module/plugins/crypter/XFileSharingProFolder.py index a0931d6ba..584cc7668 100644 --- a/module/plugins/crypter/XFileSharingProFolder.py +++ b/module/plugins/crypter/XFileSharingProFolder.py @@ -8,7 +8,7 @@ from module.plugins.internal.XFSCrypter import XFSCrypter, create_getInfo class XFileSharingProFolder(XFSCrypter): __name__ = "XFileSharingProFolder" __type__ = "crypter" - __version__ = "0.12" + __version__ = "0.13" __status__ = "testing" __pattern__ = r'https?://(?:www\.)?(?:\w+\.)*?(?P(?:[\d.]+|[\w\-^_]{3,}(?:\.[a-zA-Z]{2,}){1,2})(?:\:\d+)?)/(?:user|folder)s?/\w+' @@ -35,20 +35,41 @@ class XFileSharingProFolder(XFSCrypter): self.HOSTER_DOMAIN = re.match(self.__pattern__, self.pyfile.url).group("DOMAIN").lower() self.HOSTER_NAME = "".join(part.capitalize() for part in re.split(r'(\.|\d+|\-)', self.HOSTER_DOMAIN) if part != '.') - account = self.pyload.accountManager.getAccountPlugin(self.HOSTER_NAME) - if account and account.can_use(): - self.account = account - - elif self.account: - self.account.HOSTER_DOMAIN = self.HOSTER_DOMAIN + def _setup(self): + account_name = self.__name__ if self.account.HOSTER_DOMAIN is None else self.HOSTER_NAME + self.chunk_limit = 1 + self.multiDL = True + if self.account: + self.req = self.pyload.requestFactory.getRequest(accountname, self.user) + self.premium = self.account.is_premium(self.user) + self.resume_download = self.premium else: - return + self.req = self.pyload.requestFactory.getRequest(account_name) + self.premium = False + self.resume_download = False + + + def load_account(self): + if self.req: + self.req.close() + + if not self.account: + self.account = self.pyload.accountManager.getAccountPlugin(self.HOSTER_NAME) + + if not self.account: + self.account = self.pyload.accountManager.getAccountPlugin(self.__name__) + + if self.account: + if not self.account.HOSTER_DOMAIN: + self.account.HOSTER_DOMAIN = self.HOSTER_DOMAIN + + if not self.user: + self.user = self.account.select()[0] - self.user, data = self.account.select() - self.req = self.account.get_request(self.user) - self.premium = self.account.is_premium(self.user) + if not self.user or not self.account.is_logged(self.user, True): + self.account = False getInfo = create_getInfo(XFileSharingProFolder) diff --git a/module/plugins/hoster/XFileSharingPro.py b/module/plugins/hoster/XFileSharingPro.py index a4e7a8bf4..8ede709de 100644 --- a/module/plugins/hoster/XFileSharingPro.py +++ b/module/plugins/hoster/XFileSharingPro.py @@ -8,7 +8,7 @@ from module.plugins.internal.XFSHoster import XFSHoster, create_getInfo class XFileSharingPro(XFSHoster): __name__ = "XFileSharingPro" __type__ = "hoster" - __version__ = "0.52" + __version__ = "0.53" __status__ = "testing" __pattern__ = r'https?://(?:www\.)?(?:\w+\.)*?(?P(?:[\d.]+|[\w\-^_]{3,}(?:\.[a-zA-Z]{2,}){1,2})(?:\:\d+)?)/(?:embed-)?\w{12}(?:\W|$)' @@ -29,33 +29,46 @@ class XFileSharingPro(XFSHoster): def init(self): - super(XFileSharingPro, self).init() - self.__pattern__ = self.pyload.pluginManager.hosterPlugins[self.__name__]['pattern'] self.HOSTER_DOMAIN = re.match(self.__pattern__, self.pyfile.url).group("DOMAIN").lower() self.HOSTER_NAME = "".join(part.capitalize() for part in re.split(r'(\.|\d+|\-)', self.HOSTER_DOMAIN) if part != '.') - account = self.pyload.accountManager.getAccountPlugin(self.HOSTER_NAME) - - if account and account.can_use(): - self.account = account - elif self.account: - self.account.HOSTER_DOMAIN = self.HOSTER_DOMAIN + def _setup(self): + account_name = self.__name__ if self.account.HOSTER_DOMAIN is None else self.HOSTER_NAME + self.chunk_limit = 1 + self.multiDL = True + if self.account: + self.req = self.pyload.requestFactory.getRequest(accountname, self.user) + self.premium = self.account.is_premium(self.user) + self.resume_download = self.premium else: - return + self.req = self.pyload.requestFactory.getRequest(account_name) + self.premium = False + self.resume_download = False + + + def load_account(self): + if self.req: + self.req.close() + + if not self.account: + self.account = self.pyload.accountManager.getAccountPlugin(self.HOSTER_NAME) + + if not self.account: + self.account = self.pyload.accountManager.getAccountPlugin(self.__name__) - self.user, data = self.account.select() - self.req = self.account.get_request(self.user) - self.premium = self.account.is_premium(self.user) + if self.account: + if not self.account.HOSTER_DOMAIN: + self.account.HOSTER_DOMAIN = self.HOSTER_DOMAIN + if not self.user: + self.user = self.account.select()[0] - def setup(self): - self.chunk_limit = 1 - self.resume_download = self.premium - self.multiDL = True + if not self.user or not self.account.is_logged(self.user, True): + self.account = False getInfo = create_getInfo(XFileSharingPro) diff --git a/module/plugins/internal/SimpleCrypter.py b/module/plugins/internal/SimpleCrypter.py index f044fbb50..bcbfd6488 100644 --- a/module/plugins/internal/SimpleCrypter.py +++ b/module/plugins/internal/SimpleCrypter.py @@ -10,7 +10,7 @@ from module.utils import fixup, html_unescape class SimpleCrypter(Crypter, SimpleHoster): __name__ = "SimpleCrypter" __type__ = "crypter" - __version__ = "0.59" + __version__ = "0.60" __status__ = "testing" __pattern__ = r'^unmatchable$' @@ -57,25 +57,23 @@ class SimpleCrypter(Crypter, SimpleHoster): #@TODO: Remove in 0.4.10 - def load_account(self): - accountname = (self.__name__ + ".py").replace("Folder.py", "").replace(".py", "") + def _setup(self): + orig_name = self.__name__ + self.__name__ = (orig_name + ".py").replace("Folder.py", "").replace(".py", "") + + super(SimpleCrypter, self)._setup() - if self.req: - self.req.close() + self.__name__ = orig_name - if not self.account: - self.account = self.pyload.accountManager.getAccountPlugin(accountname) - if self.account: - if not self.user: - self.user = self.account.select()[0] + #@TODO: Remove in 0.4.10 + def load_account(self): + orig_name = self.__name__ + self.__name__ = (orig_name + ".py").replace("Folder.py", "").replace(".py", "") - if not self.user or not self.account.is_logged(self.user, relogin=True): - self.account = False + super(SimpleCrypter, self).load_account() - #: Browser instance, see `network.Browser` - self.req = self.pyload.requestFactory.getRequest(accountname, - self.user if self.account else None) + self.__name__ = orig_name def handle_direct(self, pyfile): diff --git a/module/plugins/internal/XFSAccount.py b/module/plugins/internal/XFSAccount.py index 5bf959400..0cd723bab 100644 --- a/module/plugins/internal/XFSAccount.py +++ b/module/plugins/internal/XFSAccount.py @@ -152,7 +152,7 @@ class XFSAccount(Account): def login(self, user, password, data, req): if not self.HOSTER_URL: - self.login_fail(_("Missing HOSTER_DOMAIN")) + self.login_fail(_("Missing HOSTER_URL")) if not self.LOGIN_URL: self.LOGIN_URL = urlparse.urljoin(self.HOSTER_URL, "login.html") -- cgit v1.2.3