0.21.7-speedruns-utils 2022年1月3日
0.21.6-dev.36 2020年2月23日
0.0.0-- 2022年7月30日

#11 in #speedrun

MIT/Apache

1KB

speedruns

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

speedruns.ca上运行。

披露

此项目与speedrun.com无关,也不受其支持。

内容许可

有关详细信息,请参阅https://www.speedrun.com/legal。所有数据均来自speedrun.com的贡献者,并在Creative Commons Attribution-NonCommercial 4.0国际许可下使用和分发。

代码许可

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

开发

环境

安装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 交叉记录的完整性验证逻辑。旨在用于数据库,但与数据库无关。
  • ::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 的实现。

无运行时依赖