summaryrefslogtreecommitdiffstats
path: root/pyload/plugins/addons
diff options
context:
space:
mode:
Diffstat (limited to 'pyload/plugins/addons')
-rw-r--r--pyload/plugins/addons/ClickAndLoad.py6
-rw-r--r--pyload/plugins/addons/DeleteFinished.py89
-rw-r--r--pyload/plugins/addons/Ev0InFetcher.py8
-rw-r--r--pyload/plugins/addons/ExtractArchive.py4
-rw-r--r--pyload/plugins/addons/HotFolder.py4
-rw-r--r--pyload/plugins/addons/IRCInterface.py14
-rw-r--r--pyload/plugins/addons/MergeFiles.py10
-rw-r--r--pyload/plugins/addons/MultiHome.py4
-rw-r--r--pyload/plugins/addons/RehostTo.py4
-rw-r--r--pyload/plugins/addons/UpdateManager.py18
-rw-r--r--pyload/plugins/addons/XMPPInterface.py20
11 files changed, 86 insertions, 95 deletions
diff --git a/pyload/plugins/addons/ClickAndLoad.py b/pyload/plugins/addons/ClickAndLoad.py
index 6d6928557..fcc2cf24e 100644
--- a/pyload/plugins/addons/ClickAndLoad.py
+++ b/pyload/plugins/addons/ClickAndLoad.py
@@ -25,7 +25,7 @@ from module.plugins.Addon import Addon
class ClickAndLoad(Addon):
__name__ = "ClickAndLoad"
- __version__ = "0.2"
+ __version__ = "0.21"
__description__ = """Gives abillity to use jd's click and load. depends on webinterface"""
__config__ = [("activated", "bool", "Activated", "True"),
("extern", "bool", "Allow external link adding", "False")]
@@ -43,7 +43,7 @@ class ClickAndLoad(Addon):
thread.start_new_thread(proxy, (self, ip, self.port, 9666))
except:
- self.log.error("ClickAndLoad port already in use.")
+ self.logError("ClickAndLoad port already in use.")
def proxy(self, *settings):
@@ -71,7 +71,7 @@ def server(self, *settings):
errno = e.args[0]
if errno == 98:
- self.core.log.warning(_("Click'N'Load: Port 9666 already in use"))
+ self.logWarning(_("Click'N'Load: Port 9666 already in use"))
return
thread.start_new_thread(server, (self,) + settings)
except:
diff --git a/pyload/plugins/addons/DeleteFinished.py b/pyload/plugins/addons/DeleteFinished.py
index 01cb1b8e1..155158701 100644
--- a/pyload/plugins/addons/DeleteFinished.py
+++ b/pyload/plugins/addons/DeleteFinished.py
@@ -1,6 +1,6 @@
# -*- 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,
@@ -15,79 +15,70 @@
along with this program; if not, see <http://www.gnu.org/licenses/>.
@author: Walter Purcaro
-"""
+'''
from module.database import style
from module.plugins.Hook import Hook
class DeleteFinished(Hook):
- __name__ = "DeleteFinished"
- __version__ = "1.02"
- __description__ = "Automatically delete finished packages from queue"
+ __name__ = 'DeleteFinished'
+ __version__ = '1.09'
+ __description__ = 'Automatically delete all finished packages from queue'
__config__ = [
- ("activated", "bool", "Activated", "False"),
- ("interval", "int", "Delete every (hours)", "72")
+ ('activated', 'bool', 'Activated', 'False'),
+ ('interval', 'int', 'Delete every (hours)', '72'),
+ ('deloffline', 'bool', 'Delete packages with offline links', 'False')
]
- __author_name__ = ("Walter Purcaro")
- __author_mail__ = ("vuolter@gmail.com")
+ __author_name__ = ('Walter Purcaro')
+ __author_mail__ = ('vuolter@gmail.com')
## overwritten methods ##
def periodical(self):
- # self.logDebug("self.periodical")
- if not self.info["sleep"]:
- self.logInfo("self.deleteFinished")
- self.deleteFinished()
- self.info["sleep"] = True
- self.addEvent("packageFinished", self.wakeup)
+ if not self.info['sleep']:
+ deloffline = self.getConfig('deloffline')
+ mode = '0,1,4' if deloffline else '0,4'
+ msg = 'delete all finished packages in queue list (%s packages with offline links)'
+ self.logInfo(msg % ('including' if deloffline else 'excluding'))
+ self.deleteFinished(mode)
+ self.info['sleep'] = True
+ self.addEvent('packageFinished', self.wakeup)
def pluginConfigChanged(self, plugin, name, value):
- # self.logDebug("self.pluginConfigChanged")
- if name == "interval" and value != self.interval:
- self.interval = value
+ if name == 'interval' and value != self.interval:
+ self.interval = value * 3600
self.initPeriodical()
def unload(self):
- # self.logDebug("self.unload")
- self.removeEvent("packageFinished", self.wakeup)
+ self.removeEvent('packageFinished', self.wakeup)
def coreReady(self):
- # self.logDebug("self.coreReady")
- self.info = {"sleep": True}
- interval = self.getConfig("interval") * 3600
- self.pluginConfigChanged("DeleteFinished", "interval", interval)
- self.addEvent("packageFinished", self.wakeup)
+ self.info = {'sleep': True}
+ interval = self.getConfig('interval')
+ self.pluginConfigChanged('DeleteFinished', 'interval', interval)
+ self.addEvent('packageFinished', self.wakeup)
## own methods ##
@style.queue
- def deleteFinished(self):
- self.c.execute("DELETE FROM packages WHERE NOT EXISTS(SELECT 1 FROM links WHERE package=packages.id AND status NOT IN (0,4))")
- self.c.execute("DELETE FROM links WHERE NOT EXISTS(SELECT 1 FROM packages WHERE id=links.package)")
+ def deleteFinished(self, mode):
+ self.c.execute('DELETE FROM packages WHERE NOT EXISTS(SELECT 1 FROM links WHERE package=packages.id AND status NOT IN (%s))' % mode)
+ self.c.execute('DELETE FROM links WHERE NOT EXISTS(SELECT 1 FROM packages WHERE id=links.package)')
def wakeup(self, pypack):
- # self.logDebug("self.wakeup")
- self.removeEvent("packageFinished", self.wakeup)
- self.info["sleep"] = False
+ self.removeEvent('packageFinished', self.wakeup)
+ self.info['sleep'] = False
## event managing ##
- def addEvent(self, event, handler):
- if event in self.manager.events:
- if handler not in self.manager.events[event]:
- self.manager.events[event].append(handler)
- # self.logDebug("self.addEvent: " + event + ": added handler")
+ def addEvent(self, event, func):
+ '''Adds an event listener for event name'''
+ if event in self.m.events:
+ if func in self.m.events[event]:
+ self.logDebug('Function already registered %s' % func)
else:
- # self.logDebug("self.addEvent: " + event + ": NOT added handler")
- return False
+ self.m.events[event].append(func)
else:
- self.manager.events[event] = [handler]
- # self.logDebug("self.addEvent: " + event + ": added event and handler")
- return True
+ self.m.events[event] = [func]
- def removeEvent(self, event, handler):
- if event in self.manager.events and handler in self.manager.events[event]:
- self.manager.events[event].remove(handler)
- # self.logDebug("self.removeEvent: " + event + ": removed handler")
- return True
- else:
- # self.logDebug("self.removeEvent: " + event + ": NOT removed handler")
- return False
+ def setup(self):
+ self.m = self.manager
+ self.removeEvent = self.m.removeEvent
diff --git a/pyload/plugins/addons/Ev0InFetcher.py b/pyload/plugins/addons/Ev0InFetcher.py
index 608baf217..970c70cd5 100644
--- a/pyload/plugins/addons/Ev0InFetcher.py
+++ b/pyload/plugins/addons/Ev0InFetcher.py
@@ -22,7 +22,7 @@ from module.plugins.Addon import Addon
class Ev0InFetcher(Addon):
__name__ = "Ev0InFetcher"
- __version__ = "0.2"
+ __version__ = "0.21"
__description__ = """checks rss feeds for ev0.in"""
__config__ = [("activated", "bool", "Activated", "False"),
("interval", "int", "Check interval in minutes", "10"),
@@ -73,15 +73,15 @@ class Ev0InFetcher(Addon):
if show.lower() in normalizefiletitle(item['title']) and lastfound < int(mktime(item.date_parsed)):
links = self.filterLinks(item['description'].split("<br />"))
packagename = item['title'].encode("utf-8")
- self.core.log.info("Ev0InFetcher: new episode '%s' (matched '%s')" % (packagename, show))
+ self.logInfo("Ev0InFetcher: new episode '%s' (matched '%s')" % (packagename, show))
self.core.api.addPackage(packagename, links, 1 if self.getConfig("queue") else 0)
self.setStorage("show_%s_lastfound" % show, int(mktime(item.date_parsed)))
found = True
if not found:
- #self.core.log.debug("Ev0InFetcher: no new episodes found")
+ #self.logDebug("Ev0InFetcher: no new episodes found")
pass
for show, lastfound in self.getStorage().iteritems():
if int(lastfound) > 0 and int(lastfound) + (3600*24*30) < int(time()):
self.delStorage("show_%s_lastfound" % show)
- self.core.log.debug("Ev0InFetcher: cleaned '%s' record" % show)
+ self.logDebug("Ev0InFetcher: cleaned '%s' record" % show)
diff --git a/pyload/plugins/addons/ExtractArchive.py b/pyload/plugins/addons/ExtractArchive.py
index 587903fbe..d5609863e 100644
--- a/pyload/plugins/addons/ExtractArchive.py
+++ b/pyload/plugins/addons/ExtractArchive.py
@@ -57,7 +57,7 @@ class ExtractArchive(Addon):
Provides: unrarFinished (folder, filename)
"""
__name__ = "ExtractArchive"
- __version__ = "0.13"
+ __version__ = "0.14"
__description__ = "Extract different kind of archives"
__config__ = [("activated", "bool", "Activated", True),
("fullpath", "bool", "Extract full path", True),
@@ -309,4 +309,4 @@ class ExtractArchive(Addon):
gid = getgrnam(self.config["permission"]["group"])[2]
chown(f, uid, gid)
except Exception, e:
- self.log.warning(_("Setting User and Group failed"), e)
+ self.logWarning(_("Setting User and Group failed"), e)
diff --git a/pyload/plugins/addons/HotFolder.py b/pyload/plugins/addons/HotFolder.py
index d05026448..c3c285369 100644
--- a/pyload/plugins/addons/HotFolder.py
+++ b/pyload/plugins/addons/HotFolder.py
@@ -30,7 +30,7 @@ from module.plugins.Addon import Addon
class HotFolder(Addon):
__name__ = "HotFolder"
- __version__ = "0.1"
+ __version__ = "0.11"
__description__ = """observe folder and file for changes and add container and links"""
__config__ = [ ("activated", "bool", "Activated" , "False"),
("folder", "str", "Folder to observe", "container"),
@@ -79,7 +79,7 @@ class HotFolder(Addon):
newpath = join(self.getConfig("folder"), "finished", f if self.getConfig("keep") else "tmp_"+f)
move(path, newpath)
- self.log.info(_("Added %s from HotFolder") % f)
+ self.logInfo(_("Added %s from HotFolder") % f)
self.core.api.addPackage(f, [newpath], 1)
\ No newline at end of file
diff --git a/pyload/plugins/addons/IRCInterface.py b/pyload/plugins/addons/IRCInterface.py
index c261fc6f3..821f80b6c 100644
--- a/pyload/plugins/addons/IRCInterface.py
+++ b/pyload/plugins/addons/IRCInterface.py
@@ -36,7 +36,7 @@ from pycurl import FORM_FILE
class IRCInterface(Thread, Addon):
__name__ = "IRCInterface"
- __version__ = "0.1"
+ __version__ = "0.11"
__description__ = """connect to irc and let owner perform different tasks"""
__config__ = [("activated", "bool", "Activated", "False"),
("host", "str", "IRC-Server Address", "Enter your server here!"),
@@ -105,8 +105,8 @@ class IRCInterface(Thread, Addon):
for t in self.getConfig("owner").split():
if t.strip().startswith("#"):
self.sock.send("JOIN %s\r\n" % t.strip())
- self.log.info("pyLoad IRC: Connected to %s!" % host)
- self.log.info("pyLoad IRC: Switching to listening mode!")
+ self.logInfo("pyLoad IRC: Connected to %s!" % host)
+ self.logInfo("pyLoad IRC: Switching to listening mode!")
try:
self.main_loop()
@@ -167,15 +167,15 @@ class IRCInterface(Thread, Addon):
# HANDLE CTCP ANTI FLOOD/BOT PROTECTION
if msg["text"] == "\x01VERSION\x01":
- self.log.debug("Sending CTCP VERSION.")
+ self.logDebug("Sending CTCP VERSION.")
self.sock.send("NOTICE %s :%s\r\n" % (msg['origin'], "pyLoad! IRC Interface"))
return
elif msg["text"] == "\x01TIME\x01":
- self.log.debug("Sending CTCP TIME.")
+ self.logDebug("Sending CTCP TIME.")
self.sock.send("NOTICE %s :%d\r\n" % (msg['origin'], time.time()))
return
elif msg["text"] == "\x01LAG\x01":
- self.log.debug("Received CTCP LAG.") # don't know how to answer
+ self.logDebug("Received CTCP LAG.") # don't know how to answer
return
trigger = "pass"
@@ -195,7 +195,7 @@ class IRCInterface(Thread, Addon):
for line in res:
self.response(line, msg["origin"])
except Exception, e:
- self.log.error("pyLoad IRC: "+ repr(e))
+ self.logError("pyLoad IRC: "+ repr(e))
def response(self, msg, origin=""):
diff --git a/pyload/plugins/addons/MergeFiles.py b/pyload/plugins/addons/MergeFiles.py
index 48f997681..8d7f8aef1 100644
--- a/pyload/plugins/addons/MergeFiles.py
+++ b/pyload/plugins/addons/MergeFiles.py
@@ -30,7 +30,7 @@ BUFFER_SIZE = 4096
class MergeFiles(Addon):
__name__ = "MergeFiles"
- __version__ = "0.1"
+ __version__ = "0.11"
__description__ = "Merges parts splitted with hjsplit"
__config__ = [
("activated" , "bool" , "Activated" , "False"),
@@ -60,11 +60,11 @@ class MergeFiles(Addon):
download_folder = save_join(download_folder, pack.folder)
for name, file_list in files.iteritems():
- self.core.log.info("Starting merging of %s" % name)
+ self.logInfo("Starting merging of %s" % name)
final_file = open(join(download_folder, fs_encode(name)), "wb")
for splitted_file in file_list:
- self.core.log.debug("Merging part %s" % splitted_file)
+ self.logDebug("Merging part %s" % splitted_file)
pyfile = self.core.files.getFile(fid_dict[splitted_file])
pyfile.setStatus("processing")
try:
@@ -80,7 +80,7 @@ class MergeFiles(Addon):
else:
break
s_file.close()
- self.core.log.debug("Finished merging part %s" % splitted_file)
+ self.logDebug("Finished merging part %s" % splitted_file)
except Exception, e:
print traceback.print_exc()
finally:
@@ -89,6 +89,6 @@ class MergeFiles(Addon):
pyfile.release()
final_file.close()
- self.core.log.info("Finished merging of %s" % name)
+ self.logInfo("Finished merging of %s" % name)
diff --git a/pyload/plugins/addons/MultiHome.py b/pyload/plugins/addons/MultiHome.py
index af3f55416..e38ce047a 100644
--- a/pyload/plugins/addons/MultiHome.py
+++ b/pyload/plugins/addons/MultiHome.py
@@ -22,7 +22,7 @@ from time import time
class MultiHome(Addon):
__name__ = "MultiHome"
- __version__ = "0.1"
+ __version__ = "0.11"
__description__ = """ip address changer"""
__config__ = [ ("activated", "bool", "Activated" , "False"),
("interfaces", "str", "Interfaces" , "None") ]
@@ -54,7 +54,7 @@ class MultiHome(Addon):
if iface:
iface.useFor(pluginName, account)
requestFactory.iface = lambda: iface.adress
- self.log.debug("Multihome: using address: "+iface.adress)
+ self.logDebug("Multihome: using address: "+iface.adress)
return oldGetRequest(pluginName, account)
requestFactory.getRequest = getRequest
diff --git a/pyload/plugins/addons/RehostTo.py b/pyload/plugins/addons/RehostTo.py
index 7ca5e5cde..cd9f7ccef 100644
--- a/pyload/plugins/addons/RehostTo.py
+++ b/pyload/plugins/addons/RehostTo.py
@@ -5,7 +5,7 @@ from module.plugins.internal.MultiHoster import MultiHoster
class RehostTo(MultiHoster):
__name__ = "RehostTo"
- __version__ = "0.42"
+ __version__ = "0.43"
__type__ = "hook"
__config__ = [("activated", "bool", "Activated", "False"),
@@ -31,7 +31,7 @@ class RehostTo(MultiHoster):
user = self.account.selectAccount()[0]
if not user:
- self.log.error("Rehost.to: "+ _("Please add your rehost.to account first and restart pyLoad"))
+ self.logError("Rehost.to: "+ _("Please add your rehost.to account first and restart pyLoad"))
return
data = self.account.getAccountInfo(user)
diff --git a/pyload/plugins/addons/UpdateManager.py b/pyload/plugins/addons/UpdateManager.py
index c800b44bf..b30289287 100644
--- a/pyload/plugins/addons/UpdateManager.py
+++ b/pyload/plugins/addons/UpdateManager.py
@@ -29,7 +29,7 @@ from module.plugins.Hook import threaded, Expose, Hook
class UpdateManager(Hook):
__name__ = "UpdateManager"
- __version__ = "0.13"
+ __version__ = "0.15"
__description__ = """checks for updates"""
__config__ = [("activated", "bool", "Activated", "True"),
("interval", "int", "Check interval in minutes", "480"),
@@ -70,12 +70,12 @@ class UpdateManager(Hook):
if self.updated and not self.reloaded:
self.info["plugins"] = True
- self.log.info(_("*** Plugins have been updated, please restart pyLoad ***"))
+ self.logInfo(_("*** Plugins have been updated, please restart pyLoad ***"))
elif self.updated and self.reloaded:
- self.log.info(_("Plugins updated and reloaded"))
+ self.logInfo(_("Plugins updated and reloaded"))
self.updated = False
elif self.version == "None":
- self.log.info(_("No plugin updates available"))
+ self.logInfo(_("No plugin updates available"))
@Expose
def recheckForUpdates(self):
@@ -92,16 +92,16 @@ class UpdateManager(Hook):
# Still no updates, plugins will be checked
if self.version == "None":
- self.log.info(_("No Updates for pyLoad"))
+ self.logInfo(_("No Updates for pyLoad"))
return version_check[1:]
self.info["pyload"] = True
- self.log.info(_("*** New pyLoad Version %s available ***") % self.version)
- self.log.info(_("*** Get it here: http://pyload.org/download ***"))
+ self.logInfo(_("*** New pyLoad Version %s available ***") % self.version)
+ self.logInfo(_("*** Get it here: http://pyload.org/download ***"))
except:
- self.log.warning(_("Not able to connect server for updates"))
+ self.logWarning(_("Not able to connect server for updates"))
return None # Nothing will be done
@@ -145,7 +145,7 @@ class UpdateManager(Hook):
if name in IGNORE or (type, name) in IGNORE:
continue
- self.log.info(_("New version of %(type)s|%(name)s : %(version).2f") % {
+ self.logInfo(_("New version of %(type)s|%(name)s : %(version).2f") % {
"type": type,
"name": name,
"version": float(version)
diff --git a/pyload/plugins/addons/XMPPInterface.py b/pyload/plugins/addons/XMPPInterface.py
index e8ef1d2ca..40454f1c3 100644
--- a/pyload/plugins/addons/XMPPInterface.py
+++ b/pyload/plugins/addons/XMPPInterface.py
@@ -28,7 +28,7 @@ from module.plugins.addons.IRCInterface import IRCInterface
class XMPPInterface(IRCInterface, JabberClient):
__name__ = "XMPPInterface"
- __version__ = "0.1"
+ __version__ = "0.11"
__description__ = """connect to jabber and let owner perform different tasks"""
__config__ = [("activated", "bool", "Activated", "False"),
("jid", "str", "Jabber ID", "user@exmaple-jabber-server.org"),
@@ -97,22 +97,22 @@ class XMPPInterface(IRCInterface, JabberClient):
try:
self.loop()
except Exception, ex:
- self.core.log.error("pyLoad XMPP: %s" % str(ex))
+ self.logError("pyLoad XMPP: %s" % str(ex))
def stream_state_changed(self, state, arg):
"""This one is called when the state of stream connecting the component
to a server changes. This will usually be used to let the user
know what is going on."""
- self.log.debug("pyLoad XMPP: *** State changed: %s %r ***" % (state, arg))
+ self.logDebug("pyLoad XMPP: *** State changed: %s %r ***" % (state, arg))
def disconnected(self):
- self.log.debug("pyLoad XMPP: Client was disconnected")
+ self.logDebug("pyLoad XMPP: Client was disconnected")
def stream_closed(self, stream):
- self.log.debug("pyLoad XMPP: Stream was closed | %s" % stream)
+ self.logDebug("pyLoad XMPP: Stream was closed | %s" % stream)
def stream_error(self, err):
- self.log.debug("pyLoad XMPP: Stream Error: %s" % err)
+ self.logDebug("pyLoad XMPP: Stream Error: %s" % err)
def get_message_handlers(self):
"""Return list of (message_type, message_handler) tuples.
@@ -147,8 +147,8 @@ class XMPPInterface(IRCInterface, JabberClient):
subject = stanza.get_subject()
body = stanza.get_body()
t = stanza.get_type()
- self.log.debug(u'pyLoad XMPP: Message from %s received.' % (unicode(stanza.get_from(), )))
- self.log.debug(u'pyLoad XMPP: Body: %s Subject: %s Type: %s' % (body, subject, t))
+ self.logDebug(u'pyLoad XMPP: Message from %s received.' % (unicode(stanza.get_from(), )))
+ self.logDebug(u'pyLoad XMPP: Body: %s Subject: %s Type: %s' % (body, subject, t))
if t == "headline":
# 'headline' messages should never be replied to
@@ -192,7 +192,7 @@ class XMPPInterface(IRCInterface, JabberClient):
messages.append(m)
except Exception, e:
- self.log.error("pyLoad XMPP: " + repr(e))
+ self.logError("pyLoad XMPP: " + repr(e))
return messages
@@ -205,7 +205,7 @@ class XMPPInterface(IRCInterface, JabberClient):
def announce(self, message):
""" send message to all owners"""
for user in self.getConfig("owners").split(";"):
- self.log.debug("pyLoad XMPP: Send message to %s" % user)
+ self.logDebug("pyLoad XMPP: Send message to %s" % user)
to_jid = JID(user)