#!/usr/bin/env python # -*- coding: utf-8 -*- import re from module.plugins.Hoster import Hoster from module.plugins.internal.CaptchaService import ReCaptcha from module.network.RequestFactory import getURL from module.plugins.Plugin import chunks def getInfo(urls): api_url_base = "http://api.hotfile.com/" for chunk in chunks(urls, 90): api_param_file = {"action": "checklinks", "links": ",".join(chunk), "fields": "id,status,name,size"} #api only supports old style links src = getURL(api_url_base, post=api_param_file, decode=True) result = [] for i, res in enumerate(src.split("\n")): if not res: continue fields = res.split(",") if fields[1] in ("1", "2"): status = 2 else: status = 1 result.append((fields[2], int(fields[3]), status, chunk[i])) yield result class HotfileCom(Hoster): __name__ = "HotfileCom" __type__ = "hoster" __pattern__ = r"https?://(www.)?hotfile\.com/dl/\d+/[0-9a-zA-Z]+/" __version__ = "0.36" __description__ = """Hotfile.com Download Hoster""" __author_name__ = ("sitacuisses", "spoob", "mkaay", "JoKoT3") __author_mail__ = ("sitacuisses@yhoo.de", "spoob@pyload.org", "mkaay@mkaay.de", "jokot3@gmail.com") FILE_OFFLINE_PATTERN = r'File is removed' def setup(self): self.html = [None, None] self.wantReconnect = False self.htmlwithlink = None self.url = None if self.premium: self.multiDL = True self.resumeDownload = True self.chunkLimit = -1 else: self.multiDL = False self.chunkLimit = 1 def apiCall(self, method, post, login=False): if not self.account and login: return elif self.account and login: return self.account.apiCall(method, post, self.user) post.update({"action": method}) return self.load("http://api.hotfile.com/", post=post, decode=True) def process(self, pyfile): self.wantReconnect = False args = {"links": self.pyfile.url, "fields": "id,status,name,size,sha1"} resp = self.apiCall("checklinks", args) self.api_data = {} for k, v in zip(args["fields"].split(","), resp.strip().split(",")): self.api_data[k] = v if self.api_data["status"] == "0": self.offline() pyfile.name = self.api_data["name"] if not self.premium: self.downloadHTML() if self.FILE_OFFLINE_PATTERN in self.html[0]: self.offline() self.setWait(self.getWaitTime()) self.wait() self.freeDownload() else: dl = self.account.apiCall("getdirectdownloadlink", {"link": self.pyfile.url}, self.user) #dl = unquote(dl).strip() <- Made problems dl = dl.strip() self.download(dl) def downloadHTML(self): self.html[0] = self.load(self.pyfile.url, get={"lang": "en"}) def freeDownload(self): form_content = re.search(r"