Browse Source

Use rss for imdb watchlist. fix #322

pull/460/merge
Ruud 13 years ago
parent
commit
4b946b9d5f
  1. 2
      couchpotato/core/providers/automation/imdb/__init__.py
  2. 49
      couchpotato/core/providers/automation/imdb/main.py
  3. BIN
      couchpotato/static/images/imdb_watchlist.png

2
couchpotato/core/providers/automation/imdb/__init__.py

@ -10,7 +10,7 @@ config = [{
'tab': 'automation', 'tab': 'automation',
'name': 'imdb_automation', 'name': 'imdb_automation',
'label': 'IMDB', 'label': 'IMDB',
'description': 'From any <strong>public</strong> IMDB watchlists. Url should end with <strong>export?list_id=XXXXX&author_id=XXXXX<strong>', 'description': 'From any <strong>public</strong> IMDB watchlists. Url should be the RSS link.',
'options': [ 'options': [
{ {
'name': 'automation_enabled', 'name': 'automation_enabled',

49
couchpotato/core/providers/automation/imdb/main.py

@ -1,17 +1,17 @@
from couchpotato.core.helpers.variable import md5 from couchpotato.core.helpers.rss import RSS
from couchpotato.core.helpers.variable import md5, getImdb
from couchpotato.core.logger import CPLog from couchpotato.core.logger import CPLog
from couchpotato.core.providers.automation.base import Automation from couchpotato.core.providers.automation.base import Automation
from couchpotato.environment import Env from couchpotato.environment import Env
from dateutil.parser import parse from dateutil.parser import parse
import StringIO
import csv
import time import time
import traceback import traceback
import xml.etree.ElementTree as XMLTree
log = CPLog(__name__) log = CPLog(__name__)
class IMDB(Automation): class IMDB(Automation, RSS):
interval = 1800 interval = 1800
@ -21,46 +21,41 @@ class IMDB(Automation):
return return
movies = [] movies = []
headers = {}
enablers = self.conf('automation_urls_use').split(',') enablers = self.conf('automation_urls_use').split(',')
index = -1 index = -1
for csv_url in self.conf('automation_urls').split(','): for rss_url in self.conf('automation_urls').split(','):
index += 1 index += 1
if not enablers[index]: if not enablers[index]:
continue continue
elif 'author_id=' not in csv_url: elif 'rss.imdb' not in rss_url:
log.error('This isn\'t the correct url.: %s' % csv_url) log.error('This isn\'t the correct url.: %s' % rss_url)
continue continue
prop_name = 'automation.imdb.last_update.%s' % md5(csv_url) prop_name = 'automation.imdb.last_update.%s' % md5(rss_url)
last_update = float(Env.prop(prop_name, default = 0)) last_update = float(Env.prop(prop_name, default = 0))
try: try:
cache_key = 'imdb_csv.%s' % md5(csv_url) cache_key = 'imdb.rss.%s' % md5(rss_url)
csv_data = self.getCache(cache_key, csv_url)
csv_reader = csv.reader(StringIO.StringIO(csv_data)) rss_data = self.getCache(cache_key, rss_url)
if not headers: data = XMLTree.fromstring(rss_data)
nr = 0 rss_movies = self.getElements(data, 'channel/item')
for column in csv_reader.next():
headers[column] = nr for movie in rss_movies:
nr += 1 created = int(time.mktime(parse(self.getTextElement(movie, "pubDate")).timetuple()))
else: imdb = getImdb(self.getTextElement(movie, "link"))
csv_reader.next()
if not imdb or created < last_update:
for row in csv_reader:
created = int(time.mktime(parse(row[headers['created']]).timetuple()))
if created < last_update:
continue continue
imdb = row[headers['const']]
if imdb:
movies.append(imdb) movies.append(imdb)
except: except:
log.error('Failed loading IMDB watchlist: %s %s' % (csv_url, traceback.format_exc())) log.error('Failed loading IMDB watchlist: %s %s' % (rss_url, traceback.format_exc()))
Env.prop(prop_name, time.time()) Env.prop(prop_name, time.time())
return movies return movies

BIN
couchpotato/static/images/imdb_watchlist.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 41 KiB

Loading…
Cancel
Save