SwitchHost,截图和想法

自从有了主机后,截图成为了游玩一部游戏的必要操作,曾经有很长一段时间苦恼于 PC平台上的截图:

  • 使用手柄游玩时手柄不能快捷截图
  • Xbox Bar 时长抽风,4K 分辨率的录制会有大边框
  • 「录制最后 30s」经常无响应

但是在主机上面,截图/捕获变成了一件很轻松的事情,所以截图也慢慢的多了起来。

并且利用 NAS 中的「 U 盘拷贝」,可以很方便的将截图集中导入到 NAS 中。

群晖中的照片

既然有了这么多截图,为什么不搞一点事情呢?

GameGallery

这么多的截图,如何才能优雅的浏览却犯了难。目前 NAS 中的 Synology Photos 存放了手机的相册,为了不和平时拍摄的照片混在一起,最终还是用Docker 搭建了一个 Game Gallery。

🔗 项目地址:Photoprism

photoprism构建的gallery

之后映射好文件夹,当 U 盘拷贝结束后更新一下资源库,就可以在GameGallery 看到最近导入的截图了。

Switch快捷指令

Switch 在更新到固件 11.0 之后增加了一个新功能:截图导出。方法是选择好截图文件后,Switch 将生成一个热点,通过二维码扫描加入此热点后就可以通过浏览器访问文件了。

所以制作了一个快速下载 Switch 图片和视频的「快捷指令」。

原理

既然有网页,那肯定有文件,老任还贴心的给出了 json 文件。当连接到 Switch 的热点后,将遍历 json 中的文件列表并保存到系统「Switch截图」相册中。

配合自动化,当连接到 Switch 的热点后,激活快捷指令就可以一键保存所有的图片或视频了,再也不需要一个个手动保存了!

快捷指令链接:www.icloud.com

快捷指令

SwitchShots

Switch 的截图很方便,但是存储结构却很麻烦:从内存卡中导出的结构是按照日期进行分类的,不同的游戏也混在一起。

所以使用 Electron 写了一个小工具:SwitchShots。通过 SwitchShots 可以很方便的将 Switch 中杂乱的截图文件名按照游戏名称进行整理。

Switchshots

步骤很简单:

- 将 Nintendo/Album/* 文件拖入到软件中
- 配置重命名格式
- 开始转换

之后将在新目录中得到以游戏名称为文件夹的截图和视频文件。🎉

🔗 项目仓库:github.com

GameTitleID

Switch 截图的命名方式是一个加密的 32 位 ID,所以需要一个 Key 解密成原始的 TitleID。nxshot 中提供了一个解密的方式:

Key at offset 0x71000704D0 from the capsrv NSO loaded up in IDA as key.txt on the same folder as nxshot for automatic updating. Hash: 24e0dc62a15c11d38b622162ea2b4383

通过解密后的ID,和 switchbrew.org 中的原始 TitleID 相关联就可以得到SwitchShots 中正在使用的 GameTitleID 数据库。

这个数据库每天会更新是否有最近发布的游戏,托管在vercel。

{
  "version": "20220509",
  "list": [
    {
      "id": "AA8B371C8713564A3AD21B571AF280C5",
      "name": "STUMP",
      "icon": "https://switch-proxy.vercel.app/images/ti/010000300B4EE000/256/256/"
    },
    ···
    {
      "id": "2DEE362E5773CFC07C82E8F7FF5DDBE7",
      "name": "Double Dragon 4",
      "icon": "https://switch-proxy.vercel.app/images/ti/010001B005E5C000/256/256/"
    }
  ] 
}

本地签名

因为不是 AppleDeveloper,所以 Release 后的包是不能直接在其他机器上运行的,可以使用本地签名或自己构建。

macOS本地代码签名

安装 Command Line Tools:

xcode-select --install

打开终端并执行:

sudo codesign --force --deep --sign - /Applications/SwitchShots.app/

出现 「replacing existing signature」 即本地签名成功。

SwitchShots iOS

有了 GameTitleID + 快捷指令,这不完全可以搞个APP!SwitchShots iOS 是使用 Swift UI 创造的 Switch 截图管理 APP,利用 SwitchShots iOS,可以直接从 Switch 中下载分享的截图或者视频,储存到系统相册或者 APP 中。

目前还正在开发中, 一边学 Swift 一边写真的慢。🙁

SwitchShots iOS

PS5 截图上传

最近几次更新后,PS5 的截图上传就挂了,所有的图片全部返回 403,虽然可以修改全局 DNS 服务,但是会影响线上联机。找到了一个 PS5 在不全局修改 DNS、不开加速器时可以正常上传截图的一个方法:

  1. 修改路由器 Host 列表为23.38.109.147 ps5.np.playstation.net,但是目的 IP 随时可能失效(不推荐)

  2. 如果路由器支持 DNSMasq,则可以添加规则:servers=/ps5.np.playstation.net/118.238.28.66 (推荐👍)

🔗 原帖地址:bbs.a9vg.com

如果有 Adguard Home 则更简单,只需要在 Adguard Home 上游 DNS 设置中增加:

[/ps5.np.playstation.net/]118.238.28.66

或者在自定义过滤规则中添加 Hosts。

之后截图就可以正常上传了。🎉