diff options
Diffstat (limited to 'pyload/plugins/hoster/DdlstorageCom.py')
-rw-r--r-- | pyload/plugins/hoster/DdlstorageCom.py | 73 |
1 files changed, 69 insertions, 4 deletions
diff --git a/pyload/plugins/hoster/DdlstorageCom.py b/pyload/plugins/hoster/DdlstorageCom.py index 5eaebf1d1..82072aadb 100644 --- a/pyload/plugins/hoster/DdlstorageCom.py +++ b/pyload/plugins/hoster/DdlstorageCom.py @@ -1,13 +1,45 @@ # -*- coding: utf-8 -*- +import re +from hashlib import md5 -from module.plugins.hoster.XFileSharingPro import XFileSharingPro, create_getInfo +from module.plugins.hoster.XFileSharingPro import XFileSharingPro +from module.network.RequestFactory import getURL +from module.plugins.Plugin import chunks +from module.common.json_layer import json_loads + + +def getInfo(urls): + # DDLStorage API Documentation: + # http://www.ddlstorage.com/cgi-bin/api_req.cgi?req_type=doc + ids = dict() + for url in urls: + m = re.search(DdlstorageCom.__pattern__, url) + ids[m.group('ID')] = url + + for chunk in chunks(ids.keys(), 5): + api = getURL('http://www.ddlstorage.com/cgi-bin/api_req.cgi', + post={'req_type': 'file_info_free', + 'client_id': 53472, + 'file_code': ','.join(chunk), + 'sign': md5('file_info_free%d%s%s' % (53472, ','.join(chunk), + '25JcpU2dPOKg8E2OEoRqMSRu068r0Cv3')).hexdigest()}) + api = api.replace('<pre>', '').replace('</pre>', '') + api = json_loads(api) + + result = list() + for el in api: + if el['status'] == 'online': + result.append((el['file_name'], int(el['file_size']), 2, ids[el['file_code']])) + else: + result.append((ids[el['file_code']], 0, 1, ids[el['file_code']])) + yield result class DdlstorageCom(XFileSharingPro): __name__ = "DdlstorageCom" __type__ = "hoster" - __pattern__ = r"http://(?:\w*\.)*?ddlstorage.com/\w{12}" - __version__ = "0.07" + __pattern__ = r"http://(?:\w*\.)*?ddlstorage.com/(?P<ID>\w{12})" + __version__ = "1.00" __description__ = """DDLStorage.com hoster plugin""" __author_name__ = ("zoidberg", "stickell") __author_mail__ = ("zoidberg@mujmail.cz", "l.stickell@yahoo.it") @@ -15,5 +47,38 @@ class DdlstorageCom(XFileSharingPro): FILE_INFO_PATTERN = r'<p class="sub_title"[^>]*>(?P<N>.+) \((?P<S>[^)]+)\)</p>' HOSTER_NAME = "ddlstorage.com" + def prepare(self): + self.getAPIData() + super(DdlstorageCom, self).prepare() + + def getAPIData(self): + file_id = re.search(self.__pattern__, self.pyfile.url).group('ID') + data = {'client_id': 53472, + 'file_code': file_id} + if self.user: + passwd = self.account.getAccountData(self.user)["password"] + data['req_type'] = 'file_info_reg' + data['user_login'] = self.user + data['user_password'] = md5(passwd).hexdigest() + data['sign'] = md5('file_info_reg%d%s%s%s%s' % (data['client_id'], data['user_login'], + data['user_password'], data['file_code'], + '25JcpU2dPOKg8E2OEoRqMSRu068r0Cv3')).hexdigest() + else: + data['req_type'] = 'file_info_free' + data['sign'] = md5('file_info_free%d%s%s' % (data['client_id'], data['file_code'], + '25JcpU2dPOKg8E2OEoRqMSRu068r0Cv3')).hexdigest() + + self.api_data = self.load('http://www.ddlstorage.com/cgi-bin/api_req.cgi', post=data) + self.api_data = self.api_data.replace('<pre>', '').replace('</pre>', '') + self.logDebug('API Data: ' + self.api_data) + self.api_data = json_loads(self.api_data)[0] + + if self.api_data['status'] == 'offline': + self.offline() -getInfo = create_getInfo(DdlstorageCom)
\ No newline at end of file + if 'file_name' in self.api_data: + self.pyfile.name = self.api_data['file_name'] + if 'file_size' in self.api_data: + self.pyfile.size = self.api_data['size'] = self.api_data['file_size'] + if 'file_md5_base64' in self.api_data: + self.api_data['md5_ddlstorage'] = self.api_data['file_md5_base64'] |