diff --git a/couchpotato/core/providers/automation/imdb/__init__.py b/couchpotato/core/providers/automation/imdb/__init__.py
index 142ebab..925138d 100644
--- a/couchpotato/core/providers/automation/imdb/__init__.py
+++ b/couchpotato/core/providers/automation/imdb/__init__.py
@@ -10,7 +10,7 @@ config = [{
'tab': 'automation',
'name': 'imdb_automation',
'label': 'IMDB',
- 'description': 'From any public IMDB watchlists. Url should end with export?list_id=XXXXX&author_id=XXXXX',
+ 'description': 'From any public IMDB watchlists. Url should be the RSS link.',
'options': [
{
'name': 'automation_enabled',
diff --git a/couchpotato/core/providers/automation/imdb/main.py b/couchpotato/core/providers/automation/imdb/main.py
index 7a09053..6364a75 100644
--- a/couchpotato/core/providers/automation/imdb/main.py
+++ b/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
diff --git a/couchpotato/static/images/imdb_watchlist.png b/couchpotato/static/images/imdb_watchlist.png
index b16fd09..fc4158b 100644
Binary files a/couchpotato/static/images/imdb_watchlist.png and b/couchpotato/static/images/imdb_watchlist.png differ