Browse Source

Make letterboxd multi-watchlist

pull/1539/merge
Ruud 12 years ago
parent
commit
72ba1a173c
  1. 12
      couchpotato/core/providers/automation/letterboxd/__init__.py
  2. 28
      couchpotato/core/providers/automation/letterboxd/main.py

12
couchpotato/core/providers/automation/letterboxd/__init__.py

@ -11,7 +11,7 @@ config = [{
'list': 'watchlist_providers', 'list': 'watchlist_providers',
'name': 'letterboxd_automation', 'name': 'letterboxd_automation',
'label': 'Letterboxd', 'label': 'Letterboxd',
'description': 'import movies from your <a href="http://letterboxd.com/">Letterboxd</a> watchlist', 'description': 'Import movies from any public <a href="http://letterboxd.com/">Letterboxd</a> watchlist',
'options': [ 'options': [
{ {
'name': 'automation_enabled', 'name': 'automation_enabled',
@ -19,10 +19,16 @@ config = [{
'type': 'enabler', 'type': 'enabler',
}, },
{ {
'name': 'automation_username', 'name': 'automation_urls_use',
'label': 'Use',
},
{
'name': 'automation_urls',
'label': 'Username', 'label': 'Username',
'type': 'combined',
'combine': ['automation_urls_use', 'automation_urls'],
}, },
], ],
}, },
], ],
}] }]

28
couchpotato/core/providers/automation/letterboxd/main.py

@ -1,19 +1,22 @@
from bs4 import BeautifulSoup
from couchpotato.core.helpers.variable import tryInt, splitString
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 bs4 import BeautifulSoup
import re import re
log = CPLog(__name__) log = CPLog(__name__)
class Letterboxd(Automation): class Letterboxd(Automation):
url = 'http://letterboxd.com/%s/watchlist/' url = 'http://letterboxd.com/%s/watchlist/'
pattern = re.compile(r'(.*)\((\d*)\)') pattern = re.compile(r'(.*)\((\d*)\)')
def getIMDBids(self): def getIMDBids(self):
if not self.conf('automation_username'): urls = splitString(self.conf('automation_urls'))
log.error('Please fill in your username')
if len(urls) == 0:
return [] return []
movies = [] movies = []
@ -25,13 +28,22 @@ class Letterboxd(Automation):
return movies return movies
def getWatchlist(self): def getWatchlist(self):
url = self.url % self.conf('automation_username')
soup = BeautifulSoup(self.getHTMLData(url))
enablers = [tryInt(x) for x in splitString(self.conf('automation_urls_use'))]
urls = splitString(self.conf('automation_urls'))
index = -1
movies = [] movies = []
for username in urls:
index += 1
if not enablers[index]:
continue
soup = BeautifulSoup(self.getHTMLData(self.url % username))
for movie in soup.find_all('a', attrs = { 'class': 'frame' }): for movie in soup.find_all('a', attrs = { 'class': 'frame' }):
match = filter(None, self.pattern.split(movie['title'])) match = filter(None, self.pattern.split(movie['title']))
movies.append({ 'title': match[0], 'year': match[1] }) movies.append({'title': match[0], 'year': match[1] })
return movies return movies

Loading…
Cancel
Save