/
HitriyKrab
/
FilmsBot
Обзор
Документация
Войти
/
HitriyKrab
/
FilmsBot
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
SearchingFilmsBot/movie_api.py
105 строк
4 KB
ХитрыйКраб
first_commit
23 янв 2026, 19:24
23 янв 2026, 19:24
574bba1
Код
Авторство
О чём код?
import requests from config import MOVIE_API_KEY BASE_URL = 'http://www.omdbapi.com/' def make_api_request(params): params['apikey'] = MOVIE_API_KEY response = requests.get(BASE_URL, params=params) print(f"Response status: {response.status_code}") print(f"Response text: {response.text}") if response.status_code != 200: return None return response.json() def search_movies_by_title(title, genre=None, max_results=5): data = make_api_request({'s': title, 'type': 'movie', 'page': 1}) if not data or data.get('Response') != 'True': return [] results = [] for item in data['Search'][:max_results]: # проверяем жанр, чтобы только при его необходимости делать доп запрос if genre: detail = get_movie_detail(item['imdbID']) if not detail: continue if genre.lower() not in detail.get('Genre', '').lower(): continue results.append(detail) else: # Если жанр не нужен — возвращаем базовую информацию из поиска results.append(item) return results def get_movie_detail(imdb_id): return make_api_request({'i': imdb_id, 'plot': 'short'}) or {} def search_movies_by_low_rating(max_rating, max_results=5): # Сначала получим все фильмы, например, по популярному запросу data = make_api_request({'s': 'movie', 'type': 'movie', 'page': 1}) if not data or data.get('Response') != 'True': return [] results = [] for item in data['Search'][:max_results]: detail = get_movie_detail(item['imdbID']) if not detail: continue rating = detail.get('imdbRating', 'N/A') if rating != 'N/A' and float(rating) <= max_rating: results.append(detail) return results def search_movies_by_rating(min_rating, max_results=5): # Получаем список фильмов через API data = make_api_request({'s': 'movie', 'type': 'movie', 'page': 1}) if not data or data.get('Response') != 'True': return [] results = [] for item in data['Search'][:max_results]: detail = get_movie_detail(item['imdbID']) if not detail: continue rating = detail.get('imdbRating', 'N/A') if rating != 'N/A' and float(rating) >= min_rating: results.append(detail) return results def search_movies_by_country(country, max_results=5): data = make_api_request({'s': 'movie', 'type': 'movie', 'page': 1}) if not data or data.get('Response') != 'True': return [] results = [] for item in data['Search'][:max_results]: detail = get_movie_detail(item['imdbID']) if not detail: continue if country.lower() in detail.get('Country', '').lower(): results.append(detail) return results def search_movies_by_year(year, max_results=5): data = make_api_request({'s': 'movie', 'type': 'movie', 'page': 1}) if not data or data.get('Response') != 'True': return [] results = [] for item in data['Search'][:max_results]: detail = get_movie_detail(item['imdbID']) if not detail: continue if detail.get('Year') == str(year): results.append(detail) return results def search_movies_by_director(director, max_results=5): data = make_api_request({'s': 'movie', 'type': 'movie', 'page': 1}) if not data or data.get('Response') != 'True': return [] results = [] for item in data['Search'][:max_results]: detail = get_movie_detail(item['imdbID']) if not detail: continue if director.lower() in detail.get('Director', '').lower(): results.append(detail) return results