From 068634305298b8563922c6ba05a032103ba29908 Mon Sep 17 00:00:00 2001 From: Hans van Luttikhuizen Date: Thu, 4 May 2017 16:04:37 +0200 Subject: [PATCH 1/3] Fix letterboxd integration --- couchpotato/core/media/movie/providers/automation/letterboxd.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/couchpotato/core/media/movie/providers/automation/letterboxd.py b/couchpotato/core/media/movie/providers/automation/letterboxd.py index e1fcddb..41fbd88 100644 --- a/couchpotato/core/media/movie/providers/automation/letterboxd.py +++ b/couchpotato/core/media/movie/providers/automation/letterboxd.py @@ -49,7 +49,7 @@ class Letterboxd(Automation): soup = BeautifulSoup(self.getHTMLData(self.url % username)) for movie in soup.find_all('li', attrs = {'class': 'poster-container'}): - img = movie.find('img', movie) + img = movie.find('img') title = img.get('alt') movies.append({ From 5ba6901d0001fb62530e3daf9f987ba5399c112e Mon Sep 17 00:00:00 2001 From: Hans van Luttikhuizen Date: Thu, 4 May 2017 17:36:41 +0200 Subject: [PATCH 2/3] 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', From 32fdf53b623d4f022aea19ccf8e08d47f5345981 Mon Sep 17 00:00:00 2001 From: Hans van Luttikhuizen Date: Thu, 4 May 2017 20:20:36 +0200 Subject: [PATCH 3/3] Support watchlist with more than 5 pages --- couchpotato/core/media/movie/providers/automation/letterboxd.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/couchpotato/core/media/movie/providers/automation/letterboxd.py b/couchpotato/core/media/movie/providers/automation/letterboxd.py index adfc828..072c416 100644 --- a/couchpotato/core/media/movie/providers/automation/letterboxd.py +++ b/couchpotato/core/media/movie/providers/automation/letterboxd.py @@ -48,8 +48,9 @@ class Letterboxd(Automation): soup = BeautifulSoup(self.getHTMLData(self.url % (username, 1))) - pagination_items = soup.find_all('li', attrs={'class': 'paginate-page'}) - pages = range(1, len(pagination_items) + 1) if pagination_items else [1] + pagination = soup.find_all('li', attrs={'class': 'paginate-page'}) + number_of_pages = tryInt(pagination[-1].find('a').get_text()) if pagination else 1 + pages = range(1, number_of_pages) for page in pages: soup = BeautifulSoup(self.getHTMLData(self.url % (username, page)))