A9VG电玩部落论坛

 找回密码
 注册
搜索
查看: 4509|回复: 1

[技巧攻略] 【自制】Steam 截图副本整理脚本

[复制链接]

版主

己所不欲,勿施于人

精华
0
帖子
5431
威望
0 点
积分
6543 点
种子
1904 点
注册时间
2018-5-8
最后登录
2024-12-25
 楼主| 发表于 2024-7-4 22:38  ·  北京 | 显示全部楼层 |阅读模式
编写了一个小工具用于批量整理 Steam 的未压缩截图副本,之前 已经有大佬实现了相同功能的 Python 脚本,我基于其工作做了一些小小改进。个人能力非常一般,也是第一次编写 PowerShell 脚本,必定有写得不好或者存在问题的地方,还请大家批评指正。

脚本的运行效果:



整理前:



整理后:



如何使用脚本:

  • 下载一个 PowerShell 脚本 和一个 Batch 脚本(链接如果无法访问也可以 从 GitHub 下载)。Batch 脚本的作用是方便在 Windows 文件管理器中直接运行 PowerShell 脚本而无需修改系统设置。
  • 把两个脚本都放到 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 检索得到游戏名,创建目录并将截图移动到该目录下面。


脚本做的一些额外改进:

  • 脚本可原生在 Windows 运行,无需额外安装 Python 运行时或者将运行时与脚本一起打包成可执行文件。同时也方便自行修改脚本来满足额外的需求(右键编辑即可)。
  • Steam 提供的 API 在大陆地区访问非常慢,所以 我自己搭建了一个反代,在我自己的测试环境下速度提升非常明显。脚本默认使用了我这个反代,如果你想修改回 Steam 自己的接口,或者我的接口失效了,可以将脚本如下代码行:
    1. $apiUrl = "https://steam.ihainan.me/ISteamApps/GetAppList/v2/"       # ihainan 反代的官方 API,用于提升在大陆地区的下载速度
    2. # $apiUrl = "https://api.steampowered.com/ISteamApps/GetAppList/v2/" # Steam 官方 API 地址
    复制代码

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

  • 只会在第一次使用脚本,或者截图对应游戏的 ID 不在本地缓存(app.json 文件)中时(可能是比较新的游戏),才会调用 Steam API 获取完整的 App List(大约 80MB),从而提高平日运行的速度。
  • 创建游戏目录之前会检查和删除目录名不允许的无效字符。
  • 对于一些特殊名字的游戏做了处理以保证能够正常创建游戏目录。比如 这个游戏 API 返回的游戏名是 <|>,删除无效字符之后就剩下空串了,我就使用游戏 ID 做为目录名。
  • 支持新的 AVIF 文件。后续如果 Steam 还支持新的文件格式,可以自行修改如下代码行:
    1. $fileExtensions = @("*.png", "*.avif")                               # 将会被整理的文件类型
    复制代码



可能的一些问题:

  • 理论上经过处理后的游戏名,会有重名的可能,但是概率很小,起码目前测试所有的游戏处理之后都是不重名的,以后有问题了再说。
  • Steam API 不知道为什么偶尔返回的 app 列表里面是缺失某些游戏的,如果我的脚本自动更新本地缓存之后还出现游戏被错误归类的问题,建议删除 app.json 重新运行。




版主

己所不欲,勿施于人

精华
0
帖子
5431
威望
0 点
积分
6543 点
种子
1904 点
注册时间
2018-5-8
最后登录
2024-12-25
 楼主| 发表于 2024-7-6 14:54  ·  北京 | 显示全部楼层
2024/07/06:修复部分游戏名在去除特殊字符之后,结尾仍会出现多余的点或者空格的问题;修复了游戏名带有 [ 或者 ] 不被脚本识别的问题。用数据库中所有游戏做了验证测试。

2024/07/05:修复部分游戏名结尾带有多余的空格的问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|A9VG电玩部落 川公网安备 51019002005286号

GMT+8, 2024-12-25 15:48 , Processed in 0.153932 second(s), 11 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

返回顶部