0.21.7-speedruns-utils |
|
---|---|
0.21.6-dev.36 |
|
0.0.0-- |
|
#11 in #speedrun
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
)依赖于 model
、utils
。
::database
我们内存中“数据库”的核心数据模型。
::juniper
(包:speedruns_juniper
)依赖于 database
、model
、utils
。
::juniper
在我们的数据库之上构建的 Juniper GraphQL 模型。::cli
HTTP 服务器和 CLI 实现。
::api
(包:speedruns_api
)依赖于 model
、utils
。
::types
API 响应数据类型。::normalize
将 API 数据转换为我们的模型。::cli
下载器和 CLI 实现。
::cli
(包:speedruns_cli
)依赖于 api
、database
、juniper
、model
、utils
。
::main()
二进制目标 CLI 的实现。