Как получить миниатюру фильма с помощью IMDbPy?

Используя IMDbPy, очень легко получить доступ к фильмам с сайта IMDB:

import imdb

access = imdb.IMDb()
movie = access.get_movie(3242) # random ID

print "title: %s year: %s" % (movie['title'], movie['year'])

Однако я не вижу способа получить изображение или миниатюру обложки фильма. Предложения?


person andrewrk    schedule 09.11.2008    source источник


Ответы (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
person Tim Kersten    schedule 09.11.2008

Ответ из списка рассылки IMDbPy:

Если он присутствует, URL-адрес доступен через movie['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).

Точно так же выстрел в голову человека сохраняется в person['headshot'].

Что нужно знать:

  • обложки и хедшоты доступны только при получении данных с веб-сервера (через http или мобильные системы доступа к данным), а не в текстовых файлах данных ("sql" или "local").
  • используя изображения, вы должны соблюдать условия политики IMDb; см. http://imdbpy.sourceforge.net/docs/DISCLAIMER.txt
  • изображения, которые вы получите, будут различаться по размеру; вы можете использовать модуль python-imaging для их масштабирования, если это необходимо.
person andrewrk    schedule 09.11.2008
comment
«URL-адрес обложки» в фильме возвращает мне false, даже если он есть. - person Sam; 02.10.2009