diff options
author | Gonzalo SR <gonzalo@gonzalosr.com> | 2013-06-07 01:42:17 +0200 |
---|---|---|
committer | Gonzalo SR <gonzalo@gonzalosr.com> | 2013-06-07 01:42:17 +0200 |
commit | 3e23b11528b392ca358e1713cf2e564c327faf1a (patch) | |
tree | ea682653bd887ff84d11b5bc7c4f419d48a474ab /module/plugins/hoster | |
parent | New multi hoster plugin: UnrestrictLi (diff) | |
download | pyload-3e23b11528b392ca358e1713cf2e564c327faf1a.tar.xz |
Added plugin to support megacrypter.com
Implemented as hoster instead of crypter because I couldn't find an easy way to hand the file decryption key and the download URL to the MegaNz plugin. (Real MegaNz URL is never known).
Right now it doesn't support password protected megacrypter URLs.
Tested with some files. Works well thus far.
Feedback welcome.
Diffstat (limited to 'module/plugins/hoster')
-rw-r--r-- | module/plugins/hoster/MegacrypterCom.py | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/module/plugins/hoster/MegacrypterCom.py b/module/plugins/hoster/MegacrypterCom.py new file mode 100644 index 000000000..9f012e5be --- /dev/null +++ b/module/plugins/hoster/MegacrypterCom.py @@ -0,0 +1,59 @@ +# -*- coding: utf-8 -*- +import re + +from module.common.json_layer import json +from module.plugins.hoster.MegaNz import MegaNz + + +class MegacrypterCom(MegaNz): + __name__ = "MegacrypterCom" + __type__ = "hoster" + __pattern__ = r"(https?://[a-z0-9]{0,10}\.?megacrypter\.com/[a-zA-Z0-9!_\-]+)" + __version__ = "0.1" + __description__ = """megacrypter plugin, based and inherits from RaNaN's MegaNz plugin""" + __author_name__ = ("GonzaloSR", ) + __author_mail__ = ("gonzalo@gonzalosr.com", ) + + API_URL = "http://megacrypter.com/api" + FILE_SUFFIX = ".crypted" + + + def callApi(self, **kwargs): + """ Dispatch a call to the api, see megacrypter.com/api_doc """ + self.logDebug("JSON request: " + json.dumps(kwargs)) + resp = self.load(self.API_URL, post=json.dumps(kwargs)) + self.logDebug("API Response: " + resp) + return json.loads(resp) + + + def process(self, pyfile): + + key = None + + # match is guaranteed because plugin was chosen to handle url + node = re.search(self.__pattern__, pyfile.url).group(1) + + + # get Mega.co.nz link info + info = self.callApi(link=node, m="info") + + # get crypted file URL + dl = self.callApi(link=node, m="dl") + + + # TODO: map error codes, implement password protection + # if info["pass"] == true: + # crypted_file_key, md5_file_key = info["key"].split("#") + + + key = self.b64_decode(info["key"]) + + pyfile.name = info["name"] + self.FILE_SUFFIX + + self.download(dl["url"]) + self.decryptFile(key) + + # Everything is finished and final name can be set + pyfile.name = info["name"] + + |