From 000c5fa591f0e7e58eb12d2d6c356f99a74eabf5 Mon Sep 17 00:00:00 2001 From: Ruud Date: Mon, 16 Jul 2012 00:44:18 +0200 Subject: [PATCH] Movies.io userscript and automation --- .../providers/automation/movies_io/__init__.py | 33 +++++++++++ .../core/providers/automation/movies_io/main.py | 69 ++++++++++++++++++++++ .../core/providers/userscript/moviesio/__init__.py | 6 ++ .../core/providers/userscript/moviesio/main.py | 6 ++ 4 files changed, 114 insertions(+) create mode 100644 couchpotato/core/providers/automation/movies_io/__init__.py create mode 100644 couchpotato/core/providers/automation/movies_io/main.py create mode 100644 couchpotato/core/providers/userscript/moviesio/__init__.py create mode 100644 couchpotato/core/providers/userscript/moviesio/main.py diff --git a/couchpotato/core/providers/automation/movies_io/__init__.py b/couchpotato/core/providers/automation/movies_io/__init__.py new file mode 100644 index 0000000..0f998f6 --- /dev/null +++ b/couchpotato/core/providers/automation/movies_io/__init__.py @@ -0,0 +1,33 @@ +from .main import MoviesIO + +def start(): + return MoviesIO() + +config = [{ + 'name': 'moviesio', + 'groups': [ + { + 'tab': 'automation', + 'name': 'moviesio', + 'label': 'Movies.io', + 'description': 'Imports movies from Movies.io RSS watchlists', + 'options': [ + { + 'name': 'automation_enabled', + 'default': False, + 'type': 'enabler', + }, + { + 'name': 'automation_urls_use', + 'label': 'Use', + }, + { + 'name': 'automation_urls', + 'label': 'url', + 'type': 'combined', + 'combine': ['automation_urls_use', 'automation_urls'], + }, + ], + }, + ], +}] diff --git a/couchpotato/core/providers/automation/movies_io/main.py b/couchpotato/core/providers/automation/movies_io/main.py new file mode 100644 index 0000000..3a5a2f0 --- /dev/null +++ b/couchpotato/core/providers/automation/movies_io/main.py @@ -0,0 +1,69 @@ +from couchpotato.core.event import fireEvent +from couchpotato.core.helpers.rss import RSS +from couchpotato.core.helpers.variable import md5 +from couchpotato.core.logger import CPLog +from couchpotato.core.providers.automation.base import Automation +from couchpotato.environment import Env +from dateutil.parser import parse +from xml.etree.ElementTree import ParseError +import time +import traceback +import xml.etree.ElementTree as XMLTree + +log = CPLog(__name__) + + +class MoviesIO(Automation, RSS): + + interval = 1800 + + def getIMDBids(self): + + if self.isDisabled(): + return + + movies = [] + + enablers = self.conf('automation_urls_use').split(',') + + index = -1 + for rss_url in self.conf('automation_urls').split(','): + + index += 1 + if not enablers[index]: + continue + + prop_name = 'automation.moviesio.last_update.%s' % md5(rss_url) + last_update = float(Env.prop(prop_name, default = 0)) + + last_movie_added = 0 + try: + cache_key = 'imdb.rss.%s' % md5(rss_url) + + rss_data = self.getCache(cache_key, rss_url, headers = {'Referer': ''}) + data = XMLTree.fromstring(rss_data) + rss_movies = self.getElements(data, 'channel/item') + + for movie in rss_movies: + created = int(time.mktime(parse(self.getTextElement(movie, "pubDate")).timetuple())) + + if created > last_movie_added: + last_movie_added = created + if created <= last_update: + continue + + nameyear = fireEvent('scanner.name_year', self.getTextElement(movie, "title"), single = True) + imdb = self.search(nameyear.get('name'), nameyear.get('year'), imdb_only = True) + + if not imdb: + continue + + movies.append(imdb) + except ParseError: + log.debug('Failed loading Movies.io watchlist, probably empty: %s', (rss_url)) + except: + log.error('Failed loading Movies.io watchlist: %s %s', (rss_url, traceback.format_exc())) + + Env.prop(prop_name, last_movie_added) + + return movies diff --git a/couchpotato/core/providers/userscript/moviesio/__init__.py b/couchpotato/core/providers/userscript/moviesio/__init__.py new file mode 100644 index 0000000..473f847 --- /dev/null +++ b/couchpotato/core/providers/userscript/moviesio/__init__.py @@ -0,0 +1,6 @@ +from .main import MoviesIO + +def start(): + return MoviesIO() + +config = [] diff --git a/couchpotato/core/providers/userscript/moviesio/main.py b/couchpotato/core/providers/userscript/moviesio/main.py new file mode 100644 index 0000000..5dab618 --- /dev/null +++ b/couchpotato/core/providers/userscript/moviesio/main.py @@ -0,0 +1,6 @@ +from couchpotato.core.providers.userscript.base import UserscriptBase + + +class MoviesIO(UserscriptBase): + + includes = ['*://movies.io/m/*']