#advent #advent-of-code #web #merge #leaderboard #json-api #leaderboards

nightly app aocleaderboard

合并多个 Advent of Code 排行榜

9个版本 (5个破坏性更新)

0.6.1 2022年11月25日
0.5.0 2021年12月2日
0.4.1 2021年12月2日
0.3.1 2021年11月30日
0.1.1 2020年11月11日

135可视化

Download history 37/week @ 2024-07-23 25/week @ 2024-07-30

每月下载量62次

MIT 许可证

2MB
1K SLoC

Rust 1K SLoC // 0.0% comments Tera 138 SLoC

aocleaderboard

Advent of Code 的私人排行榜目前限制为200个用户。这个网络应用程序可以将多个排行榜的用户合并,根据成员总数重新计算他们的分数,并将它们以与原始 Advent of Code 网站相同的样式和感觉显示在单个页面上。它还可以显示包含所有年份分数的综合排行榜。

排行榜从 adventofcode.com API URL 以 JSON 格式获取。

屏幕截图

包含本地分数的排行榜

alt text

包含星级数量的排行榜

alt text

综合排行榜

alt text

要求

此应用程序使用 Rocket 网络框架构建,因此需要 Rust 的 nightly 版本。

安装

  • 在 Linux 上,安装适合您系统的适当开发工具,例如
# On Fedora, RHEL, CentOS
# sudo dnf groupinstall "Development Tools"

# On Debian, Ubuntu
# sudo apt install build-essential
  • 使用 rustup 安装 Rust 的最新版本或使用以下命令更新它
# rustup update
  • 安装 nightly 工具链
# rustup toolchain install nightly
  • 克隆此仓库
# git clone https://github.com/scarvalhojr/aocleaderboard.git
  • 将仓库目录设置为使用 nightly 工具链
# cd aocleaderboard
# rustup override set nightly
  • 构建
# cargo build --release

配置

所需配置

# cp settings_sample.toml settings.toml
  • 编辑新的 settings.toml 文件,并提供包含排行榜名称和来自 adventofcode.com 的排行榜访问权限的会话cookie的排行榜ID列表。
leaderboard_name = "me and my friends"
leaderboard_ids = [12345, 23456]
session_cookie = "session=<session cookie string>"

要获取会话cookie,请登录到 adventofcode.com 并检查浏览器中存储的cookie。您必须是排行榜的成员才能获取其数据 - 在 https://adventofcode.com/leaderboard/private 检查您的排行榜。

其他设置

  • settings.toml

    • leaderboard_default_order - 默认排行榜排序方式,可以是 "local_score"(默认)或 "stars"
    • leaderboard_update_sec - 从 adventofcode.com 获取排行榜的频率,以秒为单位。
    • latest_event_year - 覆盖最新事件年份,默认为当前年份,如果当前日期在12月1日之前(第一个谜题解锁时),则为上一年份。
    • exclude_members - 要从排行榜中排除的成员ID列表。
  • 要更改任何Rocket特定设置,例如TLS证书和密钥的路径,或IP地址和绑定端口,请复制名为 Rocket.tomlRocket_sample.toml

运行

启动应用程序

# cargo run --release

如果您正在使用Docker Compose

docker-compose up
# Or, for detached
docker-compose up -d

使用

将您最喜欢的浏览器指向 https://127.0.0.1:8000

功能

  • 为了避免过载Advent of Code网站,排行榜在内存中缓存,并在可配置的时间限制(默认为15分钟)后再次获取。
  • 排行榜可以按本地分数(根据获得每个星星的时间)或星星数量排序。平局将通过最近获得星星的时间来打破。
  • 整体排行榜结合了所有年份的分数。

贡献

欢迎反馈和拉取请求。

支持Advent of Code

Advent of Code 是由 Eric Wastl 创建并由志愿者维护的免费在线 Advent 日历,其中包含小型编程谜题。请考虑 支持他们的工作

依赖项

~30–45MB
~835K SLoC