diff options
author | Walter Purcaro <vuolter@gmail.com> | 2014-09-08 00:29:57 +0200 |
---|---|---|
committer | Walter Purcaro <vuolter@gmail.com> | 2014-09-14 11:02:23 +0200 |
commit | 68d662e689cd42687341c550fb6ebb74e6968d21 (patch) | |
tree | 486cef41bd928b8db704894233b2cef94a6e346f /pyload/plugins/crypter/MultiuploadCom.py | |
parent | save_join -> safe_join & save_path -> safe_filename (diff) | |
download | pyload-68d662e689cd42687341c550fb6ebb74e6968d21.tar.xz |
module -> pyload
Diffstat (limited to 'pyload/plugins/crypter/MultiuploadCom.py')
-rw-r--r-- | pyload/plugins/crypter/MultiuploadCom.py | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/pyload/plugins/crypter/MultiuploadCom.py b/pyload/plugins/crypter/MultiuploadCom.py new file mode 100644 index 000000000..5aa77e5f5 --- /dev/null +++ b/pyload/plugins/crypter/MultiuploadCom.py @@ -0,0 +1,64 @@ +# -*- coding: utf-8 -*- + +import re +from time import time + +from pyload.plugins.Crypter import Crypter +from pyload.common.json_layer import json_loads + + +class MultiuploadCom(Crypter): + __name__ = "MultiuploadCom" + __type__ = "crypter" + __version__ = "0.01" + + __pattern__ = r'http://(?:www\.)?multiupload.com/(\w+)' + __config__ = [("preferedHoster", "str", "Prefered hoster list (bar-separated) ", "multiupload"), + ("ignoredHoster", "str", "Ignored hoster list (bar-separated) ", "")] + + __description__ = """MultiUpload.com decrypter plugin""" + __author_name__ = "zoidberg" + __author_mail__ = "zoidberg@mujmail.cz" + + ML_LINK_PATTERN = r'<div id="downloadbutton_" style=""><a href="([^"]+)"' + + + def decrypt(self, pyfile): + self.html = self.load(pyfile.url) + m = re.search(self.ML_LINK_PATTERN, self.html) + ml_url = m.group(1) if m else None + + json_list = json_loads(self.load("http://multiupload.com/progress/", get={ + "d": re.match(self.__pattern__, pyfile.url).group(1), + "r": str(int(time() * 1000)) + })) + + prefered_set = map(lambda s: s.lower().split('.')[0], set(self.getConfig("preferedHoster").split('|'))) + + if ml_url and 'multiupload' in prefered_set: + self.urls.append(ml_url) + + for link in json_list: + if link['service'].lower() in prefered_set and int(link['status']) and not int(link['deleted']): + url = self.getLocation(link['url']) + if url: + self.urls.append(url) + + if not self.urls: + ignored_set = map(lambda s: s.lower().split('.')[0], set(self.getConfig("ignoredHoster").split('|'))) + + if 'multiupload' not in ignored_set: + self.urls.append(ml_url) + + for link in json_list: + if link['service'].lower() not in ignored_set and int(link['status']) and not int(link['deleted']): + url = self.getLocation(link['url']) + if url: + self.urls.append(url) + + if not self.urls: + self.fail('Could not extract any links') + + def getLocation(self, url): + header = self.load(url, just_header=True) + return header['location'] if "location" in header else None |