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. 51
      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',
'name': 'imdb_automation',
'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': [
{
'name': 'automation_enabled',

51
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.providers.automation.base import Automation
from couchpotato.environment import Env
from dateutil.parser import parse
import StringIO
import csv
import time
import traceback
import xml.etree.ElementTree as XMLTree
log = CPLog(__name__)
class IMDB(Automation):
class IMDB(Automation, RSS):
interval = 1800
@ -21,46 +21,41 @@ class IMDB(Automation):
return
movies = []
headers = {}
enablers = self.conf('automation_urls_use').split(',')
index = -1
for csv_url in self.conf('automation_urls').split(','):
for rss_url in self.conf('automation_urls').split(','):
index += 1
if not enablers[index]:
continue
elif 'author_id=' not in csv_url:
log.error('This isn\'t the correct url.: %s' % csv_url)
elif 'rss.imdb' not in rss_url:
log.error('This isn\'t the correct url.: %s' % rss_url)
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))
try:
cache_key = 'imdb_csv.%s' % md5(csv_url)
csv_data = self.getCache(cache_key, csv_url)
csv_reader = csv.reader(StringIO.StringIO(csv_data))
if not headers:
nr = 0
for column in csv_reader.next():
headers[column] = nr
nr += 1
else:
csv_reader.next()
for row in csv_reader:
created = int(time.mktime(parse(row[headers['created']]).timetuple()))
if created < last_update:
cache_key = 'imdb.rss.%s' % md5(rss_url)
rss_data = self.getCache(cache_key, rss_url)
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()))
imdb = getImdb(self.getTextElement(movie, "link"))
if not imdb or created < last_update:
continue
imdb = row[headers['const']]
if imdb:
movies.append(imdb)
movies.append(imdb)
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())
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