From 9708d36e5dafde420fe4e222ef20e0652114a2e5 Mon Sep 17 00:00:00 2001 From: localhost_frssoft Date: Wed, 31 Aug 2022 22:22:04 +0300 Subject: [PATCH] Tie breakers checked --- src/fmn_poll.py | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/src/fmn_poll.py b/src/fmn_poll.py index be2d405..646f239 100644 --- a/src/fmn_poll.py +++ b/src/fmn_poll.py @@ -1,7 +1,9 @@ -from collections import Counter from src.fedi_api import get_status, post_status -from src.fmn_database import get_movies_for_poll, write_votes, read_votes, mark_as_watched_movie, get_already_watched, rewrite_db +from src.fmn_states_db import add_state, get_state, clear_all_states +from src.fmn_database import get_movies_for_poll, write_votes, read_votes, mark_as_watched_movie, get_already_watched, rewrite_db, reset_poll +from collections import Counter import logging +import time logger = logging.getLogger('fmn_poll') @@ -28,13 +30,13 @@ def create_poll_movies(text=text_create_poll, poll_expires=345600): poll_status_id = post_status(text, None, formated_poll_options, poll_expires=poll_expires)['id'] logger.info('Голосовалка создана') - with open('poll_status_id', mode='wt') as file: - file.write(poll_status_id) + add_state('poll_expires_at', int(time.time()) + poll_expires) + add_state('poll_status_id', poll_status_id) return poll_status_id def get_winner_movie(poll_status_id=str): - '''Отмечаем победивший фильм на голосовании как просмотренный и постим об этом''' + '''Отмечаем победивший фильм на голосовании как просмотренный или постим tie breaker''' votes_counters = [] status_with_poll = get_status(poll_status_id) poll = status_with_poll['poll'] @@ -54,15 +56,24 @@ def get_winner_movie(poll_status_id=str): if len(winned_movies) > 1: logger.warning('Будет создан tie breaker') rewrite_db(winned_movies) - create_tie_breaker() + if get_state('tie_breaker'): + create_tie_breaker(2) + else: + create_tie_breaker() else: movie = winned_movies[0] logger.warning("Победил " + str(movie)) mark_as_watched_movie(movie[1], movie[2], movie[3]) + clear_all_states() + reset_poll() -def create_tie_breaker(): - tie_poll = create_poll_movies("TIE BREAKER!!!", 8*60*60) - time.sleep(8*60*60) - get_winner_movie(tie_poll) +def create_tie_breaker(count_tie=1): + '''Создание tie breaker''' + if count_tie == 1: + add_state('tie_breaker', 1) + poll_expires = 8*60*60 + else: + poll_expires = 4*60*60 + tie_poll = create_poll_movies("[Чисто проверить как отрабатывают тай брекеры и в целом препарирование опросов] TIE BREAKER!!!", poll_expires)