# -*- coding: utf-8 -*-
# vi:si:et:sw=4:sts=4:ts=4
import re
from ox import strip_tags, find_re
from ox.cache import read_url
def get_id(url):
return url.split("/")[-1]
def get_data(id):
'''
>>> get_data('129689')['cast'][1][1]
u'Marianne'
>>> get_data('129689')['credits'][0][0]
u'Jean-Luc Godard'
>>> get_data('129689')['posters'][0]
u'http://image.allmusic.com/00/adg/cov200/dru800/u812/u81260bbffr.jpg'
>>> get_data('129689')['rating']
u'4.5'
'''
if id.startswith('http'):
id = get_id(id)
data = {
"url": get_url(id)
}
html = read_url(data["url"], unicode=True)
data['aka'] = parse_list(html, 'AKA')
data['category'] = find_re(html, '
category.*?(.*?)')
data['countries'] = parse_list(html, 'countries')
data['director'] = parse_entry(html, 'directed by')
data['genres'] = parse_list(html, 'genres')
data['keywords'] = parse_list(html, 'keywords')
data['posters'] = [find_re(html, '(.*?)')).strip()
data['themes'] = parse_list(html, 'themes')
data['types'] = parse_list(html, 'types')
data['year'] = find_re(html, '.*?(\d+)')
#data['stills'] = [re.sub('_derived.*?/', '', i) for i in re.compile('(.*?)')).strip()
return data
def get_url(id):
return "http://allmovie.com/work/%s" % id
def parse_entry(html, title):
html = find_re(html, '%s.*?(.*?)' % title)
return strip_tags(html).strip()
def parse_list(html, title):
html = find_re(html, '%s.*?(.*?)' % title.lower())
r = map(strip_tags, re.compile('(.*?)', re.DOTALL).findall(html))
if not r and html:
r = [strip_tags(html)]
return r
def parse_table(html):
return [
[
strip_tags(r).strip().replace(' ', '')
for r in x.split('-')
]
for x in find_re(html, ' (.*?)').split('')[:-1]
]
def parse_text(html, title):
return strip_tags(find_re(html, '%s | .*?(.*?) | ' % title)).strip()
if __name__ == '__main__':
print get_data('129689')
# print get_data('177524')