Browse Source

Watchilst load bugfix

pull/7296/head
Ingemars Asmanis 6 years ago
parent
commit
1303955874
  1. 53
      couchpotato/core/media/movie/providers/automation/imdb.py

53
couchpotato/core/media/movie/providers/automation/imdb.py

@ -45,26 +45,28 @@ class IMDBBase(Automation, RSS):
} }
def getInfo(self, imdb_id): 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): def getFromURL(self, url):
log.debug('Getting IMDBs from: %s', url) log.debug('Getting IMDBs from: %s', url)
html = self.getHTMLData(url) html = self.getHTMLData(url)
try: try:
split = splitString(html, split_on = "<div class=\"list compact\">")[1] split = splitString(
html = splitString(split, split_on = "<div class=\"pages\">")[0] html, split_on="<div class=\"list compact\">")[1]
html = splitString(split, split_on="<div class=\"pages\">")[0]
except: except:
try: try:
split = splitString(html, split_on = "<div id=\"main\">") split = splitString(html, split_on="<div id=\"main\">")
if len(split) < 2: 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 [] return []
html = BeautifulSoup(split[1]) html = BeautifulSoup(split[1])
for x in ['list compact', 'lister', 'list detail sub-list']: for x in ['list compact', 'lister', 'list detail sub-list']:
html2 = html.find('div', attrs = { html2 = html.find('div', attrs={
'class': x 'class': x
}) })
@ -73,10 +75,11 @@ class IMDBBase(Automation, RSS):
html = ''.join([str(x) for x in html]) html = ''.join([str(x) for x in html])
break break
except: 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) html = ss(html)
imdbs = getImdb(html, multiple = True) if html else [] imdbs = getImdb(html, multiple=True) if html else []
return imdbs return imdbs
@ -89,7 +92,8 @@ class IMDBWatchlist(IMDBBase):
movies = [] 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')) watchlist_urls = splitString(self.conf('automation_urls'))
index = -1 index = -1
@ -97,7 +101,8 @@ class IMDBWatchlist(IMDBBase):
try: try:
# Get list ID # 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: if len(ids) == 1:
watchlist_url = 'http://www.imdb.com/list/%s/?view=compact&sort=created:asc' % ids[0] watchlist_url = 'http://www.imdb.com/list/%s/?view=compact&sort=created:asc' % ids[0]
# Try find user id with watchlist # Try find user id with watchlist
@ -106,13 +111,15 @@ class IMDBWatchlist(IMDBBase):
if len(userids) == 1: if len(userids) == 1:
watchlist_url = 'http://www.imdb.com/user/%s/watchlist?view=compact&sort=created:asc' % userids[0] watchlist_url = 'http://www.imdb.com/user/%s/watchlist?view=compact&sort=created:asc' % userids[0]
except: 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 index += 1
if not watchlist_enablers[index]: if not watchlist_enablers[index]:
continue continue
start = 0 start = 0
moviecount = len(movies)
while True: while True:
try: try:
@ -126,15 +133,22 @@ class IMDBWatchlist(IMDBBase):
if self.shuttingDown(): if self.shuttingDown():
break 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: if len(imdbs) < 225:
break break
start = len(movies) start += len(imdbs)
except: 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 break
return movies return movies
@ -165,7 +179,8 @@ class IMDBAutomation(IMDBBase):
break break
except: 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 return movies
@ -197,7 +212,8 @@ class IMDBCharts(IMDBBase):
try: try:
for imdb_id in imdb_ids[0:max_items]: 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: if not is_movie:
continue continue
@ -207,9 +223,10 @@ class IMDBCharts(IMDBBase):
if self.shuttingDown(): if self.shuttingDown():
break break
except: 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']: if chart['list']:
movie_lists.append(chart) movie_lists.append(chart)

Loading…
Cancel
Save