Как получить эскиз фильма с использованием IMDbPy? - PullRequest
6 голосов
/ 09 ноября 2008

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

import imdb

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

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

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

Ответы [ 2 ]

10 голосов
/ 09 ноября 2008

Примечание:

  • Не у каждого фильма есть URL обложки. (Случайный идентификатор в вашем примере - нет.)
  • Убедитесь, что вы используете последнюю версию 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
2 голосов
/ 09 ноября 2008

Ответ из списка рассылки 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 для их изменения.
...