Бот для автоматизации сбора предложений фильмов на FMN и создания голосования
Go to file
localhost_frssoft b3932f06f0
All checks were successful
Run tests / Run-Test (push) Successful in 15s
forgot config
2024-07-21 19:23:37 +03:00
.gitea/workflows forgot config 2024-07-21 19:23:37 +03:00
src typo in conf... 2024-07-16 16:10:03 +03:00
.gitignore Moved config to .example; update .gitignore 2022-11-23 03:08:20 +03:00
auth_helper.sh Attempt fix auth helper 2022-09-05 00:43:02 +03:00
config.py.example typo in conf... 2024-07-16 16:07:50 +03:00
COPYING Add CC0 public domain COPYING 2022-11-23 03:11:50 +03:00
fmn_bot.py some fix, well fucked up gregorian calendar... 2024-07-16 16:04:36 +03:00
MIRRORS Criminally Cute mirror :) 2022-12-19 23:33:54 +03:00
README.md update README 2024-07-16 17:47:52 +03:00
requirements.txt logging switched to loguru 2022-09-07 02:55:12 +03:00
test.py test date 2024-07-16 17:05:22 +03:00
update_imdb_database.py Display datasets date 2022-09-03 19:48:14 +03:00

Fediverse Movie Night Bot (FMN Bot)

Бот для автоматизации сбора предложений фильмов на FMN и создания голосования
Special for XXIVProduction and drq@mastodon.ml.

Первичная инициализация

  • Установка зависимостей python3 и виртуального окружения
python3 -m venv venv
. venv/bin/activate
pip install -r requirements.txt
  • Обновите\создайте базу imdb
    Убедитесь, что у вас есть минимум 850~ мегабайт свободного места.
python3 update_imdb_database.py

Этот процесс довольно продолжительный (5~ минут). После завершения, загруженные датасеты *.tsv.gz можно удалить.
База может весить около 390~ мегабайт.

  • Зарегистрируйтесь и получите токен-ключ для неофициального API Кинопоиска
    Имейте ввиду, что даже будучи неофициальным - они не принимают анонимную почту, так что нужно ещё иметь какой-нибудь настоящий ящик для всякой всячины. Скопируйте токен.
touch .auth_kinopoisk
chmod 600 .auth_kinopoisk

Вставьте без пробелов ваш токен в файл .auth_kinopoisk

  • Авторизация в Fediverse (гарантированно работает с Pleroma)
    Убедитесь, что у вас есть curl, jq и любой браузер (в т.ч. консольные w3m, links, lynx...)
browser=links ./auth_helper.sh

Следуйте указаниям скрипта, залогиньтесь в ваш аккаунт и скопируйте код-ключ с браузера, закройте и вставьте в появившееся поле ввода.

  • Настройка бота
    В файле config.py.example описан каждый параметр, который можно менять сделайте его копию в каталог с ботом убрав расширение .example
cp config.py.example config.py

Запуск

python3 fmn_bot.py

Использование

Просто упомяните бота (упоминающий должен быть прописан в администраторах бота см. config.py), в воскресенье/понедельник, когда Fediverse Movie Night окончен (В новой версии, теперь встроена функция автоматического срабатывания в полночь, если упоминания не было). Бот инициализирует сборщика предложений и будет собирать фильмы, которые будут поступать в виде ссылок на imdb.com (также теперь есть поддержка фронтедов libremdb) и kinopoisk.ru в том треде, где его упомянули. Сбор будет завершен во вторник 16:00 (по-умолчанию) MSK+3. После этого всех кто не успел предложить фильм бот будет уведомлять, что сбор завершен и даст ссылку на голосовалку. По завершению голосовалки (суббота 16:00), будет вычисляться фильм-победитель на FMN, если у нескольких фильмов одинаковые голоса, то будет создан tie breaker. Победивший фильм будет записан сразу как "просмотренный", чтобы не добавлять его на следующий FMN повторно. Далее бот будет ждать очередного упоминания.

Note: Рекомендуется использовать ссылки на imdb.com, так как локальная база IMDB надёжнее, чем сетевой сторонний API Кинопоиска.
Note2: Список доступных для приёма инстансов libremdb обновляется вручную и может не соотвествовать официальному.

Список поддерживаемых инстансов libremdb:

Правила оформления постов с фильмами (рекомендательное)

  • Пользователь может предложить несколько фильмов в посте, но только при условии, что он берёт их с одного и того же источника
  • Пользователь может предлагать фильмы несколькими постами, но лучше избежать этого.
  • Ссылки можно располагать любым удобным способом, но рекомендуется расположить их как список:
[ваш реплей на пост]
https://www.imdb.com/title/tt0087544/
https://www.imdb.com/title/tt0120655/