Как получить эскиз фильма с помощью 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 для их изменения, если это необходимо.
Другие вопросы по тегам