Как получить эскиз фильма с помощью IMDbPy?
Используя IMDbPy, мучительно легко получить доступ к фильмам с сайта IMDB:
import imdb
access = imdb.IMDb()
movie = access.get_movie(3242) # random ID
print "title: %s year: %s" % (movie['title'], movie['year'])
Однако я не вижу способа получить изображение или эскиз обложки фильма. Предложения?
2 ответа
Замечания:
- Не у каждого фильма есть ссылка на обложку. (Случайный идентификатор в вашем примере не.)
- Убедитесь, что вы используете последнюю версию IMDbPy. (IMDb меняется, и IMDbPy с ним.)
...
import imdb
access = imdb.IMDb()
movie = access.get_movie(1132626)
print "title: %s year: %s" % (movie['title'], movie['year'])
print "Cover url: %s" % movie['cover url']
Если по какой-либо причине вы не можете использовать вышеперечисленное, вы всегда можете использовать что-то вроде BeautifulSoup, чтобы получить URL обложки.
from BeautifulSoup import BeautifulSoup
import imdb
access = imdb.IMDb()
movie = access.get_movie(1132626)
page = urllib2.urlopen(access.get_imdbURL(movie))
soup = BeautifulSoup(page)
cover_div = soup.find(attrs={"class" : "photo"})
cover_url = (photo_div.find('img'))['src']
print "Cover url: %s" % cover_url
Ответ из списка рассылки IMDbPy:
Если присутствует, URL доступен через фильм ['URL-адрес обложки']. Помните, что он может отсутствовать, поэтому вы должны сначала протестировать что-то вроде:
если "обложка URL" в фильме:...После этого вы можете использовать модуль urllib для получения самого изображения.
Чтобы предоставить полный пример, что-то вроде этого должно помочь:
import urllib from imdb import IMDb ia = IMDb(#yourParameters) movie = ia.get_movie(#theMovieID) if 'cover url' in movie: urlObj = urllib.urlopen(movie['cover url']) imageData = urlObj.read() urlObj.close() # now you can save imageData in a file (open it in binary mode).
Таким же образом, выстрел в голову человека сохраняется в лице ['headshot'].
Что нужно знать:
- обложки и снимки с головы доступны только при извлечении данных с веб-сервера (через "http" или "мобильные" системы доступа к данным), а не в виде файлов с простым текстом ("sql" или "local").
- используя изображения, вы должны соблюдать условия политики IMDb; см. http://imdbpy.sourceforge.net/docs/DISCLAIMER.txt
- изображения, которые вы получите, будут различаться по размеру; Вы можете использовать модуль python-imaging для их изменения, если это необходимо.