You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.3 KiB
51 lines
1.3 KiB
from bs4 import BeautifulSoup
|
|
from couchpotato.core.helpers.variable import tryInt, splitString
|
|
from couchpotato.core.logger import CPLog
|
|
from couchpotato.core.providers.automation.base import Automation
|
|
import re
|
|
|
|
log = CPLog(__name__)
|
|
|
|
|
|
class Letterboxd(Automation):
|
|
|
|
url = 'http://letterboxd.com/%s/watchlist/'
|
|
pattern = re.compile(r'(.*)\((\d*)\)')
|
|
|
|
interval = 1800
|
|
|
|
def getIMDBids(self):
|
|
|
|
urls = splitString(self.conf('automation_urls'))
|
|
|
|
if len(urls) == 0:
|
|
return []
|
|
|
|
movies = []
|
|
|
|
for movie in self.getWatchlist():
|
|
imdb_id = self.search(movie.get('title'), movie.get('year'), imdb_only = True)
|
|
movies.append(imdb_id)
|
|
|
|
return movies
|
|
|
|
def getWatchlist(self):
|
|
|
|
enablers = [tryInt(x) for x in splitString(self.conf('automation_urls_use'))]
|
|
urls = splitString(self.conf('automation_urls'))
|
|
|
|
index = -1
|
|
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' }):
|
|
match = filter(None, self.pattern.split(movie['title']))
|
|
movies.append({'title': match[0], 'year': match[1] })
|
|
|
|
return movies
|
|
|