Giter Site home page Giter Site logo

kino-domino's Introduction

Kino Domino

Кинобот для мессенджера Telegram.

Бот доступен по адресу https://telegram.me/mycinema_bot или @mycinema_bot в мессенджере.

Бот умеет:

  • Находить фильм и сеанс в ближайшем кинотеатре.
  • Рекомендовать фильмы, на основе уже просмотренных.
  • Показывать список премьерных фильмов текущей недели и ссылки на трейлеры к ним.
  • Автоматически собирать в db данные о кинотеатрах, фильмах и сеансах.

Поиск похожих фильмов реализован через API TMDB, для получения API-ключа необходимо пройти регистрацию https://www.themoviedb.org

Quickstart

Команды для работы с телеграм ботом:

/start - Запуск диалога с ботом 

Example

Пример запуска скрипта парсера в среде Linux, под Python 3.5:


$ source project/bin/activate
(project)$ python parser_yandex.py
Парсим все станции метро на ветке - Калининская
...
Парсим всю инфу по кт - Пять звёзд на Новокузнецкой
...
Парсим фильм - Великая стена
...
Собираем расписание по фильму - 2+1
На дату - 2017-02-20
На дату - 2017-02-21
На дату - 2017-02-22
...

Цель проекта

Проект создавался в образовательных целях, в рамках курса - learn.python.ru

kino-domino's People

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

kino-domino's Issues

404 от tmdb при парсинге

Парсим фильм Зверопой
Traceback (most recent call last):
File "parser_yandex.py", line 328, in
main()
File "parser_yandex.py", line 323, in main
movies_id_list = check_movie_in_db()
File "parser_yandex.py", line 184, in check_movie_in_db
movie_info_from_tmdb = get_movie_info_from_tmdb_by_movie_title(movie['event']['title'])
File "/Users/macpro/projects/startups/kino-domino/request_movie_db.py", line 67, in get_movie_info_from_tmdb_by_movie_title
movie = get_info_about_movie(movie_id)
File "/Users/macpro/projects/startups/kino-domino/request_movie_db.py", line 56, in get_info_about_movie
response = movie.info(language="ru-RU")
File "/Users/macpro/venvs/kino-domino/lib/python3.5/site-packages/tmdbsimple/movies.py", line 63, in info
response = self._GET(path, kwargs)
File "/Users/macpro/venvs/kino-domino/lib/python3.5/site-packages/tmdbsimple/base.py", line 85, in _GET
return self._request('GET', path, params=params)
File "/Users/macpro/venvs/kino-domino/lib/python3.5/site-packages/tmdbsimple/base.py", line 80, in _request
response.raise_for_status()
File "/Users/macpro/venvs/kino-domino/lib/python3.5/site-packages/requests/models.py", line 831, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 404 Client Error: Not Found

Бот - start/cancel изменить

Не удобно искать в истории старт после того как нажал cancel, придумать как сделать удобнее

Внедрить ф-цию insert_or_update для парсинга в db

В данный момент реализован функционал предусматривающий получение при наличии или создание новой записи в базе(get_or_create). Нужна доработка для случаев insert_or_update.

Статистика парсера + репорт

Отчет каждое утром по отработке ночного парсера.

  • Добавлено кт
  • Добавлено фильмов
  • Добавлено сеансов
  • Премьеры = N

Суммарный отчет раз в неделю:

  •  всего кт
  • всего фильмов
  • всего сеансов

Сверка парсеров Яндекса и Рамблера

В данный момент оба парсера отрабатывают без ошибок, но результат работы отличается:
15610 - сеансов получаем из Яндекса
20175 - сеансов получаем из Рамблера
Результат по кт Москвы на три дня вперед

Парсер: дополнительные параметры.

Список дополнительных параметров которые необходимо добавить в парсер:

  • Расписание на завтра и послезавтра.
  • Стоимость билета для сеанса.
  • Адрес кинотеатра.
  • Телефоны кинотеатра.
  • Продолжительность фильма.
  • Дата старта фильма в прокате.

Список обсуждаем и может меняться.

not work

please add config example. thanks

Зависание парсинга фильмов с tmdb

Проблема проявляется только на прод зоне.
Проверить:

  • api_key, пересоздать если проблема в нем
  • возможность серверной блокировки и отлов ошибок timeout

Бот - Нет финальной фразы

Нет финальной фразы(при /cancel), если не найден фильм.
И в целом диалог странно построен, фильм нашелся, но кт где он идет не нашлось.

Диалог:

Евгений: /start
Kino-Domino: Привет, друг! Чего бы тебе хотелось?
Евгений: Сходить в кино
Kino-Domino: Хорошо! Какой фильм хочешь посмотреть?
Евгений: а
Kino-Domino: Отличный выбор! Давай теперь выберем кинотеатр?
Евгений: [Location https://maps.google.com/?q=...]
Kino-Domino: Прости я всего лишь бот, я не нашел кинотеатров где сейчас идет этот фильм!Нажми /cancel, чтобы закончить.
Евгений:
Зверопой
/cancel
/cancel

Поиск фильма по части названия

Бот находит мультфильм только при получении полного названия.
Case1: вводим "красавица", запрос geo, ошибка ничего не найдено.
Case2: вводим "красавица и чудовище", запрос geo, вывод результата.

[7:46:45 PM] Евгений: /start
[7:46:45 PM] Kino-Domino: Привет, друг! Чего бы тебе хотелось?
[8:40:26 PM] Евгений: Сходить в кино
[8:40:30 PM] Kino-Domino: Хорошо! Какой фильм хочешь посмотреть?
[8:40:32 PM] Евгений: красавица
[8:40:36 PM] Kino-Domino: Отличный выбор! Давай теперь выберем кинотеатр?
[8:40:39 PM] Евгений: [Location https://maps.google.com/?q=...]
[8:40:42 PM] Kino-Domino: Прости я всего лишь бот, я не нашел кинотеатров где сейчас идет этот фильм!Нажми /cancel, чтобы закончить.
[8:40:48 PM] Евгений: /cancel
[8:40:51 PM] Kino-Domino: Пока! Надеюсь, я помог тебе! Для возобновления диалога нажми /start
[8:40:50 PM] Евгений: /start
[8:40:53 PM] Kino-Domino: Привет, друг! Чего бы тебе хотелось?
[8:40:54 PM] Евгений: Сходить в кино
[8:40:58 PM] Kino-Domino: Хорошо! Какой фильм хочешь посмотреть?
[8:41:02 PM] Евгений: красавица и чудовище
[8:41:06 PM] Kino-Domino: Отличный выбор! Давай теперь выберем кинотеатр?
[8:41:06 PM] Евгений: [Location https://maps.google.com/?q=...]
[8:41:10 PM] Kino-Domino: Расписание кинотеатра Синема Стар : Красавица и чудовище
2017-03-17(Friday):
Сеанс в 22:00 формат - 2D, цены: 380.0-380.0
2017-03-18(Saturday):
Сеанс в 00:00 формат - 3D, цены: 430.0-430.0
Сеанс в 00:10 формат - 3D, цены: 430.0-430.0
Сеанс в 10:30 формат - 3D, цены: 220.0-220.0
Сеанс в 11:30 формат - 2D, цены: 300.0-300.0
Сеанс в 13:50 формат - 3D, цены: 350.0-350.0

Бот - зависание при выдаче расписания

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

Дублирующие записи в таблице фильмы

Проанализировать проблему и найти решение.
Названия фильмов не уникальны, пример, есть два разных фильма:
Амадей, дата выхода - 2017-02-02 и
Амадей, дата выхода - 1984-12-21
Это разные фильмы и этот случай не является ошибкой.

Нет репертуара кт Атриум

Бот при поиске репертуара зависает, запросы к базе возвращают пустой результат.
Вероятно проблема с парсером, либо где-то в логике бота конфликт.

Парсер: дополнительные параметры.

Список дополнительных параметров которые необходимо добавить в парсер:

  1. Расписание на завтра и послезавтра.
  2. Стоимость билета для сеанса.
  3. Адрес кинотеатра.
  4. Продолжительность фильма.
  5. Дата старта фильма в прокате.

Список обсуждаем и может меняться.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.