From 623eefac57533009672cc5a46a85c123ed43477d Mon Sep 17 00:00:00 2001 From: mkaay Date: Wed, 26 Jan 2011 00:37:08 +0100 Subject: added data storage (currently used for plugins), ev0.in rss fetcher, ul.to maxtraffic fix --- module/plugins/hooks/Ev0InFetcher.py | 78 ++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 module/plugins/hooks/Ev0InFetcher.py (limited to 'module/plugins/hooks') diff --git a/module/plugins/hooks/Ev0InFetcher.py b/module/plugins/hooks/Ev0InFetcher.py new file mode 100644 index 000000000..18524ec5a --- /dev/null +++ b/module/plugins/hooks/Ev0InFetcher.py @@ -0,0 +1,78 @@ +# -*- 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 . + + @author: mkaay +""" +import feedparser +from time import mktime, time + +from module.plugins.Hook import Hook +from module.plugins.PluginStorage import PluginStorage + +class Ev0InFetcher(Hook, PluginStorage): + __name__ = "Ev0InFetcher" + __version__ = "0.1" + __description__ = """checks rss feeds for ev0.in""" + __config__ = [("activated", "bool", "Activated", "False"), + ("interval", "int", "Check interval in minutes", "10"), + ("queue", "bool", "Move new shows directly to Queue", False), + ("shows", "str", "Shows to check for (comma seperated)", ""), + ("quality", "str", "xvid/x264/rmvb", "xvid"), + ("hoster", "str", "Hoster to use (comma seperated)", "NetloadIn,RapidshareCom,MegauploadCom,HotfileCom")] + __author_name__ = ("mkaay") + __author_mail__ = ("mkaay@mkaay.de") + + def setup(self): + self.interval = self.getConfig("interval") * 60 + + def filterLinks(self, links): + results = self.core.pluginManager.parseUrls(links) + sortedLinks = {} + + for url, hoster in results: + if not sortedLinks.has_key(hoster): + sortedLinks[hoster] = [] + sortedLinks[hoster].append(url) + + for h in self.getConfig("hoster").split(","): + try: + return sortedLinks[h.strip()] + except: + continue + return [] + + def periodical(self): + def normalizefiletitle(filename): + filename = filename.replace('.', ' ') + filename = filename.replace('_', ' ') + filename = filename.lower() + return filename + + shows = [s.strip() for s in self.getConfig("shows").split(",")] + + feed = feedparser.parse("http://feeds.feedburner.com/ev0in/%s?format=xml" % self.getConfig("quality")) + currentTime = time() + lastCheck = int(self.getStorage("last_check", 0)) + + for item in feed['items']: + if mktime(item.date_parsed) > lastCheck: + for x in shows: + if x.lower() in normalizefiletitle(item['title']): + links = self.filterLinks(item['description'].split("
")) + packagename = item['title'].encode("utf-8") + self.core.log.debug("Ev0InFetcher: new episode %s" % packagename) + self.core.server_methods.add_package(packagename, links, queue=(1 if self.getConfig("queue") else 0)) + self.setStorage("last_check", int(currentTime)) + -- cgit v1.2.3