Домашнее задание к третьей лекции

1. Фильмы

В файле movies.csv собрана информация о 1682х фильмах. Информация о фильме включает в себя его название, дату выхода, сылку на IMDB и принадлежность к разным жанрам.

В этой задаче нужно узнать, в каких годах было выпущенно сколько фильмов. Вывести на экран год и количество фильмов из набора, которые вышли в этот год.

Вот описание формата:

movie id | movie title | release date | video release date | IMDb URL | unknown | Action |
Adventure | Animation | Children's | Comedy | Crime | Documentary | Drama | Fantasy | Film-Noir |
Horror | Musical | Mystery | Romance | Sci-Fi | Thriller | War | Western |

IMPORTANT: если вы используете систему контроля версий, не надо класть movies.csv в него. Добавьте его в .gitignore, а в readme напишите, где он должен лежать, чтобы всё ожило.

HINT 1: csv - распространённое семейство форматов. Python умеет с ним работать, так что можно не парсить файла вручную.

HINT 2: заметили, что часто требуется подсчитать количество повторений элементов? Исполнители песен, районы учебных заведений... это можно сделать проще.

2. Советчик фильмов

На основании того же набора данных, что и в предыдушем задании, написать скрипт, который принимает на вход год и жанр, а выдаёт количество фильмов, которые вышли в заданном году и имеют заданный жанр. Помимо этого скрипт должен выводить название случайного фильма, удовлетворяющего этим критериям.

Формат запуска скрипта из консоли должен быть следующим: python recommend_movie.py --genre comedy --year 1996

HINT: для парсинга аргументов, с которыми запцщен скрипт можно использовать модуль argparse.

3. Парсер рейтинга

В наборе данных из первой задачи есть ссылка на страницу фильма на IMDB. На этой странице есть рейтинг фильма.

Задача - доработать советчик фильмов так, чтобы для советуемого фильма (из второй задачи) показывался его рейтинг.

HINT: Если использовать модуль requests (а я рекомендую его использовать), то html-код страницы можно получить совсем просто:

raw_html_text = requests.get('http://us.imdb.com/M/title-exact?Toy%20Story%20(1995)').text

4. Веб-интерфейс

Да, я знаю, о чём вы думаете. Вот уже второе ДЗ - и ни одного сайта. Пора это исправить.

Надо сделать сайт, который будет являться веб-интерфейсом к советчику из предыдущих заданий.

На этом сайте зайдя по ссылке /movies/drama/1995/, я рассчитываю увидеть рекомендуемый мне фильм (драму 95го). Точнее, его название, рейтинг (см. третье задание) и изображение (ссылку на него тоже можно стащить с IMDB).

В качестве фреймворка (aka волшебной таблетки, которая поможет из скрипта сделать сайт) настойчиво советую использовать bottle.py. Там прямо по ссылке туториал, в котором есть всё, что нужно.

Не забудьте перечислить все сторонние пакеты с замороженными версиями в requirements.txt.

ADVANCED: заметили, что вытащить нужную картинку из IMDB уже не так просто? Для таких задач принято использовать парсеры html/xml, например, Beautiful Soup.

5. Ссылка на страницу фильма на википедии

К картинке, названию и рейтингу теперь неплохо бы добавить ссылку на страницу фильма на вики - чтобы можно было зайти и почитать про фильм подробнее.

Собственно, задача состоит в этом, метод решения подойдёт любой.

Вот первый вариант, который пришёл мне в голову: сделать запрос в гугл "%название фильма% %год фильма% wikipedia", тогда первая же ссылка на википедию будет вести именно на страницу фильма. Для этого придётся научиться пользоваться гугловым поиском из python, а это не сложно, если использовать батарейку google (quickstart).

← к материалам курса