python-oxweb/oxweb/criterion.py

66 lines
2.4 KiB
Python
Raw Normal View History

# -*- coding: UTF-8 -*-
# vi:si:et:sw=4:sts=4:ts=4
import re
2008-07-03 09:24:49 +00:00
from oxlib.cache import getUrlUnicode
from oxlib.html import stripTags
from oxlib.text import findRe, removeSpecialCharacters
2008-07-03 09:21:18 +00:00
import imdb
2008-06-19 09:47:02 +00:00
def getData(criterionId):
'''
>>> getData(348)['imdbId']
'0068205'
'''
data = {}
html = getUrlUnicode('http://criterion.com/asp/release.asp?id=%s' % criterionId)
data['criterionId'] = criterionId
data['posterUrl'] = getPosterUrl(criterionId)
data['synopsis'] = stripTags(findRe(html, '<h3>Synopsis</h3>(.*?)</div>'))
result = re.compile("<title>The Criterion Collection: (.*?) by (.*?)</title>").findall(html)
data['title'] = stripTags(result[0][0])
data['director'] = stripTags(result[0][1])
data['imdbId'] = imdb.getMovieId(data['title'], data['director'])
return data
def getCriterionIds():
html = getUrlUnicode('http://criterion.com/asp/list.asp?sort=spine')
return re.compile('release.asp\?id=(.*?)"').findall(html)
def getPosterUrl(criterionId):
return 'http://criterion.com/content/images/full_boxshot/%s_box_348x490.jpg' % criterionId
2008-05-09 10:39:20 +00:00
def getMovieId(title = '', director = '', imdbId = ''):
if not imdbId:
imdbId = imdb.getMovieId(title, director)
2008-07-25 12:15:55 +00:00
html = getUrlUnicode('http://criterion.com/asp/list.asp?sort=spine', timeout = 86400)
strings = findRe(html, '<table cellspacing="0" id="browse-all-table">(.*?)</table>').split('<tr>')
strings.pop(0)
for string in strings:
2008-05-09 10:39:20 +00:00
id = findRe(string, '"release.asp\?id=(.*?)"')
criterionTitle = findRe(string, 'class="title">(.*?)</a>')
criterionTitle = re.sub('(?<=\\w)<br>(?=\\w)', ' / ', criterionTitle)
criterionTitle = criterionTitle.replace('<br>', '')
2008-05-08 08:32:14 +00:00
criterionDirector = stripTags(findRe(string, '</a>.*?</td>(.*?)</td>')).strip()
if imdb.getMovieId(criterionTitle, criterionDirector) == imdbId:
2008-05-09 10:39:20 +00:00
return id
return ''
2008-05-09 10:39:20 +00:00
def getMovieData(title = '', director = '', imdbId = ''):
2008-07-25 12:15:55 +00:00
'''
>>> getMovieData('Le mepris', 'Jean-Luc Godard')['id']
'171'
'''
2008-05-09 11:21:42 +00:00
data = {}
2008-05-09 10:39:20 +00:00
if not imdbId:
imdbId = imdb.getMovieId(title, director)
id = getMovieId(imdbId = imdbId)
if id:
html = getUrlUnicode('http://criterion.com/asp/release.asp?id=%s' % id)
2008-05-09 11:21:42 +00:00
data['id'] = id
data['posterUrl'] = getPosterUrl(id)
2008-05-09 11:21:42 +00:00
data['synopsis'] = stripTags(findRe(html, '<h3>Synopsis</h3>(.*?)</div>'))
return data