From 8e87787753b2e049917a5491727d285b1c5a7095 Mon Sep 17 00:00:00 2001 From: mkaay Date: Sun, 27 Dec 2009 00:20:21 +0100 Subject: closes #13 --- module/plugins/hoster/HotfileCom.py | 110 ++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 module/plugins/hoster/HotfileCom.py (limited to 'module/plugins/hoster/HotfileCom.py') diff --git a/module/plugins/hoster/HotfileCom.py b/module/plugins/hoster/HotfileCom.py new file mode 100644 index 000000000..a046cb6b1 --- /dev/null +++ b/module/plugins/hoster/HotfileCom.py @@ -0,0 +1,110 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import re +from time import time +from module.Plugin import Plugin + +class HotfileCom(Plugin): + + def __init__(self, parent): + Plugin.__init__(self, parent) + props = {} + props['name'] = "HotfileCom" + props['type'] = "hoster" + props['pattern'] = r"http://hotfile.com/dl/" + props['version'] = "0.1" + props['description'] = """Hotfile.com Download Plugin""" + props['author_name'] = ("sitacuisses","spoob","mkaay") + props['author_mail'] = ("sitacuisses@yhoo.de","spoob@pyload.org","mkaay@mkaay.de") + self.props = props + self.parent = parent + self.html = None + self.want_reconnect = False + self.multi_dl = False + self.htmlwithlink = None + self.url = None + + def prepare(self, thread): + pyfile = self.parent + + self.want_reconnect = False + + pyfile.status.exists = self.file_exists() + + if not pyfile.status.exists: + raise Exception, "The file was not found on the server." + return False + + pyfile.status.filename = self.get_file_name() + + self.get_wait_time() + pyfile.status.waituntil = self.time_plus_wait + pyfile.status.want_reconnect = self.want_reconnect + + thread.wait(self.parent) + + pyfile.status.url = self.get_file_url() + + return True + + def download_html(self): + self.url = self.parent.url + self.html = self.req.load(self.url) + + def get_file_url(self): + """ returns the absolute downloadable filepath + """ + if self.html == None: + self.download_html() + if not self.want_reconnect: + self.get_download_page() + file_url = re.search("a href=\"(http://hotfile\.com/get/\S*?)\"", self.htmlwithlink).group(1) + return file_url + else: + return False + + def get_file_name(self): + if self.html == None: + self.download_html() + if not self.want_reconnect: + file_name = re.search('Downloading\s(.*?)', self.html).group(1) + return file_name + else: + return self.parent.url + + def file_exists(self): + """ returns True or False + """ + if self.html == None: + self.download_html() + if re.search(r"Such file does not exist or it has been removed for infringement of copyrights.", self.html) != None: + return False + else: + return True + + def get_wait_time(self): + free_limit_pattern = re.compile(r"timerend=d\.getTime\(\)\+(\d+);") + matches = free_limit_pattern.findall(self.html) + if matches: + for match in matches: + if int(match) == 60000: + continue + if int(match) == 0: + continue + else: + self.time_plus_wait = time() + int(match)/1000 + 65 + self.want_reconnect = True + return True + self.time_plus_wait = time() + 65 + + def get_download_page(self): + herewego = re.search(r"
\s*)*?\n", self.html).group(0) + all_the_tuples = re.findall(r"", herewego) + + self.htmlwithlink = self.req.load(self.url, None, all_the_tuples) + + def proceed(self, url, location): + + self.req.download(url, location) + -- cgit v1.2.3 From 57639a54f779abaff98a20fb741ce1781748166b Mon Sep 17 00:00:00 2001 From: spoob Date: Sun, 17 Jan 2010 23:13:05 +0100 Subject: Fixed Hotfile --- module/plugins/hoster/HotfileCom.py | 56 ++++++++++--------------------------- 1 file changed, 15 insertions(+), 41 deletions(-) (limited to 'module/plugins/hoster/HotfileCom.py') diff --git a/module/plugins/hoster/HotfileCom.py b/module/plugins/hoster/HotfileCom.py index a046cb6b1..a9853100c 100644 --- a/module/plugins/hoster/HotfileCom.py +++ b/module/plugins/hoster/HotfileCom.py @@ -19,17 +19,18 @@ class HotfileCom(Plugin): props['author_mail'] = ("sitacuisses@yhoo.de","spoob@pyload.org","mkaay@mkaay.de") self.props = props self.parent = parent - self.html = None + self.html = [None, None] self.want_reconnect = False self.multi_dl = False self.htmlwithlink = None self.url = None - + def prepare(self, thread): pyfile = self.parent self.want_reconnect = False - + + self.download_html() pyfile.status.exists = self.file_exists() if not pyfile.status.exists: @@ -45,47 +46,31 @@ class HotfileCom(Plugin): thread.wait(self.parent) pyfile.status.url = self.get_file_url() - return True def download_html(self): self.url = self.parent.url - self.html = self.req.load(self.url) + self.html[0] = self.req.load(self.url, cookies=True) def get_file_url(self): - """ returns the absolute downloadable filepath - """ - if self.html == None: - self.download_html() - if not self.want_reconnect: - self.get_download_page() - file_url = re.search("a href=\"(http://hotfile\.com/get/\S*?)\"", self.htmlwithlink).group(1) - return file_url - else: - return False + form_content = re.search(r"\s*)*?\n", self.html[0]).group(0) + form_posts = re.findall(r"", form_content) + self.html[1] = self.req.load(self.url, post=form_posts, cookies=True) + file_url = re.search("a href=\"(http://hotfile\.com/get/\S*?)\"", self.html[1]).group(1) + return file_url def get_file_name(self): - if self.html == None: - self.download_html() - if not self.want_reconnect: - file_name = re.search('Downloading\s(.*?)', self.html).group(1) - return file_name - else: - return self.parent.url + file_name = re.search('Downloading\s(.*?)', self.html[0]).group(1) + return file_name def file_exists(self): - """ returns True or False - """ - if self.html == None: - self.download_html() - if re.search(r"Such file does not exist or it has been removed for infringement of copyrights.", self.html) != None: + if re.search(r"Such file does not exist or it has been removed for infringement of copyrights.", self.html[0]) != None: return False - else: - return True + return True def get_wait_time(self): free_limit_pattern = re.compile(r"timerend=d\.getTime\(\)\+(\d+);") - matches = free_limit_pattern.findall(self.html) + matches = free_limit_pattern.findall(self.html[0]) if matches: for match in matches: if int(match) == 60000: @@ -97,14 +82,3 @@ class HotfileCom(Plugin): self.want_reconnect = True return True self.time_plus_wait = time() + 65 - - def get_download_page(self): - herewego = re.search(r"\s*)*?\n", self.html).group(0) - all_the_tuples = re.findall(r"", herewego) - - self.htmlwithlink = self.req.load(self.url, None, all_the_tuples) - - def proceed(self, url, location): - - self.req.download(url, location) - -- cgit v1.2.3