IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Steam 截图副本整理脚本

    ihainan\'s Blog发表于 2024-07-06 20:23:19
    love 0

    基于 之前一个大佬的工作,编写了一个小工具用于批量整理 Steam 的未压缩截图副本。

    GitHub 仓库:https://github.com/ihainan/Steam-Screenshots-Organizer

    脚本的运行效果:

    整理前:

    before

    整理后:

    after

    如何使用脚本:

    下载 screenshot-org.bat 和 screenshot-org.ps1 放到 Steam 截图副本目录下。

    当需要整理截图的时候运行 screenshot-org.bat 文件,运行结束之后截图就会被移动到对应游戏名字的目录下面,如果有非 Steam 游戏的截图则会被放到 “Uncategorized Screenshots” 目录中。

    脚本的原理

    Steam 的截图副本命名格式类似于:1332010_20240526130334_1.png,其中 1332010 是游戏 ID。

    Steam 本身提供了一个 API https://api.steampowered.com/ISteamApps/GetAppList/v2/ 能够获取商店中所有游戏的列表,包含游戏的 ID 和对应的名字。

    脚本会将 API 的返回转换为一张表,根据截图名字的游戏 ID 检索得到游戏名,创建目录并将截图移动到该目录下面。

    一些细节

    Steam 提供的 API 在大陆地区访问非常慢,所以 我自己搭建了一个反代,在我自己的测试环境下速度提升非常明显。脚本默认使用了我这个反代,如果你想修改回 Steam 自己的接口,或者我的接口失效了,可以将脚本如下代码行:

    $apiUrl = "https://steam.ihainan.me/ISteamApps/GetAppList/v2/"       # ihainan 反代的官方 API,用于提升在大陆地区的下载速度
    # $apiUrl = "https://api.steampowered.com/ISteamApps/GetAppList/v2/" # Steam 官方 API 地址
    

    修改成:

    # $apiUrl = "https://steam.ihainan.me/ISteamApps/GetAppList/v2/"   # ihainan 反代的官方 API,用于提升在大陆地区的下载速度
    $apiUrl = "https://api.steampowered.com/ISteamApps/GetAppList/v2/" # Steam 官方 API 地址
    

    只有在第一次使用脚本,或者截图对应游戏的 ID 不在本地缓存(app.json 文件)中时(可能是比较新的游戏),脚本才会调用 Steam API 获取完整的 App List(大约 80MB),从而提高平日运行的速度。

    脚本在创建游戏目录之前会检查和过滤目录名不允许的无效字符。我测试过 Steam 数据库中的所有游戏,对于一些特殊名字的游戏做了处理以保证能够正常创建游戏目录。比如 这个游戏 API 返回的游戏名是 <|>,删除无效字符之后就剩下空串了,我就使用游戏 ID 做为目录名。

    支持新的 AVIF 文件。后续如果 Steam 还支持新的文件格式,可以自行修改如下代码行:

    $fileExtensions = @("*.png", "*.avif")                               # 将会被整理的文件类型
    

    可能的一些问题:

    理论上经过处理后的游戏名,会有重名的可能,但是概率很小,起码目前测试所有的游戏处理之后都是不重名的,以后有问题了再说。

    此外,Steam API 不知道为什么偶尔返回的 app 列表里面是缺失某些游戏的,如果我的脚本自动更新本地缓存之后还出现游戏被错误归类的问题,建议删除 app.json 重新运行。



沪ICP备19023445号-2号
友情链接