diff options
Diffstat (limited to 'module/plugins/hooks')
31 files changed, 156 insertions, 203 deletions
diff --git a/module/plugins/hooks/AndroidPhoneNotify.py b/module/plugins/hooks/AndroidPhoneNotify.py index 60e9297e1..6ac250e7b 100644 --- a/module/plugins/hooks/AndroidPhoneNotify.py +++ b/module/plugins/hooks/AndroidPhoneNotify.py @@ -8,7 +8,7 @@ from module.plugins.internal.Addon import Addon, Expose class AndroidPhoneNotify(Addon): __name__ = "AndroidPhoneNotify" __type__ = "hook" - __version__ = "0.11" + __version__ = "0.12" __status__ = "testing" __config__ = [("activated" , "bool", "Activated" , False), diff --git a/module/plugins/hooks/AntiStandby.py b/module/plugins/hooks/AntiStandby.py index aa7a028a5..5ad95d6e8 100644 --- a/module/plugins/hooks/AntiStandby.py +++ b/module/plugins/hooks/AntiStandby.py @@ -13,7 +13,7 @@ except ImportError: pass from module.plugins.internal.Addon import Addon, Expose -from module.utils import fs_encode, save_join as fs_join +from module.plugins.internal.utils import encode, fs_join class Kernel32(object): @@ -27,7 +27,7 @@ class Kernel32(object): class AntiStandby(Addon): __name__ = "AntiStandby" __type__ = "hook" - __version__ = "0.12" + __version__ = "0.13" __status__ = "testing" __config__ = [("activated", "bool", "Activated" , True ), @@ -43,8 +43,6 @@ class AntiStandby(Addon): TMP_FILE = ".antistandby" - PERIODICAL_INTERVAL = 5 - def init(self): self.pid = None @@ -155,7 +153,7 @@ class AntiStandby(Addon): def max_mtime(self, path): return max(0, 0, *(os.path.getmtime(fs_join(root, file)) - for root, dirs, files in os.walk(fs_encode(path), topdown=False) + for root, dirs, files in os.walk(encode(path), topdown=False) for file in files)) @@ -168,8 +166,8 @@ class AntiStandby(Addon): not self.pyload.threadManager.getActiveFiles()): return - download_folder = self.pyload.config.get("general", "download_folder") - if (self.max_mtime(download_folder) - self.mtime) < self.interval: + dl_folder = self.pyload.config.get("general", "download_folder") + if (self.max_mtime(dl_folder) - self.mtime) < self.interval: return self.touch(self.TMP_FILE) diff --git a/module/plugins/hooks/AntiVirus.py b/module/plugins/hooks/AntiVirus.py index c68e86c77..b9a7e93bf 100644 --- a/module/plugins/hooks/AntiVirus.py +++ b/module/plugins/hooks/AntiVirus.py @@ -11,13 +11,13 @@ except ImportError: from module.plugins.internal.Addon import Addon, Expose, threaded from module.plugins.internal.Plugin import exists -from module.utils import fs_encode, save_join as fs_join +from module.plugins.internal.utils import encode, fs_join class AntiVirus(Addon): __name__ = "AntiVirus" __type__ = "hook" - __version__ = "0.14" + __version__ = "0.15" __status__ = "testing" #@TODO: add trash option (use Send2Trash lib) @@ -39,8 +39,8 @@ class AntiVirus(Addon): @Expose @threaded def scan(self, pyfile, thread): - avfile = fs_encode(self.get_config('avfile')) - avargs = fs_encode(self.get_config('avargs').strip()) + avfile = encode(self.get_config('avfile')) + avargs = encode(self.get_config('avargs').strip()) if not os.path.isfile(avfile): self.fail(_("Antivirus executable not found")) @@ -48,12 +48,12 @@ class AntiVirus(Addon): scanfolder = self.get_config('avtarget') is "folder" if scanfolder: - download_folder = self.pyload.config.get("general", "download_folder") - package_folder = pyfile.package().folder if self.pyload.config.get("general", "folder_per_package") else "" - target = fs_join(download_folder, package_folder, pyfile.name) - target_repr = "Folder: " + package_folder or download_folder + dl_folder = self.pyload.config.get("general", "download_folder") + package_folder = pyfile.package().folder if self.pyload.config.get("general", "folder_per_package") else "" + target = fs_join(dl_folder, package_folder, pyfile.name) + target_repr = "Folder: " + package_folder or dl_folder else: - target = fs_encode(pyfile.plugin.last_download) + target = encode(pyfile.plugin.last_download) target_repr = "File: " + os.path.basename(pyfile.plugin.last_download) if not exists(target): diff --git a/module/plugins/hooks/BypassCaptcha.py b/module/plugins/hooks/BypassCaptcha.py index df8562431..581d2f6dd 100644 --- a/module/plugins/hooks/BypassCaptcha.py +++ b/module/plugins/hooks/BypassCaptcha.py @@ -28,7 +28,7 @@ class BypassCaptchaException(Exception): class BypassCaptcha(Addon): __name__ = "BypassCaptcha" __type__ = "hook" - __version__ = "0.08" + __version__ = "0.09" __status__ = "testing" __config__ = [("activated" , "bool" , "Activated" , False), diff --git a/module/plugins/hooks/Captcha9Kw.py b/module/plugins/hooks/Captcha9Kw.py index b2883534d..3d2861bbf 100644 --- a/module/plugins/hooks/Captcha9Kw.py +++ b/module/plugins/hooks/Captcha9Kw.py @@ -14,7 +14,7 @@ from module.plugins.internal.Addon import Addon, threaded class Captcha9Kw(Addon): __name__ = "Captcha9Kw" __type__ = "hook" - __version__ = "0.30" + __version__ = "0.31" __status__ = "testing" __config__ = [("activated" , "bool" , "Activated" , False ), diff --git a/module/plugins/hooks/CaptchaBrotherhood.py b/module/plugins/hooks/CaptchaBrotherhood.py index 24254ffbb..5411322de 100644 --- a/module/plugins/hooks/CaptchaBrotherhood.py +++ b/module/plugins/hooks/CaptchaBrotherhood.py @@ -38,7 +38,7 @@ class CaptchaBrotherhoodException(Exception): class CaptchaBrotherhood(Addon): __name__ = "CaptchaBrotherhood" __type__ = "hook" - __version__ = "0.10" + __version__ = "0.11" __status__ = "testing" __config__ = [("activated" , "bool" , "Activated" , False), diff --git a/module/plugins/hooks/Checksum.py b/module/plugins/hooks/Checksum.py index 4d0493212..cf5ed2147 100644 --- a/module/plugins/hooks/Checksum.py +++ b/module/plugins/hooks/Checksum.py @@ -8,7 +8,7 @@ import re import zlib from module.plugins.internal.Addon import Addon -from module.utils import save_join as fs_join, fs_encode +from module.plugins.internal.utils import encode, fs_join def compute_checksum(local_file, algorithm): @@ -38,7 +38,7 @@ def compute_checksum(local_file, algorithm): class Checksum(Addon): __name__ = "Checksum" __type__ = "hook" - __version__ = "0.22" + __version__ = "0.23" __status__ = "testing" __config__ = [("activated" , "bool" , "Activated" , False ), @@ -103,9 +103,9 @@ class Checksum(Addon): if not pyfile.plugin.last_download: self.check_failed(pyfile, None, "No file downloaded") - local_file = fs_encode(pyfile.plugin.last_download) - # download_folder = self.pyload.config.get("general", "download_folder") - # local_file = fs_encode(fs_join(download_folder, pyfile.package().folder, pyfile.name)) + local_file = encode(pyfile.plugin.last_download) + # dl_folder = self.pyload.config.get("general", "download_folder") + # local_file = encode(fs_join(dl_folder, pyfile.package().folder, pyfile.name)) if not os.path.isfile(local_file): self.check_failed(pyfile, None, "File does not exist") @@ -166,7 +166,7 @@ class Checksum(Addon): def package_finished(self, pypack): - download_folder = fs_join(self.pyload.config.get("general", "download_folder"), pypack.folder, "") + dl_folder = fs_join(self.pyload.config.get("general", "download_folder"), pypack.folder, "") for link in pypack.getChildren().values(): file_type = os.path.splitext(link['name'])[1][1:].lower() @@ -174,7 +174,7 @@ class Checksum(Addon): if file_type not in self.formats: continue - hash_file = fs_encode(fs_join(download_folder, link['name'])) + hash_file = encode(fs_join(dl_folder, link['name'])) if not os.path.isfile(hash_file): self.log_warning(_("File not found"), link['name']) continue @@ -186,7 +186,7 @@ class Checksum(Addon): data = m.groupdict() self.log_debug(link['name'], data) - local_file = fs_encode(fs_join(download_folder, data['NAME'])) + local_file = encode(fs_join(dl_folder, data['NAME'])) algorithm = self.methods.get(file_type, file_type) checksum = compute_checksum(local_file, algorithm) diff --git a/module/plugins/hooks/ClickNLoad.py b/module/plugins/hooks/ClickNLoad.py index fa99ac12c..722e4fbe0 100644 --- a/module/plugins/hooks/ClickNLoad.py +++ b/module/plugins/hooks/ClickNLoad.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- import socket +import threading import time try: @@ -8,8 +9,6 @@ try: except ImportError: pass -from threading import Lock - from module.plugins.internal.Addon import Addon, threaded @@ -22,14 +21,13 @@ def forward(source, destination): bufdata = source.recv(bufsize) finally: destination.shutdown(socket.SHUT_WR) - #: destination.close() #@TODO: IPv6 support class ClickNLoad(Addon): __name__ = "ClickNLoad" __type__ = "hook" - __version__ = "0.48" + __version__ = "0.49" __status__ = "testing" __config__ = [("activated", "bool" , "Activated" , True ), @@ -51,7 +49,7 @@ class ClickNLoad(Addon): webport = self.pyload.config.get("webinterface", "port") cnlport = self.get_config('port') - self.proxy(ip, webport, cnlport) + self.pyload.scheduler.addJob(5, self.proxy, [ip, webport, cnlport], threaded=False) @threaded @@ -69,13 +67,11 @@ class ClickNLoad(Addon): @threaded def proxy(self, ip, webport, cnlport): - time.sleep(10) #@TODO: Remove in 0.4.10 (implement addon delay on startup) - self.log_info(_("Proxy listening on %s:%s") % (ip or "0.0.0.0", cnlport)) self._server(ip, webport, cnlport) - lock = Lock() + lock = threading.Lock() lock.acquire() lock.acquire() diff --git a/module/plugins/hooks/DeathByCaptcha.py b/module/plugins/hooks/DeathByCaptcha.py index 00d6453a4..229c85791 100644 --- a/module/plugins/hooks/DeathByCaptcha.py +++ b/module/plugins/hooks/DeathByCaptcha.py @@ -8,7 +8,7 @@ import time from base64 import b64encode -from module.common.json_layer import json_loads +from module.plugins.internal.utils import json from module.network.HTTPRequest import BadHeader from module.network.RequestFactory import getRequest as get_request from module.plugins.internal.Addon import Addon, threaded @@ -51,7 +51,7 @@ class DeathByCaptchaException(Exception): class DeathByCaptcha(Addon): __name__ = "DeathByCaptcha" __type__ = "hook" - __version__ = "0.08" + __version__ = "0.09" __status__ = "testing" __config__ = [("activated" , "bool" , "Activated" , False), @@ -80,13 +80,13 @@ class DeathByCaptcha(Addon): res = None try: - json = self.load("%s%s" % (self.API_URL, api), + html = self.load("%s%s" % (self.API_URL, api), post=post, multipart=multipart, req=req) - self.log_debug(json) - res = json_loads(json) + self.log_debug(html) + res = json.loads(html) if "error" in res: raise DeathByCaptchaException(res['error']) @@ -94,14 +94,18 @@ class DeathByCaptcha(Addon): raise DeathByCaptchaException(str(res)) except BadHeader, e: - if 403 is e.code: + if e.code is 403: raise DeathByCaptchaException('not-logged-in') - elif 413 is e.code: + + elif e.code is 413: raise DeathByCaptchaException('invalid-captcha') - elif 503 is e.code: + + elif e.code is 503: raise DeathByCaptchaException('service-overload') + elif e.code in (400, 405): raise DeathByCaptchaException('invalid-request') + else: raise diff --git a/module/plugins/hooks/DeleteFinished.py b/module/plugins/hooks/DeleteFinished.py index e72439c0a..17b85959a 100644 --- a/module/plugins/hooks/DeleteFinished.py +++ b/module/plugins/hooks/DeleteFinished.py @@ -7,7 +7,7 @@ from module.plugins.internal.Addon import Addon class DeleteFinished(Addon): __name__ = "DeleteFinished" __type__ = "hook" - __version__ = "1.16" + __version__ = "1.17" __status__ = "testing" __config__ = [("activated" , "bool", "Activated" , False), @@ -22,10 +22,6 @@ class DeleteFinished(Addon): PERIODICAL_INTERVAL = 1 * 60 * 60 #: 1 hour - def activate(self): - self.start_periodical() - - def periodical(self): if not self.info['sleep']: deloffline = self.get_config('deloffline') @@ -43,7 +39,7 @@ class DeleteFinished(Addon): def activate(self): self.info['sleep'] = True - self.interval = max(self.PERIODICAL_INTERVAL, self.get_config('interval') * 60 * 60) + self.set_interval(self.get_config('interval') * 60 * 60) self.add_event('package_finished', self.wakeup) diff --git a/module/plugins/hooks/DownloadScheduler.py b/module/plugins/hooks/DownloadScheduler.py index 8454438a1..9c644ab20 100644 --- a/module/plugins/hooks/DownloadScheduler.py +++ b/module/plugins/hooks/DownloadScheduler.py @@ -9,7 +9,7 @@ from module.plugins.internal.Addon import Addon class DownloadScheduler(Addon): __name__ = "DownloadScheduler" __type__ = "hook" - __version__ = "0.24" + __version__ = "0.25" __status__ = "testing" __config__ = [("activated", "bool", "Activated" , False ), diff --git a/module/plugins/hooks/ExpertDecoders.py b/module/plugins/hooks/ExpertDecoders.py index e94a966f2..55c07d4b9 100644 --- a/module/plugins/hooks/ExpertDecoders.py +++ b/module/plugins/hooks/ExpertDecoders.py @@ -15,7 +15,7 @@ from module.plugins.internal.Addon import Addon, threaded class ExpertDecoders(Addon): __name__ = "ExpertDecoders" __type__ = "hook" - __version__ = "0.06" + __version__ = "0.07" __status__ = "testing" __config__ = [("activated" , "bool" , "Activated" , False), diff --git a/module/plugins/hooks/ExternalScripts.py b/module/plugins/hooks/ExternalScripts.py index 3459eb3aa..8914cfa6c 100644 --- a/module/plugins/hooks/ExternalScripts.py +++ b/module/plugins/hooks/ExternalScripts.py @@ -3,26 +3,22 @@ import os import subprocess -from module.plugins.internal.Plugin import encode from module.plugins.internal.Addon import Addon, Expose -from module.utils import fs_encode, save_join as fs_join +from module.plugins.internal.utils import encode, fs_join class ExternalScripts(Addon): __name__ = "ExternalScripts" __type__ = "hook" - __version__ = "0.49" + __version__ = "0.51" __status__ = "testing" - __config__ = [("activated", "bool", "Activated" , True ), - ("lock" , "bool", "Wait script ending", False)] + __config__ = [("activated", "bool", "Activated" , True ), + ("lock" , "bool", "Wait for script to terminate", False)] __description__ = """Run external scripts""" __license__ = "GPLv3" - __authors__ = [("mkaay" , "mkaay@mkaay.de" ), - ("RaNaN" , "ranan@pyload.org" ), - ("spoob" , "spoob@pyload.org" ), - ("Walter Purcaro", "vuolter@gmail.com")] + __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] def init(self): @@ -85,7 +81,10 @@ class ExternalScripts(Addon): @Expose - def call(self, script, args=[], lock=False): + def call(self, script, args=[], lock=None): + if lock is None: + lock = self.get_config('lock') + try: script = os.path.abspath(script) args = [script] + map(lambda arg: encode(arg) if isinstance(arg, basestring) else encode(str(arg)), args) @@ -100,153 +99,118 @@ class ExternalScripts(Addon): e or _("Unknown error")) + def _call(self, folder, args=[], lock=None): + for script in self.scripts[folder]: + self.call(script, args, lock) + + def pyload_start(self): - lock = self.get_config('lock') - for script in self.scripts['pyload_start']: - self.call(script, lock=lock) + self._call('pyload_start') def exit(self): - lock = self.get_config('lock') - for script in self.scripts['pyload_restart' if self.pyload.do_restart else 'pyload_stop']: - self.call(script, lock=True) + folder = "pyload_restart" if self.pyload.do_restart else "pyload_stop" + self._call(folder, lock=True) def before_reconnect(self, ip): - lock = self.get_config('lock') - for script in self.scripts['before_reconnect']: - args = [ip] - self.call(script, args, lock) + self._call("before_reconnect", [ip]) def after_reconnect(self, ip, oldip): - lock = self.get_config('lock') - for script in self.scripts['after_reconnect']: - args = [ip, oldip] - self.call(script, args, lock) + self._call("after_reconnect", [ip, oldip]) def download_preparing(self, pyfile): - lock = self.get_config('lock') - for script in self.scripts['download_preparing']: - args = [pyfile.id, pyfile.name, None, pyfile.pluginname, pyfile.url] - self.call(script, args, lock) + args = [pyfile.id, pyfile.name, None, pyfile.pluginname, pyfile.url] + self._call("download_preparing", args) def download_failed(self, pyfile): - lock = self.get_config('lock') - if self.pyload.config.get("general", "folder_per_package"): - download_folder = fs_join(self.pyload.config.get("general", "download_folder"), pyfile.package().folder) + dl_folder = fs_join(self.pyload.config.get("general", "download_folder"), pyfile.package().folder) else: - download_folder = self.pyload.config.get("general", "download_folder") + dl_folder = self.pyload.config.get("general", "download_folder") - for script in self.scripts['download_failed']: - file = fs_join(download_folder, pyfile.name) - args = [script, pyfile.id, pyfile.name, file, pyfile.pluginname, pyfile.url] - self.call(script, args, lock) + file = fs_join(dl_folder, pyfile.name) + args = [script, pyfile.id, pyfile.name, file, pyfile.pluginname, pyfile.url] + self._call("download_failed", args) def download_finished(self, pyfile): - lock = self.get_config('lock') - if self.pyload.config.get("general", "folder_per_package"): - download_folder = fs_join(self.pyload.config.get("general", "download_folder"), pyfile.package().folder) + dl_folder = fs_join(self.pyload.config.get("general", "download_folder"), pyfile.package().folder) else: - download_folder = self.pyload.config.get("general", "download_folder") + dl_folder = self.pyload.config.get("general", "download_folder") - for script in self.scripts['download_finished']: - file = fs_join(download_folder, pyfile.name) - args = [pyfile.id, pyfile.name, file, pyfile.pluginname, pyfile.url] - self.call(script, args, lock) + file = fs_join(dl_folder, pyfile.name) + args = [pyfile.id, pyfile.name, file, pyfile.pluginname, pyfile.url] + self._call("download_finished", args) def archive_extract_failed(self, pyfile, archive): - lock = self.get_config('lock') - for script in self.scripts['archive_extract_failed']: - args = [pyfile.id, pyfile.name, archive.filename, archive.out, archive.files] - self.call(script, args, lock) + args = [pyfile.id, pyfile.name, archive.filename, archive.out, archive.files] + self._call("archive_extract_failed", args) def archive_extracted(self, pyfile, archive): - lock = self.get_config('lock') - for script in self.scripts['archive_extracted']: - args = [script, pyfile.id, pyfile.name, archive.filename, archive.out, archive.files] - self.call(script, args, lock) + args = [script, pyfile.id, pyfile.name, archive.filename, archive.out, archive.files] + self._call("archive_extracted", args) def package_finished(self, pypack): - lock = self.get_config('lock') - if self.pyload.config.get("general", "folder_per_package"): - download_folder = fs_join(self.pyload.config.get("general", "download_folder"), pypack.folder) + dl_folder = fs_join(self.pyload.config.get("general", "download_folder"), pypack.folder) else: - download_folder = self.pyload.config.get("general", "download_folder") + dl_folder = self.pyload.config.get("general", "download_folder") - for script in self.scripts['package_finished']: - args = [pypack.id, pypack.name, download_folder, pypack.password] - self.call(script, args, lock) + args = [pypack.id, pypack.name, dl_folder, pypack.password] + self._call("package_finished", args) def package_deleted(self, pid): - lock = self.get_config('lock') pack = self.pyload.api.getPackageInfo(pid) if self.pyload.config.get("general", "folder_per_package"): - download_folder = fs_join(self.pyload.config.get("general", "download_folder"), pack.folder) + dl_folder = fs_join(self.pyload.config.get("general", "download_folder"), pack.folder) else: - download_folder = self.pyload.config.get("general", "download_folder") + dl_folder = self.pyload.config.get("general", "download_folder") - for script in self.scripts['package_deleted']: - args = [pack.id, pack.name, download_folder, pack.password] - self.call(script, args, lock) + args = [pack.id, pack.name, dl_folder, pack.password] + self._call("package_deleted", args) def package_extract_failed(self, pypack): - lock = self.get_config('lock') - if self.pyload.config.get("general", "folder_per_package"): - download_folder = fs_join(self.pyload.config.get("general", "download_folder"), pypack.folder) + dl_folder = fs_join(self.pyload.config.get("general", "download_folder"), pypack.folder) else: - download_folder = self.pyload.config.get("general", "download_folder") + dl_folder = self.pyload.config.get("general", "download_folder") - for script in self.scripts['package_extract_failed']: - args = [pypack.id, pypack.name, download_folder, pypack.password] - self.call(script, args, lock) + args = [pypack.id, pypack.name, dl_folder, pypack.password] + self._call("package_extract_failed", args) def package_extracted(self, pypack): - lock = self.get_config('lock') - if self.pyload.config.get("general", "folder_per_package"): - download_folder = fs_join(self.pyload.config.get("general", "download_folder"), pypack.folder) + dl_folder = fs_join(self.pyload.config.get("general", "download_folder"), pypack.folder) else: - download_folder = self.pyload.config.get("general", "download_folder") + dl_folder = self.pyload.config.get("general", "download_folder") - for script in self.scripts['package_extracted']: - args = [pypack.id, pypack.name, download_folder] - self.call(script, args, lock) + args = [pypack.id, pypack.name, dl_folder] + self._call("package_extracted", args) def all_downloads_finished(self): - lock = self.get_config('lock') - for script in self.scripts['all_downloads_finished']: - self.call(script, lock=lock) + self._call("all_downloads_finished") def all_downloads_processed(self): - lock = self.get_config('lock') - for script in self.scripts['all_downloads_processed']: - self.call(script, lock=lock) + self._call("all_downloads_processed") def all_archives_extracted(self): - lock = self.get_config('lock') - for script in self.scripts['all_archives_extracted']: - self.call(script, lock=lock) + self._call("all_archives_extracted") def all_archives_processed(self): - lock = self.get_config('lock') - for script in self.scripts['all_archives_processed']: - self.call(script, lock=lock) + self._call("all_archives_processed") diff --git a/module/plugins/hooks/ExtractArchive.py b/module/plugins/hooks/ExtractArchive.py index 034a4b81a..93107810c 100644 --- a/module/plugins/hooks/ExtractArchive.py +++ b/module/plugins/hooks/ExtractArchive.py @@ -50,9 +50,8 @@ except ImportError: pass from module.plugins.internal.Addon import Addon, Expose, threaded -from module.plugins.internal.Plugin import exists, replace_patterns from module.plugins.internal.Extractor import ArchiveError, CRCError, PasswordError -from module.utils import fs_encode, save_join as fs_join, uniqify +from module.plugins.internal.utils import encode, exists, fs_join, replace_patterns, uniqify class ArchiveQueue(object): @@ -99,7 +98,7 @@ class ArchiveQueue(object): class ExtractArchive(Addon): __name__ = "ExtractArchive" __type__ = "hook" - __version__ = "1.52" + __version__ = "1.53" __status__ = "testing" __config__ = [("activated" , "bool" , "Activated" , True ), @@ -117,7 +116,7 @@ class ExtractArchive(Addon): ("excludefiles" , "str" , "Don't extract the following files" , "*.nfo,*.DS_Store,index.dat,thumb.db" ), ("recursive" , "bool" , "Extract archives in archives" , True ), ("waitall" , "bool" , "Run after all downloads was processed" , False ), - ("renice" , "int" , "CPU priority" , 0 )] + ("priority" , "int" , "Process priority" , 0 )] __description__ = """Extract different kind of archives""" __license__ = "GPLv3" @@ -242,9 +241,8 @@ class ExtractArchive(Addon): subfolder = self.get_config('subfolder') fullpath = self.get_config('fullpath') overwrite = self.get_config('overwrite') - renice = self.get_config('renice') + priority = self.get_config('priority') recursive = self.get_config('recursive') - delete = self.get_config('delete') keepbroken = self.get_config('keepbroken') extensions = [x.lstrip('.').lower() for x in toList(self.get_config('extensions'))] @@ -256,7 +254,7 @@ class ExtractArchive(Addon): #: Reload from txt file self.reload_passwords() - download_folder = self.pyload.config.get("general", "download_folder") + dl_folder = self.pyload.config.get("general", "download_folder") #: Iterate packages -> extractors -> targets for pid in ids: @@ -269,7 +267,7 @@ class ExtractArchive(Addon): self.log_info(_("Check package: %s") % pypack.name) #: Determine output folder - out = fs_join(download_folder, pypack.folder, destination, "") #: Force trailing slash + out = fs_join(dl_folder, pypack.folder, destination, "") #: Force trailing slash if subfolder: out = fs_join(out, pypack.folder) @@ -279,7 +277,7 @@ class ExtractArchive(Addon): matched = False success = True - files_ids = dict((pylink['name'], ((fs_join(download_folder, pypack.folder, pylink['name'])), pylink['id'], out)) for pylink \ + files_ids = dict((pylink['name'], ((fs_join(dl_folder, pypack.folder, pylink['name'])), pylink['id'], out)) for pylink \ in sorted(pypack.getChildren().values(), key=lambda k: k['name'])).values() #: Remove duplicates #: Check as long there are unseen files @@ -312,8 +310,7 @@ class ExtractArchive(Addon): fullpath, overwrite, excludefiles, - renice, - delete, + priority, keepbroken, fid) @@ -341,7 +338,7 @@ class ExtractArchive(Addon): self.set_permissions(file) for filename in new_files: - file = fs_encode(fs_join(os.path.dirname(archive.filename), filename)) + file = encode(fs_join(os.path.dirname(archive.filename), filename)) if not exists(file): self.log_debug("New file %s does not exists" % filename) continue @@ -458,7 +455,7 @@ class ExtractArchive(Addon): deltotrash = self.get_config('deltotrash') for f in delfiles: - file = fs_encode(f) + file = encode(f) if not exists(file): continue @@ -526,7 +523,7 @@ class ExtractArchive(Addon): try: passwords = [] - file = fs_encode(self.get_config('passwordfile')) + file = encode(self.get_config('passwordfile')) with open(file) as f: for pw in f.read().splitlines(): passwords.append(pw) @@ -555,7 +552,7 @@ class ExtractArchive(Addon): try: self.passwords = uniqify([password] + self.passwords) - file = fs_encode(self.get_config('passwordfile')) + file = encode(self.get_config('passwordfile')) with open(file, "wb") as f: for pw in self.passwords: f.write(pw + '\n') diff --git a/module/plugins/hooks/HotFolder.py b/module/plugins/hooks/HotFolder.py index c7631a1fc..c89083fb1 100644 --- a/module/plugins/hooks/HotFolder.py +++ b/module/plugins/hooks/HotFolder.py @@ -7,13 +7,13 @@ import shutil import time from module.plugins.internal.Addon import Addon -from module.utils import fs_encode, save_join as fs_join +from module.plugins.internal.utils import encode, fs_join class HotFolder(Addon): __name__ = "HotFolder" __type__ = "hook" - __version__ = "0.19" + __version__ = "0.20" __status__ = "testing" __config__ = [("activated", "bool", "Activated" , False ), @@ -32,8 +32,8 @@ class HotFolder(Addon): def periodical(self): - folder = fs_encode(self.get_config('folder')) - file = fs_encode(self.get_config('file')) + folder = encode(self.get_config('folder')) + file = encode(self.get_config('file')) try: if not os.path.isdir(os.path.join(folder, "finished")): diff --git a/module/plugins/hooks/IRCInterface.py b/module/plugins/hooks/IRCInterface.py index 16640df0b..1f337d686 100644 --- a/module/plugins/hooks/IRCInterface.py +++ b/module/plugins/hooks/IRCInterface.py @@ -18,7 +18,7 @@ from module.utils import formatSize class IRCInterface(Thread, Addon): __name__ = "IRCInterface" __type__ = "hook" - __version__ = "0.17" + __version__ = "0.18" __status__ = "testing" __config__ = [("activated", "bool", "Activated" , False ), diff --git a/module/plugins/hooks/ImageTyperz.py b/module/plugins/hooks/ImageTyperz.py index 86b1dae2b..656ad0c25 100644 --- a/module/plugins/hooks/ImageTyperz.py +++ b/module/plugins/hooks/ImageTyperz.py @@ -32,7 +32,7 @@ class ImageTyperzException(Exception): class ImageTyperz(Addon): __name__ = "ImageTyperz" __type__ = "hook" - __version__ = "0.08" + __version__ = "0.09" __status__ = "testing" __config__ = [("activated" , "bool" , "Activated" , False), diff --git a/module/plugins/hooks/JustPremium.py b/module/plugins/hooks/JustPremium.py index f4c48cfa9..3f7388020 100644 --- a/module/plugins/hooks/JustPremium.py +++ b/module/plugins/hooks/JustPremium.py @@ -8,7 +8,7 @@ from module.plugins.internal.Addon import Addon class JustPremium(Addon): __name__ = "JustPremium" __type__ = "hook" - __version__ = "0.24" + __version__ = "0.25" __status__ = "testing" __config__ = [("activated", "bool", "Activated" , False), diff --git a/module/plugins/hooks/LinkdecrypterComHook.py b/module/plugins/hooks/LinkdecrypterComHook.py index 1ef5bb72a..f9ab1f3ff 100644 --- a/module/plugins/hooks/LinkdecrypterComHook.py +++ b/module/plugins/hooks/LinkdecrypterComHook.py @@ -8,7 +8,7 @@ from module.plugins.internal.Addon import Addon class LinkdecrypterComHook(Addon): __name__ = "LinkdecrypterCom" __type__ = "hook" - __version__ = "1.08" + __version__ = "1.09" __status__ = "testing" __config__ = [("activated" , "bool" , "Activated" , False), diff --git a/module/plugins/hooks/LogMarker.py b/module/plugins/hooks/LogMarker.py index 0efab602f..4bf8e290a 100644 --- a/module/plugins/hooks/LogMarker.py +++ b/module/plugins/hooks/LogMarker.py @@ -9,7 +9,7 @@ from module.plugins.internal.Plugin import seconds_to_nexthour class LogMarker(Addon): __name__ = "LogMarker" __type__ = "hook" - __version__ = "0.03" + __version__ = "0.04" __status__ = "testing" __config__ = [("activated", "bool", "Activated" , False), diff --git a/module/plugins/hooks/MergeFiles.py b/module/plugins/hooks/MergeFiles.py index a7d6fc7ba..dbe7b1f5f 100644 --- a/module/plugins/hooks/MergeFiles.py +++ b/module/plugins/hooks/MergeFiles.py @@ -6,13 +6,13 @@ import os import re from module.plugins.internal.Addon import Addon, threaded -from module.utils import save_join as fs_join +from module.plugins.internal.utils import fs_join class MergeFiles(Addon): __name__ = "MergeFiles" __type__ = "hook" - __version__ = "0.17" + __version__ = "0.18" __status__ = "testing" __config__ = [("activated", "bool", "Activated", True)] @@ -37,15 +37,15 @@ class MergeFiles(Addon): files[data['name'][:-4]].sort() fid_dict[data['name']] = fid - download_folder = self.pyload.config.get("general", "download_folder") + dl_folder = self.pyload.config.get("general", "download_folder") if self.pyload.config.get("general", "folder_per_package"): - download_folder = fs_join(download_folder, pack.folder) + dl_folder = fs_join(dl_folder, pack.folder) for name, file_list in files.items(): self.log_info(_("Starting merging of"), name) - with open(fs_join(download_folder, name), "wb") as final_file: + with open(fs_join(dl_folder, name), "wb") as final_file: for splitted_file in file_list: self.log_debug("Merging part", splitted_file) @@ -54,9 +54,9 @@ class MergeFiles(Addon): pyfile.setStatus("processing") try: - with open(fs_join(download_folder, splitted_file), "rb") as s_file: + with open(fs_join(dl_folder, splitted_file), "rb") as s_file: size_written = 0 - s_file_size = int(os.path.getsize(os.path.join(download_folder, splitted_file))) + s_file_size = int(os.path.getsize(os.path.join(dl_folder, splitted_file))) while True: f_buffer = s_file.read(self.BUFFER_SIZE) if f_buffer: diff --git a/module/plugins/hooks/MultiHome.py b/module/plugins/hooks/MultiHome.py index 90e8a60d2..353753c1a 100644 --- a/module/plugins/hooks/MultiHome.py +++ b/module/plugins/hooks/MultiHome.py @@ -44,7 +44,7 @@ class Interface(object): class MultiHome(Addon): __name__ = "MultiHome" __type__ = "hook" - __version__ = "0.14" + __version__ = "0.15" __status__ = "testing" __config__ = [("activated" , "bool", "Activated" , False ), diff --git a/module/plugins/hooks/RestartFailed.py b/module/plugins/hooks/RestartFailed.py index 74d570425..0e35c4629 100644 --- a/module/plugins/hooks/RestartFailed.py +++ b/module/plugins/hooks/RestartFailed.py @@ -6,7 +6,7 @@ from module.plugins.internal.Addon import Addon class RestartFailed(Addon): __name__ = "RestartFailed" __type__ = "hook" - __version__ = "1.62" + __version__ = "1.63" __status__ = "testing" __config__ = [("activated", "bool", "Activated" , False), @@ -26,4 +26,4 @@ class RestartFailed(Addon): def activate(self): - self.start_periodical(self.get_config('interval') * 60) + self.set_interval(self.get_config('interval') * 60) diff --git a/module/plugins/hooks/SkipRev.py b/module/plugins/hooks/SkipRev.py index 891d2db6d..6ce1750d3 100644 --- a/module/plugins/hooks/SkipRev.py +++ b/module/plugins/hooks/SkipRev.py @@ -12,7 +12,7 @@ from module.plugins.internal.Addon import Addon class SkipRev(Addon): __name__ = "SkipRev" __type__ = "hook" - __version__ = "0.34" + __version__ = "0.35" __status__ = "testing" __config__ = [("activated", "bool" , "Activated" , False ), diff --git a/module/plugins/hooks/TransmissionRPC.py b/module/plugins/hooks/TransmissionRPC.py index 9df19e320..fa19a5f91 100644 --- a/module/plugins/hooks/TransmissionRPC.py +++ b/module/plugins/hooks/TransmissionRPC.py @@ -5,7 +5,7 @@ import re import pycurl -from module.common.json_layer import json_loads, json_dumps +from module.plugins.internal.utils import json from module.network.HTTPRequest import BadHeader from module.network.RequestFactory import getRequest as get_request from module.plugins.internal.Addon import Addon @@ -14,7 +14,7 @@ from module.plugins.internal.Addon import Addon class TransmissionRPC(Addon): __name__ = "TransmissionRPC" __type__ = "hook" - __version__ = "0.12" + __version__ = "0.13" __status__ = "testing" __pattern__ = r"https?://.+\.torrent|magnet:\?.+" @@ -47,7 +47,7 @@ class TransmissionRPC(Addon): try: response = self.load(transmission_rpc_url, - post=json_dumps({'arguments': {'filename': url}, + post=json.dumps({'arguments': {'filename': url}, 'method' : 'torrent-add', 'tag' : client_request_id}), req=req) @@ -59,7 +59,7 @@ class TransmissionRPC(Addon): req.c.setopt(pycurl.HTTPHEADER, ["X-Transmission-Session-Id: %s" % session_id]) try: response = self.load(transmission_rpc_url, - post=json_dumps({'arguments': {'filename': url}, + post=json.dumps({'arguments': {'filename': url}, 'method' : 'torrent-add', 'tag' : client_request_id}), req=req) @@ -77,7 +77,7 @@ class TransmissionRPC(Addon): return try: - res = json_loads(response) + res = json.loads(response) if "result" in res: self.log_debug("Result: %s" % res['result']) diff --git a/module/plugins/hooks/UnSkipOnFail.py b/module/plugins/hooks/UnSkipOnFail.py index d467b8a01..6842cbc51 100644 --- a/module/plugins/hooks/UnSkipOnFail.py +++ b/module/plugins/hooks/UnSkipOnFail.py @@ -7,7 +7,7 @@ from module.plugins.internal.Addon import Addon class UnSkipOnFail(Addon): __name__ = "UnSkipOnFail" __type__ = "hook" - __version__ = "0.09" + __version__ = "0.10" __status__ = "testing" __config__ = [("activated", "bool", "Activated", True)] diff --git a/module/plugins/hooks/UpdateManager.py b/module/plugins/hooks/UpdateManager.py index 876849953..41c11ed98 100644 --- a/module/plugins/hooks/UpdateManager.py +++ b/module/plugins/hooks/UpdateManager.py @@ -10,7 +10,7 @@ import time from module.plugins.internal.Addon import Expose, Addon, threaded from module.plugins.internal.Plugin import exists -from module.utils import fs_encode, save_join as fs_join +from module.plugins.internal.utils import encode, fs_join class UpdateManager(Addon): @@ -34,9 +34,8 @@ class UpdateManager(Addon): _VERSION = re.compile(r'__version__.*=.*("|\')([\d.]+)') - SERVER_URL = "http://updatemanager.pyload.org" - - PERIODICAL_INTERVAL = 3 * 60 * 60 #: 3 hours + SERVER_URL = "http://updatemanager.pyload.org" + CHECK_INTERVAL = 3 * 60 * 60 #: 3 hours def activate(self): @@ -66,7 +65,6 @@ class UpdateManager(Addon): def all_downloads_processed(self): if self.do_restart is True: - self.log_warning(_("Downloads are done, restarting pyLoad to reload the updated plugins")) self.pyload.api.restart() @@ -79,7 +77,7 @@ class UpdateManager(Addon): return if self.get_config('checkperiod') and \ - time.time() - max(self.PERIODICAL_INTERVAL, self.get_config('checkinterval') * 60 * 60) > self.info['last_check']: + time.time() - max(self.CHECK_INTERVAL, self.get_config('checkinterval') * 60 * 60) > self.info['last_check']: self.update() @@ -129,7 +127,7 @@ class UpdateManager(Addon): get={'v': self.pyload.api.getServerVersion()}) except Exception: - self.log_warning(_("Unable to retrieve server to get updates")) + self.log_warning(_("Unable to connect to the server to retrieve updates")) else: res = html.splitlines() @@ -156,7 +154,7 @@ class UpdateManager(Addon): self.pyload.api.restart() else: self.do_restart = True - self.log_warning(_("Downloads are active, will restart once the download is done")) + self.log_warning(_("pyLoad restart scheduled"), _("Downloads are active, pyLoad restart postponed once the download is done")) self.pyload.api.pauseServer() @@ -170,11 +168,11 @@ class UpdateManager(Addon): exitcode = 0 elif newversion == "None": - self.log_info(_("No new pyLoad version available")) + self.log_info(_("pyLoad is up to date!")) exitcode = self.update_plugins() else: - self.log_info(_("*** New pyLoad Version %s available ***") % newversion) + self.log_info(_("*** New pyLoad %s available ***") % newversion) self.log_info(_("*** Get it here: https://github.com/pyload/pyload/releases ***")) self.info['pyload'] = True exitcode = 3 @@ -202,13 +200,13 @@ class UpdateManager(Addon): if self.pyload.pluginManager.reloadPlugins(updated): exitcode = 1 else: - self.log_warning(_("You have to restart pyLoad to reload the updated plugins")) + self.log_warning(_("You have to restart pyLoad to use the updated plugins")) self.info['plugins'] = True exitcode = 2 self.manager.dispatchEvent("plugin_updated", updated) else: - self.log_info(_("*** No plugin updates available ***")) + self.log_info(_("All plugins are up to date!")) exitcode = 0 #: Exit codes: @@ -315,7 +313,7 @@ class UpdateManager(Addon): folder = type with open(fs_join("userplugins", folder, name + ".py"), "wb") as f: - f.write(fs_encode(content)) + f.write(encode(content)) updated.append((type, name)) else: diff --git a/module/plugins/hooks/UserAgentSwitcher.py b/module/plugins/hooks/UserAgentSwitcher.py index 52f542268..bd51b30bd 100644 --- a/module/plugins/hooks/UserAgentSwitcher.py +++ b/module/plugins/hooks/UserAgentSwitcher.py @@ -9,7 +9,7 @@ from module.plugins.internal.Plugin import encode class UserAgentSwitcher(Addon): __name__ = "UserAgentSwitcher" __type__ = "hook" - __version__ = "0.11" + __version__ = "0.12" __status__ = "testing" __config__ = [("activated" , "bool", "Activated" , True ), diff --git a/module/plugins/hooks/WindowsPhoneNotify.py b/module/plugins/hooks/WindowsPhoneNotify.py index 4343d16f2..e032508c0 100644 --- a/module/plugins/hooks/WindowsPhoneNotify.py +++ b/module/plugins/hooks/WindowsPhoneNotify.py @@ -9,7 +9,7 @@ from module.plugins.internal.Addon import Addon, Expose class WindowsPhoneNotify(Addon): __name__ = "WindowsPhoneNotify" __type__ = "hook" - __version__ = "0.13" + __version__ = "0.14" __status__ = "testing" __config__ = [("activated" , "bool", "Activated" , False), diff --git a/module/plugins/hooks/XFileSharingPro.py b/module/plugins/hooks/XFileSharingPro.py index 92933fb11..75f8323ef 100644 --- a/module/plugins/hooks/XFileSharingPro.py +++ b/module/plugins/hooks/XFileSharingPro.py @@ -8,7 +8,7 @@ from module.plugins.internal.Addon import Addon class XFileSharingPro(Addon): __name__ = "XFileSharingPro" __type__ = "hook" - __version__ = "0.44" + __version__ = "0.46" __status__ = "testing" __config__ = [("activated" , "bool", "Activated" , True ), @@ -23,9 +23,9 @@ class XFileSharingPro(Addon): __authors__ = [("Walter Purcaro", "vuolter@gmail.com")] - regexp = {'hoster' : (r'https?://(?:www\.)?(?:\w+\.)*?(?P<DOMAIN>(?:[\d.]+|[\w\-^_]{3,}(?:\.[a-zA-Z]{2,}){1,2})(?:\:\d+)?)/(?:embed-)?\w{12}(?:\W|$)', + regexp = {'hoster' : (r'https?://(?:www\.)?(?:\w+\.)*(?P<DOMAIN>(?:[\d.]+|[\w\-^_]{3,63}(?:\.[a-zA-Z]{2,}){1,2})(?:\:\d+)?)/(?:embed-)?\w{12}(?:\W|$)', r'https?://(?:[^/]+\.)?(?P<DOMAIN>%s)/(?:embed-)?\w+'), - 'crypter': (r'https?://(?:www\.)?(?:\w+\.)*?(?P<DOMAIN>(?:[\d.]+|[\w\-^_]{3,}(?:\.[a-zA-Z]{2,}){1,2})(?:\:\d+)?)/(?:user|folder)s?/\w+', + 'crypter': (r'https?://(?:www\.)?(?:\w+\.)*(?P<DOMAIN>(?:[\d.]+|[\w\-^_]{3,63}(?:\.[a-zA-Z]{2,}){1,2})(?:\:\d+)?)/(?:user|folder)s?/\w+', r'https?://(?:[^/]+\.)?(?P<DOMAIN>%s)/(?:user|folder)s?/\w+')} BUILTIN_HOSTERS = [#WORKING HOSTERS: diff --git a/module/plugins/hooks/XMPPInterface.py b/module/plugins/hooks/XMPPInterface.py index 811e2f5f4..b8fe14239 100644 --- a/module/plugins/hooks/XMPPInterface.py +++ b/module/plugins/hooks/XMPPInterface.py @@ -12,7 +12,7 @@ from module.plugins.hooks.IRCInterface import IRCInterface class XMPPInterface(IRCInterface, JabberClient): __name__ = "XMPPInterface" __type__ = "hook" - __version__ = "0.13" + __version__ = "0.14" __status__ = "testing" __config__ = [("activated", "bool", "Activated" , False ), |