No description
  • Python 71.5%
  • CSS 28.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-07-18 16:57:59 +00:00
static initial commit 2024-01-06 18:22:24 +04:00
add_old_releases.py add add_old_releases 2025-06-09 23:23:42 +02:00
app.ini up ini/readme for rotating logs 2025-06-16 14:49:41 +00:00
backfill_missing_tournaments.py add backfiller 2026-02-01 17:04:36 +02:00
config_example.py add config_example 2024-01-09 13:26:33 +04:00
create_graph.py rm networkx graph creation 2025-07-26 14:17:14 +00:00
flask_app.py fix question difficulty thresholds to use even 20% steps 2026-03-09 15:18:10 +01:00
LICENSE add license 2024-01-09 13:44:16 +04:00
README.md Add canonical repository notice 2026-07-18 16:57:59 +00:00
test_graph_db.py add graph-based BFS 2025-07-26 16:04:10 +02:00
test_handshakes_integration.py add graph-based BFS 2025-07-26 16:04:10 +02:00
update_db.py fix tournament metadata loss when API renames a field 2026-05-30 00:29:11 +02:00
wsgi.py initial commit 2024-01-06 18:22:24 +04:00

Основной репозиторий этого проекта — https://code.pecheny.me/pecheny/chgkbuff_reborn, пожалуйста, создавайте issues там.

Buff

Что такое и как работает

Сервис, повторяющий функциональность почившего chgk.bodrovis.tech: по введённому ID на турнирном сайте показывает, с кем этот игрок чаще всего играл, также можно посмотреть совместные игры.

Чтобы быстро работало, зеркалит в sqlite базу турнирного сайта, выкачивая её по апи.

Сервис поднят на buff.pecheny.me.

Использован CSS из проекта water.css (fun fact: авторке проекта на момент создания было что-то типа 14 лет!)

Как поднять самостоятельно

0. Установить зависимости: pip install requests dill networkx flask uwsgi

1. Скопировать config_example.py в config.py, указать настоящее секретное значение (например, через python -c 'import uuid; print(uuid.uuid4())')

2. Разово запустить db_updater.py, дождаться, пока он выкачает всю базу с нуля (это занимает порядка 56 часов)

3. Создать /etc/systemd/system/buff.service, заменив значения в {{}} на нужные:

[Unit]
Description=uWSGI instance to serve buff
After=network.target

[Service]
User=ap
Group=www-data
WorkingDirectory={{path/to/buff}}
Environment="PATH={{path/to/python/bin}}"
ExecStart={{path/to/python/bin}}/uwsgi --ini app.ini
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target

Запустить сервис: sudo systemctl enable buff && sudo systemctl start buff

4. Настроить, чтобы DNS вашего сайта your.domain.com смотрел на IP сервера.

5. Создать конфиг в /etc/nginx/sites-available/buff:

server {
    server_name {{your.domain.com}} {{your.domain.com}};

    location / {
        include uwsgi_params;
        uwsgi_pass unix:{{path/to/buff}}/app.sock;
    }

    listen 80;
}

Засимлинкать конфиг в /etc/nginx/sites-enabled: sudo ln -s /etc/nginx/sites-available/buff /etc/nginx/sites-enabled

Перезапустить nginx: sudo systemctl restart nginx

6. Запустить certbot: sudo certbot --nginx -d {{your.domain.com}}

Снова перезапустить nginx: sudo systemctl restart nginx

После этого сервис должен быть доступен по https://your.domain.com

7. Настроить еженочное обновление базы: crontab -e и добавляем строчку 5 1 * * * {{path/to/python}} {{path/to/buff}}/update_db.py