From a4a358ce15ecac4aaa35935a074819058e6333a8 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Tue, 7 Apr 2015 16:47:50 +0200 Subject: [YadiSk] Cleanup --- module/plugins/hoster/YadiSk.py | 85 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 module/plugins/hoster/YadiSk.py (limited to 'module/plugins/hoster/YadiSk.py') diff --git a/module/plugins/hoster/YadiSk.py b/module/plugins/hoster/YadiSk.py new file mode 100644 index 000000000..c71d16cf2 --- /dev/null +++ b/module/plugins/hoster/YadiSk.py @@ -0,0 +1,85 @@ +# -*- coding: utf-8 -*- + +import re +import pycurl +import random + +from module.common.json_layer import json_loads +from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo + + +class YadiSk(SimpleHoster): + __name__ = "YadiSk" + __type__ = "hoster" + __version__ = "0.02" + + __pattern__ = r'https?://yadi\.sk/d/\w+' + + __description__ = """Yadi.sk hoster plugin""" + __license__ = "GPLv3" + __authors__ = [("GammaC0de", "nomail@fakemailbox.com")] + + + OFFLINE_PATTERN = r'Nothing found' + + + def setup(self): + self.resumeDownload = False + self.multiDL = False + self.chunkLimit = 1 + + + def handleFree(self, pyfile): + m = re.search(r'', self.html) + if m is None: + self.fail(_("could not find required json data")) + + res = json_loads(m.group(1)) + + yadisk_ver = None + yadisk_sk = None + yadisk_id = None + yadisk_size = None + yadisk_name = None + yadisk_hash = None + try: #@TODO: Copy to apiInfo method + for sect in res: + if 'model' in sect: + if sect['model'] == 'config': + yadisk_ver = sect['data']['version'] + yadisk_sk = sect['data']['sk'] + + elif sect['model'] == 'resource': + yadisk_id = sect['data']['id'] + yadisk_size = sect['data']['meta']['size'] + yadisk_name = sect['data']['name'] + + except Exception: + self.fail(_("Unexpected server response")) + + if None is in (yadisk_id, yadisk_sk, yadisk_id, yadisk_size, yadisk_name): + self.fail(_("json data is missing important information, cannot continue")) + + self.pyfile.size = yadisk_size + self.pyfile.name = yadisk_name + + yadisk_idclient = "" + for _i in range(1, 32): + yadisk_idclient += random.choice('0123456abcdef') + + result_json = self.load("https://yadi.sk/models/?_m=do-get-resource-url", + post={'idClient': yadisk_idclient, + 'version' : yadisk_ver, + '_model.0': 'do-get-resource-url', + 'sk' : yadisk_sk, + 'id.0' : yadisk_id}) + + res = json_loads(result_json) + try: + self.link = res['models'][0]['data']['file'] + + except Exception: + self.fail(_("faild to retrieve the download url")) + + +getInfo = create_getInfo(YadiSk) -- cgit v1.2.3 From 1cfc960fd3ec384364ffb1e09d3ee98fc657eddb Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Tue, 7 Apr 2015 16:51:14 +0200 Subject: [SimpleDereferer][SimpleHoster] Update user-agent --- module/plugins/hoster/YadiSk.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'module/plugins/hoster/YadiSk.py') diff --git a/module/plugins/hoster/YadiSk.py b/module/plugins/hoster/YadiSk.py index c71d16cf2..57d8ae786 100644 --- a/module/plugins/hoster/YadiSk.py +++ b/module/plugins/hoster/YadiSk.py @@ -70,7 +70,7 @@ class YadiSk(SimpleHoster): result_json = self.load("https://yadi.sk/models/?_m=do-get-resource-url", post={'idClient': yadisk_idclient, 'version' : yadisk_ver, - '_model.0': 'do-get-resource-url', + '_model.0': "do-get-resource-url", 'sk' : yadisk_sk, 'id.0' : yadisk_id}) -- cgit v1.2.3 From 034d87c836f9fba82142a06b5f666c84ca10bd50 Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Tue, 7 Apr 2015 21:26:23 +0200 Subject: [YadiSk] Fix https://github.com/pyload/pyload/issues/1321 --- module/plugins/hoster/YadiSk.py | 45 ++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 23 deletions(-) (limited to 'module/plugins/hoster/YadiSk.py') diff --git a/module/plugins/hoster/YadiSk.py b/module/plugins/hoster/YadiSk.py index 57d8ae786..c3749d30d 100644 --- a/module/plugins/hoster/YadiSk.py +++ b/module/plugins/hoster/YadiSk.py @@ -1,7 +1,6 @@ # -*- coding: utf-8 -*- import re -import pycurl import random from module.common.json_layer import json_loads @@ -11,13 +10,13 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class YadiSk(SimpleHoster): __name__ = "YadiSk" __type__ = "hoster" - __version__ = "0.02" + __version__ = "0.03" __pattern__ = r'https?://yadi\.sk/d/\w+' __description__ = """Yadi.sk hoster plugin""" __license__ = "GPLv3" - __authors__ = [("GammaC0de", "nomail@fakemailbox.com")] + __authors__ = [("GammaC0de", None)] OFFLINE_PATTERN = r'Nothing found' @@ -32,7 +31,7 @@ class YadiSk(SimpleHoster): def handleFree(self, pyfile): m = re.search(r'', self.html) if m is None: - self.fail(_("could not find required json data")) + self.error(_("could not find required json data")) res = json_loads(m.group(1)) @@ -41,45 +40,45 @@ class YadiSk(SimpleHoster): yadisk_id = None yadisk_size = None yadisk_name = None - yadisk_hash = None - try: #@TODO: Copy to apiInfo method + + try: #@TODO: Copy to apiInfo for sect in res: if 'model' in sect: - if sect['model'] == 'config': + if sect['model'] == "config": yadisk_ver = sect['data']['version'] yadisk_sk = sect['data']['sk'] - elif sect['model'] == 'resource': + elif sect['model'] == "resource": yadisk_id = sect['data']['id'] yadisk_size = sect['data']['meta']['size'] yadisk_name = sect['data']['name'] - except Exception: - self.fail(_("Unexpected server response")) + except Exception, e: + self.fail(_("Unexpected server response"), e) - if None is in (yadisk_id, yadisk_sk, yadisk_id, yadisk_size, yadisk_name): - self.fail(_("json data is missing important information, cannot continue")) + if None in (yadisk_id, yadisk_sk, yadisk_id, yadisk_size, yadisk_name): + self.error(_("Missing JSON data")) self.pyfile.size = yadisk_size self.pyfile.name = yadisk_name yadisk_idclient = "" - for _i in range(1, 32): + for _i in range(32): yadisk_idclient += random.choice('0123456abcdef') - result_json = self.load("https://yadi.sk/models/?_m=do-get-resource-url", - post={'idClient': yadisk_idclient, - 'version' : yadisk_ver, - '_model.0': "do-get-resource-url", - 'sk' : yadisk_sk, - 'id.0' : yadisk_id}) - - res = json_loads(result_json) try: - self.link = res['models'][0]['data']['file'] + self.html = self.load("https://yadi.sk/models/", + get={'_m': "do-get-resource-url"}, + post={'idClient': yadisk_idclient, + 'version' : yadisk_ver, + '_model.0': "do-get-resource-url", + 'sk' : yadisk_sk, + 'id.0' : yadisk_id}) + + self.link = json_loads(self.html)['models'][0]['data']['file'] except Exception: - self.fail(_("faild to retrieve the download url")) + pass getInfo = create_getInfo(YadiSk) -- cgit v1.2.3 From 5c6f3886563654eb568b78356c187ccf43814787 Mon Sep 17 00:00:00 2001 From: GammaC0de Date: Tue, 14 Apr 2015 03:34:56 +0300 Subject: Update YadiSk.py --- module/plugins/hoster/YadiSk.py | 81 +++++++++++++++++++++-------------------- 1 file changed, 42 insertions(+), 39 deletions(-) (limited to 'module/plugins/hoster/YadiSk.py') diff --git a/module/plugins/hoster/YadiSk.py b/module/plugins/hoster/YadiSk.py index c3749d30d..ad63ffb32 100644 --- a/module/plugins/hoster/YadiSk.py +++ b/module/plugins/hoster/YadiSk.py @@ -10,7 +10,7 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class YadiSk(SimpleHoster): __name__ = "YadiSk" __type__ = "hoster" - __version__ = "0.03" + __version__ = "0.04" __pattern__ = r'https?://yadi\.sk/d/\w+' @@ -22,6 +22,42 @@ class YadiSk(SimpleHoster): OFFLINE_PATTERN = r'Nothing found' + @classmethod + def getInfo(cls, url="", html=""): + info = super(YadiSk, cls).getInfo(url, html) + + if html: + if 'idclient' not in info: + info['idclient'] = "" + for _i in xrange(32): + info ['idclient'] += random.choice('0123456abcdef') + + m = re.search(r'', html) + if m: + api_data = json_loads(m.group(1)) + try: + for sect in api_data: + if 'model' in sect: + if sect['model'] == "config": + info['version'] = sect['data']['version'] + info['sk'] = sect['data']['sk'] + + elif sect['model'] == "resource": + info['id'] = sect['data']['id'] + info['size'] = sect['data']['meta']['size'] + info['name'] = sect['data']['name'] + + except Exception, e: + info['status'] = 8 + info['error'] = _("Unexpected server response: %s") % e.message + + else: + info['status'] = 8 + info['error'] = _("could not find required json data") + + return info + + def setup(self): self.resumeDownload = False self.multiDL = False @@ -29,51 +65,18 @@ class YadiSk(SimpleHoster): def handleFree(self, pyfile): - m = re.search(r'', self.html) - if m is None: - self.error(_("could not find required json data")) - - res = json_loads(m.group(1)) - - yadisk_ver = None - yadisk_sk = None - yadisk_id = None - yadisk_size = None - yadisk_name = None - - try: #@TODO: Copy to apiInfo - for sect in res: - if 'model' in sect: - if sect['model'] == "config": - yadisk_ver = sect['data']['version'] - yadisk_sk = sect['data']['sk'] - - elif sect['model'] == "resource": - yadisk_id = sect['data']['id'] - yadisk_size = sect['data']['meta']['size'] - yadisk_name = sect['data']['name'] - - except Exception, e: - self.fail(_("Unexpected server response"), e) - - if None in (yadisk_id, yadisk_sk, yadisk_id, yadisk_size, yadisk_name): + if any(True for _k in ['id', 'sk', 'version', 'idclient'] if _k not in self.info): self.error(_("Missing JSON data")) - self.pyfile.size = yadisk_size - self.pyfile.name = yadisk_name - - yadisk_idclient = "" - for _i in range(32): - yadisk_idclient += random.choice('0123456abcdef') try: self.html = self.load("https://yadi.sk/models/", get={'_m': "do-get-resource-url"}, - post={'idClient': yadisk_idclient, - 'version' : yadisk_ver, + post={'idClient': self.info['idclient'], + 'version' : self.info['version'], '_model.0': "do-get-resource-url", - 'sk' : yadisk_sk, - 'id.0' : yadisk_id}) + 'sk' : self.info['sk'], + 'id.0' : self.info['id']}) self.link = json_loads(self.html)['models'][0]['data']['file'] -- cgit v1.2.3 From 44c994bbd576182c4a499c8c9292e2ef18d9a6b6 Mon Sep 17 00:00:00 2001 From: GammaC0de Date: Tue, 5 May 2015 21:10:14 +0300 Subject: Update YadiSk.py --- module/plugins/hoster/YadiSk.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'module/plugins/hoster/YadiSk.py') diff --git a/module/plugins/hoster/YadiSk.py b/module/plugins/hoster/YadiSk.py index ad63ffb32..54050fb9b 100644 --- a/module/plugins/hoster/YadiSk.py +++ b/module/plugins/hoster/YadiSk.py @@ -10,9 +10,9 @@ from module.plugins.internal.SimpleHoster import SimpleHoster, create_getInfo class YadiSk(SimpleHoster): __name__ = "YadiSk" __type__ = "hoster" - __version__ = "0.04" + __version__ = "0.05" - __pattern__ = r'https?://yadi\.sk/d/\w+' + __pattern__ = r'https?://yadi\.sk/d/.+' __description__ = """Yadi.sk hoster plugin""" __license__ = "GPLv3" -- cgit v1.2.3 From 5c153e02a6eaebb721c85202b54401fa2c1f08fc Mon Sep 17 00:00:00 2001 From: Walter Purcaro Date: Wed, 6 May 2015 00:14:25 +0200 Subject: [SimpleHoster] Fallback option --- module/plugins/hoster/YadiSk.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'module/plugins/hoster/YadiSk.py') diff --git a/module/plugins/hoster/YadiSk.py b/module/plugins/hoster/YadiSk.py index 54050fb9b..3b4c9d985 100644 --- a/module/plugins/hoster/YadiSk.py +++ b/module/plugins/hoster/YadiSk.py @@ -12,7 +12,7 @@ class YadiSk(SimpleHoster): __type__ = "hoster" __version__ = "0.05" - __pattern__ = r'https?://yadi\.sk/d/.+' + __pattern__ = r'https?://yadi\.sk/d/[\w-]+' __description__ = """Yadi.sk hoster plugin""" __license__ = "GPLv3" -- cgit v1.2.3