Chart cleanup
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user