Chart cleanup

This commit is contained in:
Ruud
2014-05-06 15:39:41 +02:00
parent 0284fa9b0a
commit 7e4bc29b59
2 changed files with 57 additions and 40 deletions
@@ -78,7 +78,7 @@ MA.IMDB = new Class({
create: function(){
var self = this;
self.id = self.movie.getIdentifier();
self.id = self.movie.getIdentifier ? self.movie.getIdentifier() : self.get('imdb');
self.el = new Element('a.imdb', {
'title': 'Go to the IMDB page of ' + self.getTitle(),
@@ -100,23 +100,28 @@ class IMDBAutomation(IMDBBase):
enabled_option = 'automation_providers_enabled'
chart_urls = {
'theater': 'http://www.imdb.com/movies-in-theaters/',
'top250': 'http://www.imdb.com/chart/top',
'boxoffice': 'http://www.imdb.com/chart/',
'rentals': 'http://www.imdb.com/boxoffice/rentals',
}
chart_names = {
'theater': 'IMDB - Movies in Theaters',
'top250': 'IMDB - Top 250 Movies',
'boxoffice': 'IMDB - Box Office',
'rentals': 'IMDB - Top DVD rentals',
}
chart_order = {
'theater': 2,
'top250': 5,
'boxoffice': 3,
'rentals': 4,
charts = {
'theater': {
'order': 1,
'name': 'IMDB - Movies in Theaters',
'url': 'http://www.imdb.com/movies-in-theaters/',
},
'boxoffice': {
'order': 2,
'name': 'IMDB - Box Office',
'url': 'http://www.imdb.com/chart/',
},
'rentals': {
'order': 3,
'name': 'IMDB - Top DVD rentals',
'url': 'http://m.imdb.com/boxoffice_json',
'type': 'json',
},
'top250': {
'order': 4,
'name': 'IMDB - Top 250 Movies',
'url': 'http://www.imdb.com/chart/top',
},
}
first_table = ['boxoffice']
@@ -125,23 +130,30 @@ class IMDBAutomation(IMDBBase):
movies = []
for url in self.chart_urls:
if self.conf('automation_charts_%s' % url):
data = self.getHTMLData(self.chart_urls[url])
for name in self.charts:
chart = self.charts[name]
url = chart.get('url')
if self.conf('automation_charts_%s' % name):
data = self.getHTMLData(url)
if data:
html = BeautifulSoup(data)
try:
result_div = html.find('div', attrs = {'id': 'main'})
try:
if url in self.first_table:
table = result_div.find('table')
result_div = table if table else result_div
except:
pass
if chart.get('type', 'html') == 'html':
result_div = html.find('table')
imdb_ids = getImdb(str(result_div), multiple = True)
try:
if url in self.first_table:
table = result_div.find('table')
result_div = table if table else result_div
except:
pass
imdb_ids = getImdb(str(result_div), multiple = True)
else:
imdb_ids = getImdb(str(data), multiple = True)
for imdb_id in imdb_ids:
info = self.getInfo(imdb_id)
@@ -158,14 +170,19 @@ class IMDBAutomation(IMDBBase):
def getChartList(self):
# Nearly identical to 'getIMDBids', but we don't care about minimalMovie and return all movie data (not just id)
movie_lists = []
max_items = int(self.conf('max_items', section='charts', default=5))
max_items = int(self.conf('max_items', section = 'charts', default=5))
for url in self.chart_urls:
if self.conf('chart_display_%s' % url):
movie_list = {'name': self.chart_names[url], 'url': self.chart_urls[url], 'order': self.chart_order[url], 'list': []}
data = self.getHTMLData(self.chart_urls[url])
for name in self.charts:
chart = self.charts[name].copy()
if self.conf('chart_display_%s' % name):
chart['list'] = []
data = self.getHTMLData(chart.get('url'))
if data:
html = BeautifulSoup(data)
@@ -173,7 +190,7 @@ class IMDBAutomation(IMDBBase):
result_div = html.find('div', attrs = {'id': 'main'})
try:
if url in self.first_table:
if chart.get('url') in self.first_table:
table = result_div.find('table')
result_div = table if table else result_div
except:
@@ -183,15 +200,15 @@ class IMDBAutomation(IMDBBase):
for imdb_id in imdb_ids[0:max_items]:
info = self.getInfo(imdb_id)
movie_list['list'].append(info)
chart['list'].append(info)
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', (chart.get('url'), traceback.format_exc()))
if movie_list['list']:
movie_lists.append(movie_list)
if chart['list']:
movie_lists.append(chart)
return movie_lists