31 changed files with 242 additions and 108 deletions
@ -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 <a href="http://movies.io">Movies.io</a> 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'], |
|||
}, |
|||
], |
|||
}, |
|||
], |
|||
}] |
@ -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 |
@ -0,0 +1,6 @@ |
|||
from .main import MoviesIO |
|||
|
|||
def start(): |
|||
return MoviesIO() |
|||
|
|||
config = [] |
@ -0,0 +1,6 @@ |
|||
from couchpotato.core.providers.userscript.base import UserscriptBase |
|||
|
|||
|
|||
class MoviesIO(UserscriptBase): |
|||
|
|||
includes = ['*://movies.io/m/*'] |
@ -1 +1,2 @@ |
|||
VERSION = '2.0.0.pre1' |
|||
BRANCH = 'desktop' |
|||
|
Loading…
Reference in new issue