0.21.7-速度跑版 2022年1月3日
0.21.6-dev.36 2020年2月23日
0.20.21-dev.3 2020年2月10日
0.0.1 2019年5月4日
0.0.0-- 2022年7月30日

#10 in #速度跑

Download history • Rust 包仓库 8/week @ 2024-06-22 • Rust 包仓库 16/week @ 2024-07-06 • Rust 包仓库 68/week @ 2024-07-27 • Rust 包仓库

每月下载量 84

MIT/Apache

1KB

速度跑版

用于镜像 speedrun.com API 数据的非官方工具。使用 Rust、TypeScript、GraphQL 和 React。

speedruns.ca 上运行。

披露

本项目与 speedrun.com 无关,未经其赞助。

内容许可

有关详细信息,请参阅 https://www.speedrun.com/legal。所有数据均来自 speedrun.com 贡献者,并按照创意共享署名-非商业4.0国际许可证使用和分发。

代码许可

版权所有 Jeremy Banks,在 MIT 许可证 下发布。

开发

环境

使用 nvm 安装 rustup 以管理 Rust 工具链,并使用 nvm 管理 JavaScript 工具链,按照其页面上的说明进行操作。

使用 nvm 安装并激活我们期望的 npm 版本,然后安装 Yarn 软件包管理器

nvm install
nvm use
npm install -g yarn@^1

运行服务器

您可以使用我们的 yarn start 脚本一起启动后端和前端服务器。您可能需要在浏览器中打开 https://127.0.0.1:3000 来查看前端。

yarn start

最初,这只会加载仅适用于开发的测试用例数据集。

导入数据

如果您想使用实际的数据集,您需要导入它。

(可选)您可能需要首先从 https://archive.org/download/speedrun.com-2020-02-01 下载存档副本 {runs,users,games}.jsonl.gz 并将其放入 data/api,以减少通过 API 加载的数据量(这可能需要很长时间)。

运行以下命令以下载任何新数据

cargo run api download

这可能需要很长时间(如果是从头开始,可能需要整整一天)。这不会包括现有项目的更改或删除,我们假设它们未更改。如果您想确保每条记录都是最新的,您需要删除下载的数据并从头开始。

通过运行以下命令验证并将下载的 API 数据转换为我们的内部格式

cargo run api import

任何不符合我们预期格式的记录(缺少现在必需的字段、不一致的计时方法,或者我们不支持的特定选项)将被丢弃,因此我们的排行榜可能不会与speedrun.com(其软件能够稳健地处理各种形状的旧数据)相匹配。

重新启动服务器以加载新数据。

安装

cargo install speedruns 用于安装或更新 speedruns

npm install --global speedruns 用于安装或更新 speedruns-frontened

包结构

speedruns 接口可能要到 1.0.0 才会稳定。它首先作为一个服务开发,其次是一个库。

::utils(包:speedruns_utils

共享代码的集合。

::models(包:speedruns_models)依赖于 utils

  • ::model 我们速度跑模型的数据类型。
  • ::validation 单条记录验证逻辑。
  • ::integrity 交叉记录完整性验证逻辑。旨在用于 database 但与其无关。
  • ::aggregations 聚合记录集合的函数。
    • ::排行榜([]) ->排行榜 {游戏,分类,关卡?, {...}[] }
    • ::进度([]) ->进度 {游戏,分类,关卡?, {...}[] }

::database(包:speedruns_database)依赖于 modelutils

  • ::database 我们内存“数据库”的核心数据模型。

::juniper(包:speedruns_juniper)依赖于 databasemodelutils

  • ::juniper 在我们的数据库之上构建的 Juniper GraphQL 模型。
  • ::cli HTTP 服务器和 CLI 实现。

::api(包:speedruns_api)依赖于 modelutils

  • ::types API 响应数据类型。
  • ::normalize 将 API 数据转换为我们的模型。
  • ::cli 下载器和 CLI 实现。

::cli(包:speedruns_cli)依赖于 apidatabasejunipermodelutils

  • ::main() 二进制目标 CLI 的实现。

无运行时依赖