#战斗 #宝可梦 #日志 #对战 #搜索 #命令行 #命令行工具

nightly app psbattletools

用于管理宝可梦对战日志的命令行程序

6个版本

0.2.4 2022年5月20日
0.2.3 2022年3月18日
0.1.0 2021年10月27日

#905 in 编码

MIT 许可证

80KB
1K SLoC

psbattletools

Crates.io codecov

psbattletools 是一个用 Rust 编写的命令行工具,用于操作 宝可梦对战 日志。

安装

psbattletools 目前需要 nightly Rust,因为它使用了 Rust 的内置基准测试器。如果您没有 nightly Rust,请安装 rustup,然后运行 rustup install nightly

安装 psbattletools 本身只需运行 cargo install psbattletools

使用

搜索战斗

searchs 子命令允许您搜索战斗;这比 Showdown 内置的 /battlesearch 功能快得多(待办:添加基准测试)。

您必须指定要搜索的用户名以及要搜索的目录列表(这些目录将被递归搜索,忽略非 JSON 文件)。您还可以指定以下选项中的任何一个

  • --forfeits-only-f:仅搜索以弃权结束的战斗
  • --wins-only-w:仅搜索指定用户赢得的战斗

例如,psbattletools search --wins-only Annika logs/2020-06/gen8randombattle logs/2020-05/gen8randombattle 将搜索 2020 年 5 月和 6 月 Annika 赢得的 [Gen 8] 随机战斗。

计算胜率和统计数据

statistics(或 statswinrates)子命令计算给定格式中每个宝可梦的胜率(百分比、原始游戏和标准差)。目前,使用统计数据由其他,封闭源代码的脚本处理,但如果需求,我很乐意考虑实现更复杂的统计数据。

默认情况下,此命令将人类可读的胜率格式打印到标准输出,但也可以选择生成CSV文件(方便脚本和程序使用),或将输出写入文件。

您必须提供要分析的目录列表,但psbattletools statistics也接受以下可选参数

  • --csv [路径]:将CSV输出写入指定的文件
  • --human-readable [路径]--pretty [路径]:将人类可读的(prettytable)输出写入指定的文件
  • --minimum-elo [ELO]--elo [ELO]:忽略战斗开始时任一玩家的ELO评级低于指定值的战斗
  • --exclude [文本]:忽略包含指定文本的目录和JSON文件

例如,psbattletools stats --pretty gen8randombattle-1500.txt --minimum-elo 1500 logs/2021-08/gen8randombattle会将2021年8月的[Gen 8]随机战斗游戏的胜率以人类可读表格的形式写入文件gen8randombattle-1500.txt

匿名化战斗

anonymize子命令从战斗日志中删除个人身份信息,并为每位玩家分配一个唯一的ID(因此仍然可以识别两个匿名玩家是否相同)。

您必须提供包含要匿名化JSON文件的目录列表;所有这些目录中的JSON战斗日志都将被匿名化,输出中不会保留目录结构。此子命令只接受一个参数,必须指定:--output [目录](或-o [目录]),它指定匿名化战斗日志将写入的目录。

例如,要将2021年6月至8月的[Gen 8]随机战斗日志写入目录anonymized/,您将使用命令psbattletools anonymize -o anonymized logs/2021-06/gen8randombattle logs/2021-07/gen8randombattle logs/2021-08/gen8randombattle

开发

我欢迎对psbattletools的贡献。目前还没有正式的贡献指南,但拉取请求总是受欢迎的。如果可能的话,请确保您的代码经过rustfmt格式化,并包含单元测试以检测回归和/或测试添加的功能。

可以使用cargo test运行单元和集成测试,并且可以使用cargo bench运行基准测试。以下特性可以在基准测试期间启用(使用cargo bench --features ...)以运行额外的基准测试

  • bench_old_battlesearch 运行与我旧 battlesearch 程序上用于集成基准测试的相同基准,允许进行直接的性能比较。除非您已安装 battlesearch,否则不要启用此功能。
  • bench_old_winrates 运行与我旧 randbats-winrates 程序上用于集成基准测试的相同基准,允许进行直接的性能比较。除非您已安装 randbats-winrates,否则不要启用此功能。
  • bench_old_anonbattle 运行与我旧 anonbattle 程序上用于集成基准测试的相同基准,允许进行直接的性能比较。除非您已安装 anonbattle,否则不要启用此功能。

依赖关系

约14MB
约173K SLoC