From 1303955874cae38e601f3b4a88a580973e538787 Mon Sep 17 00:00:00 2001 From: Ingemars Asmanis Date: Wed, 10 Apr 2019 14:40:51 +0300 Subject: [PATCH] Watchilst load bugfix --- .../core/media/movie/providers/automation/imdb.py | 53 ++++++++++++++-------- 1 file changed, 35 insertions(+), 18 deletions(-) diff --git a/couchpotato/core/media/movie/providers/automation/imdb.py b/couchpotato/core/media/movie/providers/automation/imdb.py index 41974c4..aef7f3c 100644 --- a/couchpotato/core/media/movie/providers/automation/imdb.py +++ b/couchpotato/core/media/movie/providers/automation/imdb.py @@ -45,26 +45,28 @@ class IMDBBase(Automation, RSS): } def getInfo(self, imdb_id): - return fireEvent('movie.info', identifier = imdb_id, extended = False, adding = False, merge = True) + return fireEvent('movie.info', identifier=imdb_id, extended=False, adding=False, merge=True) def getFromURL(self, url): log.debug('Getting IMDBs from: %s', url) html = self.getHTMLData(url) try: - split = splitString(html, split_on = "
")[1] - html = splitString(split, split_on = "
")[0] + split = splitString( + html, split_on="
")[1] + html = splitString(split, split_on="
")[0] except: try: - split = splitString(html, split_on = "
") + split = splitString(html, split_on="
") if len(split) < 2: - log.error('Failed parsing IMDB page "%s", unexpected html.', url) + log.error( + 'Failed parsing IMDB page "%s", unexpected html.', url) return [] html = BeautifulSoup(split[1]) for x in ['list compact', 'lister', 'list detail sub-list']: - html2 = html.find('div', attrs = { + html2 = html.find('div', attrs={ 'class': x }) @@ -73,10 +75,11 @@ class IMDBBase(Automation, RSS): html = ''.join([str(x) for x in html]) break except: - log.error('Failed parsing IMDB page "%s": %s', (url, traceback.format_exc())) + log.error('Failed parsing IMDB page "%s": %s', + (url, traceback.format_exc())) html = ss(html) - imdbs = getImdb(html, multiple = True) if html else [] + imdbs = getImdb(html, multiple=True) if html else [] return imdbs @@ -89,7 +92,8 @@ class IMDBWatchlist(IMDBBase): movies = [] - watchlist_enablers = [tryInt(x) for x in splitString(self.conf('automation_urls_use'))] + watchlist_enablers = [tryInt(x) for x in splitString( + self.conf('automation_urls_use'))] watchlist_urls = splitString(self.conf('automation_urls')) index = -1 @@ -97,7 +101,8 @@ class IMDBWatchlist(IMDBBase): try: # Get list ID - ids = re.findall('(?:list/|list_id=)([a-zA-Z0-9\-_]{11})', watchlist_url) + ids = re.findall( + '(?:list/|list_id=)([a-zA-Z0-9\-_]{11})', watchlist_url) if len(ids) == 1: watchlist_url = 'http://www.imdb.com/list/%s/?view=compact&sort=created:asc' % ids[0] # Try find user id with watchlist @@ -106,13 +111,15 @@ class IMDBWatchlist(IMDBBase): if len(userids) == 1: watchlist_url = 'http://www.imdb.com/user/%s/watchlist?view=compact&sort=created:asc' % userids[0] except: - log.error('Failed getting id from watchlist: %s', traceback.format_exc()) + log.error('Failed getting id from watchlist: %s', + traceback.format_exc()) index += 1 if not watchlist_enablers[index]: continue start = 0 + moviecount = len(movies) while True: try: @@ -126,15 +133,22 @@ class IMDBWatchlist(IMDBBase): if self.shuttingDown(): break - log.debug('Found %s movies on %s', (len(imdbs), w_url)) + if len(movies) == moviecount: + break + + log.debug('Found %s (%s new) movies on %s', + (len(imdbs), (len(movies) - moviecount), w_url)) + + moviecount = len(movies) if len(imdbs) < 225: break - start = len(movies) + start += len(imdbs) except: - log.error('Failed loading IMDB watchlist: %s %s', (watchlist_url, traceback.format_exc())) + log.error('Failed loading IMDB watchlist: %s %s', + (watchlist_url, traceback.format_exc())) break return movies @@ -165,7 +179,8 @@ class IMDBAutomation(IMDBBase): break except: - log.error('Failed loading IMDB chart results from %s: %s', (url, traceback.format_exc())) + log.error( + 'Failed loading IMDB chart results from %s: %s', (url, traceback.format_exc())) return movies @@ -197,7 +212,8 @@ class IMDBCharts(IMDBBase): try: for imdb_id in imdb_ids[0:max_items]: - is_movie = fireEvent('movie.is_movie', identifier = imdb_id, adding = False, single = True) + is_movie = fireEvent( + 'movie.is_movie', identifier=imdb_id, adding=False, single=True) if not is_movie: continue @@ -207,9 +223,10 @@ class IMDBCharts(IMDBBase): if self.shuttingDown(): break except: - log.error('Failed loading IMDB chart results from %s: %s', (url, traceback.format_exc())) + log.error( + 'Failed loading IMDB chart results from %s: %s', (url, traceback.format_exc())) - self.setCache(cache_key, chart['list'], timeout = 259200) + self.setCache(cache_key, chart['list'], timeout=259200) if chart['list']: movie_lists.append(chart)