From aee5d2a9c94317c47ce605ed1ea3a5df7709d347 Mon Sep 17 00:00:00 2001 From: localhost_frssoft Date: Fri, 2 Sep 2022 11:28:24 +0300 Subject: [PATCH] Implemented limit on suggested movies --- src/fmn_database.py | 6 +++++- src/listener_context.py | 13 +++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/fmn_database.py b/src/fmn_database.py index 1dcc42d..3ff3e26 100644 --- a/src/fmn_database.py +++ b/src/fmn_database.py @@ -30,12 +30,16 @@ def mark_as_watched_movie(original_name=None, ru_name=None, year=None): def get_already_watched(original_name=None, ru_name=None, year=None): already_watched = c.execute(f"SELECT * FROM watched_movies WHERE original_name == (?) AND ru_name == (?) AND year == (?) COLLATE NOCASE", (original_name,ru_name,year)).fetchone() - if already_watched is not None: + if already_watched: return True else: return False +def get_suggested_movies_count(): + poll_count = c.execute(f"SELECT * FROM poll").fetchall() + return len(poll_count) + def per_user_accepted_movie_count(acct=str): user_suggested_count = c.execute(f"SELECT user_suggested FROM poll WHERE user_suggested == (?)", (acct,)).fetchall() diff --git a/src/listener_context.py b/src/listener_context.py index aa4b858..d15395f 100644 --- a/src/listener_context.py +++ b/src/listener_context.py @@ -5,11 +5,11 @@ from dateutil.relativedelta import relativedelta, TU import re import logging -from config import hour_poll_posting, bot_acct, instance +from config import hour_poll_posting, bot_acct, instance, limit_all_movies_poll from src.fedi_api import get_status_context, get_status, post_status from src.kinopoisk_api import get_kinopoisk_movie from src.imdb_datasets_worker import get_title_by_id -from src.fmn_database import add_movie_to_poll, get_already_watched +from src.fmn_database import add_movie_to_poll, get_already_watched, get_suggested_movies_count from src.fmn_states_db import get_state, add_state from src.fmn_poll import create_poll_movies, get_winner_movie @@ -102,7 +102,7 @@ def scan_context_thread(): message_writer.append("❌ Не найдено.") elif movie[index_type] not in ("movie", "FILM", "video"): type_of_title = movie[index_type] - message_writer.append(f"❌ Не принято: Мы принимаем фильмы, если они: полнометражные, художественные, не являются сериалами") + message_writer.append(f"❌ Не принято:\n- Нам не подходят: сериалы, короткометражные и документальные фильмы") logger.info(f'Предложение {acct} отклонено: не подходящий тип фильма: {type_of_title}') else: @@ -116,9 +116,14 @@ def scan_context_thread(): if name_ru is None: movie_string = f"{name}, {year}" + if get_suggested_movies_count() >= limit_all_movies_poll: + post_status('🎬 Мы не можем обработать ваше предложение: количество уже предложенных не помещается в лимит голосовалки.', id_st) + logger.warning(f'Предложение {acct} было отклонено: количество уже предложенных фильмов превышает\равно {limit_all_movies_poll}') + break + if get_already_watched(name, name_ru, year) == True: message_writer.append(f"ℹ️Этот фильм уже был на FMN: {movie_string}") - logger.info('Попытка предложить уже просмотренный фильм: {acct} {name} {name_ru} {year}') + logger.info(f'Попытка предложить уже просмотренный фильм: {acct} {name} {name_ru} {year}') continue if add_movie_to_poll(acct, name, name_ru, year) == True: