45 lines
No EOL
1.5 KiB
Python
45 lines
No EOL
1.5 KiB
Python
import re
|
|
|
|
import ox.imdb as imdb
|
|
from oxutils.cache import getUrlUnicode
|
|
from oxutils.text import findRe
|
|
|
|
|
|
def getMovieData(title = '', director = '', imdbId = ''):
|
|
data = {'posterUrls': []}
|
|
if not imdbId:
|
|
imdbId = imdb.getMovieId(title, director)
|
|
print imdbId
|
|
html = getUrlUnicode('http://impawards.com/archives/latest.html', timeout = 0)
|
|
pages = int(findRe(html, '<a href = page(.*?).html>'))
|
|
for page in range(pages + 1, 0, -1):
|
|
print page
|
|
if page <= pages:
|
|
html = getUrlUnicode('http://impawards.com/archives/page%s.html' % page, timeout = -1)
|
|
urls = parseArchivePage(html)
|
|
print urls
|
|
for url in urls:
|
|
html = getUrlUnicode(url)
|
|
d = parseMoviePage(html)
|
|
print d
|
|
if d['imdbId'] == imdbId:
|
|
data['posterUrls'].append(d['posterUrl'])
|
|
print d['posterUrl']
|
|
data['posterUrls'].sort()
|
|
return data
|
|
|
|
def parseArchivePage(html):
|
|
urls = []
|
|
results = re.compile('<a href = \.\./(.*?)>', re.DOTALL).findall(html)
|
|
for result in results:
|
|
urls.append('http://impawards.com/%s' % result)
|
|
return urls
|
|
|
|
def parseMoviePage(html):
|
|
data = {}
|
|
data['imdbId'] = findRe(html, 'imdb.com/title/tt(.*?) ')
|
|
data['posterUrl'] = 'http://impawards.com/%s' % findRe(html, '<td align=center><br><img SRC="(.*?)"')
|
|
return data
|
|
|
|
if __name__ == '__main__':
|
|
getMovieData('Brick', 'Rian Johnson') |