diff options
author | mkaay <mkaay@mkaay.de> | 2010-05-04 18:14:58 +0200 |
---|---|---|
committer | mkaay <mkaay@mkaay.de> | 2010-05-04 18:14:58 +0200 |
commit | 74f2fa861eb59ec1675de8a217b0265ec927815b (patch) | |
tree | 4582320cc59afe8fdcfd1ef12422ccdd6608f71b /module/Plugin.py | |
parent | config dir fix (diff) | |
download | pyload-74f2fa861eb59ec1675de8a217b0265ec927815b.tar.xz |
better threadmanager
Diffstat (limited to 'module/Plugin.py')
-rw-r--r-- | module/Plugin.py | 185 |
1 files changed, 0 insertions, 185 deletions
diff --git a/module/Plugin.py b/module/Plugin.py deleted file mode 100644 index 1428e6235..000000000 --- a/module/Plugin.py +++ /dev/null @@ -1,185 +0,0 @@ -# -*- coding: utf-8 -*- - -""" - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, - or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - See the GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, see <http://www.gnu.org/licenses/>. - - @author: RaNaN, spoob, mkaay -""" - -import logging -import re -from os.path import exists -from os.path import join - -from time import sleep -import sys -from os.path import exists - -from module.network.Request import Request -from os import makedirs - -from module.download_thread import CaptchaError - -class Plugin(): - - def __init__(self, parent): - self.configparser = parent.core.parser_plugins - self.config = {} - props = {} - props['name'] = "BasePlugin" - props['version'] = "0.3" - props['pattern'] = None - props['type'] = "hoster" - props['description'] = """Base Plugin""" - props['author_name'] = ("RaNaN", "spoob", "mkaay") - props['author_mail'] = ("RaNaN@pyload.org", "spoob@pyload.org", "mkaay@mkaay.de") - self.props = props - self.parent = parent - self.req = Request() - self.html = 0 - self.time_plus_wait = 0 #time() + wait in seconds - self.want_reconnect = False - self.multi_dl = True - self.ocr = None #captcha reader instance - self.logger = logging.getLogger("log") - self.decryptNow = True - self.pyfile = self.parent - - def prepare(self, thread): - self.want_reconnect = False - self.pyfile.status.exists = self.file_exists() - - if not self.pyfile.status.exists: - return False - - self.pyfile.status.filename = self.get_file_name() - self.pyfile.status.waituntil = self.time_plus_wait - self.pyfile.status.url = self.get_file_url() - self.pyfile.status.want_reconnect = self.want_reconnect - thread.wait(self.parent) - - return True - - def set_parent_status(self): - """ sets all available Statusinfos about a File in self.parent.status - """ - pass - - def download_html(self): - """ gets the url from self.parent.url saves html in self.html and parses - """ - self.html = "" - - def file_exists(self): - """ returns True or False - """ - if re.search(r"(?!http://).*\.(dlc|ccf|rsdf|txt)", self.parent.url): - return exists(self.parent.url) - header = self.load(self.parent.url, just_header=True) - try: - if re.search(r"HTTP/1.1 404 Not Found", header): - return False - except: - pass - return True - - def get_file_url(self): - """ returns the absolute downloadable filepath - """ - return self.parent.url - - def get_file_name(self): - try: - return re.findall("([^\/=]+)", self.parent.url)[-1] - except: - return self.parent.url[:20] - - def wait_until(self): - if self.html != None: - self.download_html() - return self.time_plus_wait - - def proceed(self, url, location): - self.download(url, location) - - def set_config(self): - for k, v in self.config.items(): - self.configparser.set(self.props['name'], {"option": k}, v) - - def remove_config(self, option): - self.configparser.remove(self.props['name'], option) - - def get_config(self, value, default=None): - self.configparser.loadData() - return self.configparser.get(self.props['name'], value, default=default) - - def read_config(self): - self.configparser.loadData() - try: - self.verify_config() - self.config = self.configparser.getConfig()[self.props['name']] - except: - pass - - def verify_config(self): - pass - - def init_ocr(self): - modul = __import__("module.plugins.captcha." + self.props['name'], fromlist=['captcha']) - captchaClass = getattr(modul, self.props['name']) - self.ocr = captchaClass() - - def __call__(self): - return self.props['name'] - - def check_file(self, local_file): - """ - return codes: - 0 - checksum ok - 1 - checksum wrong - 5 - can't get checksum - 10 - not implemented - 20 - unknown error - """ - return (True, 10) - - def waitForCaptcha(self, captchaData, imgType): - captchaManager = self.parent.core.captchaManager - task = captchaManager.newTask(self) - task.setCaptcha(captchaData, imgType) - task.setWaiting() - while not task.getStatus() == "done": - if not self.parent.core.isGUIConnected(): - task.removeTask() - raise CaptchaError - sleep(1) - result = task.getResult() - task.removeTask() - return result - - def load(self, url, get={}, post={}, ref=True, cookies=True, just_header=False): - return self.req.load(url, get, post, ref, cookies, just_header) - - def download(self, url, file_name, get={}, post={}, ref=True, cookies=True): - download_folder = self.parent.core.config['general']['download_folder'] - if self.pyfile.package.data["package_name"] != (self.parent.core.config['general']['link_file']) and self.parent.core.xmlconfig.get("general", "folder_per_package", False): - self.pyfile.folder = self.pyfile.package.data["package_name"] - location = join(download_folder, self.pyfile.folder.decode(sys.getfilesystemencoding())) - if not exists(location): makedirs(location) - file_path = join(location.decode(sys.getfilesystemencoding()), self.pyfile.status.filename.decode(sys.getfilesystemencoding())) - else: - file_path = join(download_folder, self.pyfile.status.filename.decode(sys.getfilesystemencoding())) - file_path = join(download_folder, self.pyfile.status.filename.decode(sys.getfilesystemencoding())) - - self.pyfile.status.filename = self.req.download(url, file_path, get, post, ref, cookies) |