#Телеграм-бот по поиску фильмов
##Описание проекта Данный проект представляет собой телеграм-бота, который позволяет пользователям искать фильмы и сериалы с использованием API Кинопоиска. Бот поддерживает поиск по названию, рейтингу, бюджету, а так же ведет историю и позволяет сохранять избранные фильмы.
##Основные возможности
- Поиск фильма/сериала по названию
- Поиск фильмов/сериалов по рейтингу
- Поиск фильмов/сериалов по жанру
- Поиск фильмов с низким/высоким бюджетом
- Просмотр истории предыдущих поисков
- Добавление фильмов в избранное и просмотр списка избранных
#Команды и управление ботом
- Добавлены базовые команды для управления ботом:
- /start - запуск бота, вывод приветственного сообщения и основной клавиатуры с кнопками
- /stop - остановка обработки команд для конкретного пользователя, приостановка работы бота
- /help - выводит список доступных команд с краткой инструкцией
- Для удобства пользователя реализованы реплай-кнопки:
- Старт - вызывает команду /start
- Стоп - вызывает команду /stop
- Помощь - вызывает команду /help
- Все основные команды так же доступны через инлайн-клавиатуру для быстрого и удобного взаимодействия
- Добавлены обработчики команд добавления фильма в избранное и удаления из него, а также возможность просмотра списка избранных фильмов.
#Используемы технологии и библиотеки
- Python 3.12
- pyTelegramBotAPI - для работы с Telegram API
- Peewee ORM - для работы с базой данных SQLite
- requests - для отправки HTTP-запросов к API Кинопоиск
- Virtualenv - для изоляции окружения
#Установка и запуск
-
Клонировать репозиторий: git clone https://gitlab.skillbox.ru/anna_prokusheva/python_basic_diploma/-/tree/master
-
Перейти в каталог проекта и активировать виртуальное окружение: python -m venv .venv Windows .venv\Scripts\activate Linux/MacOS source .venv/bin/activate
-
Установить зависимости: pip install -r requirements.txt
-
Создать файл .env в корне проекта и добавить переменные окружения: BOT_TOKEN=ваш_токен_бота X-API-KEY=ваш_токен_кинопоиска
-
Запустить бота: python main.py
#Демонстрация работы с API Кинопоиска Пример запроса к API из кода:
import requests headers={ 'X-API-KEY':'ваш_токен_кинопоиска' } params={ 'keyword':'matrix', 'limit': 5, } response=requests.get('https://api.kinopoisk.dev/v1.4/movie', headers=headers, params=params) deta=response.json() print(data)
Пример ответа: { 'docs':[ { 'name':'Матрица', 'year': 1999, 'rating': 8.7, 'description':'Фильм о будущем...' } ] }
#План разработки и реализованные задачи
- Инициализация и запуск базового бота с реализацией базовых команд /start и /help:
- Команда /start выводит приветственное сообщение и краткое описание бота
- Команда /help выводит список всех доступных команд с описанием
- Реализация отдельных обработчиков команд в структуре проекта
- Бот успешно запущен и протестирован локально в PyCharm
- Реализация функционала поиска фильма по названию
- Пользователь может искать фильмы по названию с помощью команды /movie_search
- Вывод результатов с форматированием для удобства чтения
- Добавление поиска по рейтингу, жанру и бюджету
- Поиск фильмов по рейтингу (/movie_by_rating)
- Поиск фильмов по жанру (/movie_by_genre)
- Поиск фильмов по бюджету:
- Фильмы с низким бюджетом (/low_budget_movie)
- Фильмы с высоким бюджетом (/high_budget_movie)
- Хранение истории запросов через Peewee ORM
- История запросов пользователей сохраняется в базе данных с возможностью фильтрации по дате
- Логируются все запросы пользователя для удобства последующего анализа и повторного использования
- Реализация избранного
- Обработка ошибок и логирование
- Настроено логирование всех значимых событий и ошибок с помощью модуля logging
- Ошибки корректно обрабатываются и информируют пользователя
- Тестирование и отладка
- Документирование и подготовка к сдаче
Текущий статус
- Все этапы работы выполнены. Документирование сделано, проект готов.
##Требования
- Puthon 3.10+
- Зарегистрированные и активные токены Telegram Bot и API Кинопоиска.
- Активное интернет-соединениее для работы с API
##Контакты Вопросы и предложения по проекту направляйте на почту: any93_16@mail.ru