В этом задании мы сделаем рекомендательную систему для фильмов. Кривую и косую, но свою.
Задания стоит выполнять строго по очереди, иначе легко запутаться.
Ну, поехали.
- Зарегистрироваться на TMDB =============================
Для получения информации о фильмах мы будем пользоваться themoviedb.org – это такой IMDB (или Кинопоиск), но с удобным интерфейсом для разработчиков.
Порядок действий такой: сначала надо зарегистрироваться и подтвердить почту, потом войти в профиль найти пункт API, а оттуда – в большую форму для получения доступа к АПИ.
В форме нужно заполнить все поля, но телефон не обязательно указывать свой. Адрес должен быть реальным и совпадать с индексом. Советую проверить по Гугл-карте.
После удачного заполнения формы, сервис покажет страницу с несколькими персональными
ключами доступа, в том числе "Ключ API (v3 auth)". Он выглядит примерно так: 1fb571fefa5d202b84789e021a70fc52
.
Это – твой логин и пароль для доступа к базе фильмов в одном флаконе. Скопируй его, он пригодится позже.
Теоретическая справка: статья про АПИ на Википедии,
- Знакомство с АПИ ТМДБ ========================
Теперь надо воспользоваться полученным доступом.
В базе ТМДБ все фильмы хранятся пронумерованными. Получить информацию о фильме, зная его номер, просто.
Чтобы получить информацию о фильме по его номеру, понадобится метод get-movie-details. Прочитай документацию по ссылке, оцени количество параметров фильма.
Чтобы тебе было легче, вот несколько вспомогательных функций, которые умеют вытягивать данные из ТМДБ:
import urllib.request
import urllib.parse
import json
def load_json_data_from_url(base_url, url_params):
url = '%s?%s' % (base_url, urllib.parse.urlencode(url_params))
response = urllib.request.urlopen(url).read().decode('utf-8')
return json.loads(response)
def make_tmdb_api_request(method, api_key, extra_params=None):
extra_params = extra_params or {}
url = 'https://api.themoviedb.org/3%s' % method
params = {
'api_key': api_key,
'language': 'ru',
}
params.update(extra_params)
return load_json_data_from_url(url, params)
Этот код стоит вставить в файл .py, а свой, пользовательский код писать после него.
Вот так, например, можно узнать дату выхода фильма "300 спартанцев":
make_tmdb_api_request(method='/movie/1271', api_key='<ключ апи>')['release_date']
.
В этом задании нужно написать скрипт, который узнает бюджет фильма "Пила 2" и выведет его в консоль. Номер фильма – 215.
Теоретическая справка: документация модулей urllib.request, urllib.parse, json, статья про json на Википедии.
- Создать свою базу фильмов ============================
Теперь скачаем информацию о одной тысяче фильмов с ТМДБ себе на компьютер.
Всю скачанную информацию надо скачать и запихать в огромный список словарей (один фильм – один словарь). Весь огромный список сохранить в файл в формате json.
Сохранять можно не только информацию, которую выдаёт get-movie-details, есть много других интересных ручек АПИ. Например, get-movie-keywords, который возвращает ключевые слова сюжета или get-movie-lists, который возвращает пользовательские плейлисты, которым принадлежит этот фильм.
Теоретическая справка: ручка АПИ (она же эндпоинт, хэндл или метод АПИ) – кусок АПИ, с которым можно взаимодействовать. get-movie-details, get-movie-keywords, get-movie-lists – примеры ручек АПИ. Все ручки описаны в документации АПИ (в нашем случае это документация ТМДБ).
Юридическое замечание: вообще говоря, правила использования запрещают скачивать и хранить информацию с ТМДБ. В учебных целях с условием того, что через пару дней ты этот файл удалишь – можно.
- Поиск по своей базе фильмов ==============================
У нас есть своя база фильмов, но мы не умеем ей пользоваться. Исправим это.
В этом задании требуется написать скрипт, который будет спрашивать у пользователя слово и выводить названия всех фильмо из базы, в названии которых есть это слово (или это слово является подстрокой слова в названии).
Например, для ввода "пила", я рассчитываю увидеть все части пилы и, например, "Счастья нет, но есть пила". Если эти фильмы были скачаны с ТМДБ.
- Рекомендатор фильмов =======================
Теперь нужен скрипт, который подскажет мне, какие фильмы мне стоит посмотреть.
Работает так: я запускаю скрипт, ввожу точное название фильма, который мне нравится и вижу список рекомендованных мне фильмов.
В отборе учавствуют только фильмы из скачанного файла, сам скрипт на ТМДБ не ходит.
Алгоритм поиска похожих фильмов придумай свой: по похожему бюджету, рейтингу, совпадающих словах в сюжете, вхождению в одинаковые плейлисты... что угодно, дай волю изобретательности.