# -*- coding: utf-8 -*- import re from module.network.RequestFactory import getURL from module.plugins.Hoster import Hoster from module.plugins.Plugin import chunks def getInfo(urls): result = [] for chunk in chunks(urls, 10): for url in chunk: html = getURL(url) if r'
' in html: result.append((url, 0, 1, url)) elif r'Page cannot be displayed' in html: result.append((url, 0, 1, url)) else: try: url_pattern = '(.+?)' file_name = re.search(url_pattern, html).group(0).split(', event)">')[1].split('')[0] result.append((file_name, 0, 2, url)) except Exception: pass # status 1=OFFLINE, 2=OK, 3=UNKNOWN # result.append((#name,#size,#status,#url)) yield result class FilesMailRu(Hoster): __name__ = "FilesMailRu" __type__ = "hoster" __version__ = "0.32" __pattern__ = r'http://(?:www\.)?files\.mail\.ru/.+' __description__ = """Files.mail.ru hoster plugin""" __license__ = "GPLv3" __authors__ = [("oZiRiz", "ich@oziriz.de")] def setup(self): self.multiDL = bool(self.account) def process(self, pyfile): self.html = self.load(pyfile.url) self.url_pattern = '(.+?)' #marks the file as "offline" when the pattern was found on the html-page''' if r'
' in self.html: self.offline() elif r'Page cannot be displayed' in self.html: self.offline() #the filename that will be showed in the list (e.g. test.part1.rar)''' pyfile.name = self.getFileName() #prepare and download''' if not self.account: self.prepare() self.download(self.getFileUrl()) self.myPostProcess() else: self.download(self.getFileUrl()) self.myPostProcess() def prepare(self): """You have to wait some seconds. Otherwise you will get a 40Byte HTML Page instead of the file you expected""" self.setWait(10) self.wait() return True def getFileUrl(self): """gives you the URL to the file. Extracted from the Files.mail.ru HTML-page stored in self.html""" return re.search(self.url_pattern, self.html).group(0).split('')[1].split('')[0] def myPostProcess(self): # searches the file for HTMl-Code. Sometimes the Redirect # doesn't work (maybe a curl Problem) and you get only a small # HTML file and the Download is marked as "finished" # then the download will be restarted. It's only bad for these # who want download a HTML-File (it's one in a million ;-) ) # # The maximum UploadSize allowed on files.mail.ru at the moment is 100MB # so i set it to check every download because sometimes there are downloads # that contain the HTML-Text and 60MB ZEROs after that in a xyzfile.part1.rar file # (Loading 100MB in to ram is not an option) check = self.checkDownload({"html": "