From 5ba6901d0001fb62530e3daf9f987ba5399c112e Mon Sep 17 00:00:00 2001 From: Hans van Luttikhuizen Date: Thu, 4 May 2017 17:36:41 +0200 Subject: [PATCH] Support multiple watchlist pages for Letterboxd --- .../media/movie/providers/automation/letterboxd.py | 27 +++++++++++++++------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/couchpotato/core/media/movie/providers/automation/letterboxd.py b/couchpotato/core/media/movie/providers/automation/letterboxd.py index 41fbd88..adfc828 100644 --- a/couchpotato/core/media/movie/providers/automation/letterboxd.py +++ b/couchpotato/core/media/movie/providers/automation/letterboxd.py @@ -13,7 +13,7 @@ autoload = 'Letterboxd' class Letterboxd(Automation): - url = 'http://letterboxd.com/%s/watchlist/' + url = 'http://letterboxd.com/%s/watchlist/page/%d/' pattern = re.compile(r'(.*)\((\d*)\)') interval = 1800 @@ -46,18 +46,29 @@ class Letterboxd(Automation): if not enablers[index]: continue - soup = BeautifulSoup(self.getHTMLData(self.url % username)) + soup = BeautifulSoup(self.getHTMLData(self.url % (username, 1))) - for movie in soup.find_all('li', attrs = {'class': 'poster-container'}): - img = movie.find('img') - title = img.get('alt') + pagination_items = soup.find_all('li', attrs={'class': 'paginate-page'}) + pages = range(1, len(pagination_items) + 1) if pagination_items else [1] - movies.append({ - 'title': title - }) + for page in pages: + soup = BeautifulSoup(self.getHTMLData(self.url % (username, page))) + movies += self.getMoviesFromHTML(soup) return movies + def getMoviesFromHTML(self, html): + movies = [] + + for movie in html.find_all('li', attrs={'class': 'poster-container'}): + img = movie.find('img') + title = img.get('alt') + + movies.append({ + 'title': title + }) + + return movies config = [{ 'name': 'letterboxd',