2022年05月05日
VRChatのスクショをAmazonPhotosにアップロードする処理を自動化していたら日が暮れました
こんばんわ、ゴールデンウィークを楽しんでいます。
そんなゴールデンウィークですがVRChatのスクショをAmazonPhotosにアップロードする処理を自動化していたら日が暮れました。
(お話が前後しますが、先日Quest2を買ってVRChatで遊んでます。まだまだ初心者です)
同じようなことをやろうとされている方が居たら参考になるかもしれないので、折角なのでざっくりやったことを残しておこうかと思いブログの管理画面を開きました。
あ、先にweb拍手のお返事をッ
>nexe
「ねぇ」から始まる何かをタイピングしようとして送信してしまったのでしょうか、ご愁傷様です。
そんなゴールデンウィークですがVRChatのスクショをAmazonPhotosにアップロードする処理を自動化していたら日が暮れました。
(お話が前後しますが、先日Quest2を買ってVRChatで遊んでます。まだまだ初心者です)
同じようなことをやろうとされている方が居たら参考になるかもしれないので、折角なのでざっくりやったことを残しておこうかと思いブログの管理画面を開きました。
あ、先にweb拍手のお返事をッ
>nexe
「ねぇ」から始まる何かをタイピングしようとして送信してしまったのでしょうか、ご愁傷様です。
■概要
・Steam版のVRChatのスクショ(C:\Users\username\Pictures\VRChat\xxxxxx.png)をAmazonPhotosにアップロードできるようにする。
・自動化する。
色々調べながら実装していたのですが、VRChatも2017年くらい? から遊ばれているみたいで公開から時間が経っており、やはり先人はいらっしゃいました。
ただ、今回は手動操作は何も実施せず、スクショ取得後はAmazonPhotosにアップロードするフォルダに格納するまでの処理を自動化したいと思います。
■課題
1.VRChatのスクショは撮影日時のプロパティが設定されていないためAmazonPhotosにアップロードすると「日付なし」扱いとなり、日付でソートされないため日付パラメータを設定する必要がある。
2.VRChatのスクショはpngファイルであるから? か分からないけども、撮影日時のプロパティを設定してアップロードしても「日付なし」扱いとなるため、別の形式に変更する必要がある。
3.一連の流れをCLIや常駐タイプのソフトで解決する必要がある。
■詳細
1.は「ExifTool」を使うとできるみたいです。画像ファイルのExifをCLIで操作することが出来ます。
2.は「ImageMagick」を使うとできるみたいです。pngからjpgに変換します。サーバサイドのアプリケーションとしてとして動かせるようですが、今回はコマンドで使うだけですのでポータブル版をダウンロードしました。
ちなみに、pngからjpgに変更するときにプロパティは失われるようですので(引数を正しく指定すれば引き継げるんですかね…?)、jpgに変換してから撮影日時を設定します。
3.は「フォルダ監視」という常駐アプリを使います。ファイルの変更を定期的に監視し、変更があった際に処理を実行することが出来ます。
1.と2.のソフトをインストールして、↓みたいなコードとして
-------------
これで「スクショが生成されれば、jpgに変換し、撮影日時を設定してからフォルダを移動する」ということが出来るようになりました。
…これをやっていたら日が暮れていたんです。やり方を考えたりソフトを探す時間もそれなりに要したのですが、自分の経験年数も加味すると、これくらいはもう少しスピーディにできるようになりたいですね。
そして、ここまで書いてから気が付いたんですけど、既にやりたいことをCLIで実施できるようなものを公開されている方もいらっしゃいました(https://github.com/kazusap/VRChatScreenShotMover)、車輪の再開発をしてしまった…
ま、まぁ、jpgに変換するときの品質を任意の値にできるのが嬉しいということで…
■余談
なんでGoogleフォトやOneDriveじゃなくてAmazonPhotosなの? というところですが、これはAmazonPhotosであれば容量の上限がないためですね。
その他、Googleフォトも使ってるのですがこれは普段使いしている(スマホのカメラで撮った写真をアップロードしている)ので、これと分けたかったのが大きいです。
GoogleドライブのWindowsアプリで「このフォルダの写真はこのアルバムとしてアップロードする」というような細かい設定が出来ればGoogleフォトでもよかったんですけど、GoogleのサービスはWindows向けアプリのサポートが手薄いイメージですので、今後も特に改善されないんじゃなかろうか… と勝手に思ってます。
------------
>>5/6追伸
VRChatのスクショは月ごとにフォルダが分かれていて、月初めの1枚目はフォルダ作成&スクショファイル配置… という挙動になるかと思いますが、これを検知するには↓のチェックが必要なようです。
・Steam版のVRChatのスクショ(C:\Users\username\Pictures\VRChat\xxxxxx.png)をAmazonPhotosにアップロードできるようにする。
・自動化する。
色々調べながら実装していたのですが、VRChatも2017年くらい? から遊ばれているみたいで公開から時間が経っており、やはり先人はいらっしゃいました。
ただ、今回は手動操作は何も実施せず、スクショ取得後はAmazonPhotosにアップロードするフォルダに格納するまでの処理を自動化したいと思います。
■課題
1.VRChatのスクショは撮影日時のプロパティが設定されていないためAmazonPhotosにアップロードすると「日付なし」扱いとなり、日付でソートされないため日付パラメータを設定する必要がある。
2.VRChatのスクショはpngファイルであるから? か分からないけども、撮影日時のプロパティを設定してアップロードしても「日付なし」扱いとなるため、別の形式に変更する必要がある。
3.一連の流れをCLIや常駐タイプのソフトで解決する必要がある。
■詳細
1.は「ExifTool」を使うとできるみたいです。画像ファイルのExifをCLIで操作することが出来ます。
2.は「ImageMagick」を使うとできるみたいです。pngからjpgに変換します。サーバサイドのアプリケーションとしてとして動かせるようですが、今回はコマンドで使うだけですのでポータブル版をダウンロードしました。
ちなみに、pngからjpgに変更するときにプロパティは失われるようですので(引数を正しく指定すれば引き継げるんですかね…?)、jpgに変換してから撮影日時を設定します。
3.は「フォルダ監視」という常駐アプリを使います。ファイルの変更を定期的に監視し、変更があった際に処理を実行することが出来ます。
1.と2.のソフトをインストールして、↓みたいなコードとして
-------------
@ECHO OFF
CD %~dp0
SET EXIFTOOL_PATH=C:\Software\exiftool-12.41
SET IMAGEMAGICK_PATH=C:\Software\ImageMagick-7.1.0-portable-Q16-x64
SET FOR_UPLOAD_PATH=C:\Users\johndoe\Pictures\forAmazonPhotos\VRChat
@REM --------------------------
@REM ファイル更新日時を取得
@REM --------------------------
"%EXIFTOOL_PATH%\exiftool.exe" -T -s -FileModifyDate %1 >DATE_TIME.txt
SET /P DATE_TIME=<DATE_TIME.txt
@REM --------------------------
@REM JPGに変換
@REM --------------------------
"%IMAGEMAGICK_PATH%\convert.exe" %1 -quality 95 %~n1.jpg
@REM --------------------------
@REM ファイル作成日時を撮影日時として設定
@REM --------------------------
"%EXIFTOOL_PATH%\exiftool.exe" -DateTimeOriginal="%DATE_TIME%" -overwrite_original %~n1.jpg
@REM --------------------------
@REM ファイル移動
@REM --------------------------
MOVE %~n1.jpg %FOR_UPLOAD_PATH%
@REM --------------------------
@REM 後片付け
@REM --------------------------
DEL DATE_TIME.txt
-------------これで「スクショが生成されれば、jpgに変換し、撮影日時を設定してからフォルダを移動する」ということが出来るようになりました。
…これをやっていたら日が暮れていたんです。やり方を考えたりソフトを探す時間もそれなりに要したのですが、自分の経験年数も加味すると、これくらいはもう少しスピーディにできるようになりたいですね。
そして、ここまで書いてから気が付いたんですけど、既にやりたいことをCLIで実施できるようなものを公開されている方もいらっしゃいました(https://github.com/kazusap/VRChatScreenShotMover)、車輪の再開発をしてしまった…
ま、まぁ、jpgに変換するときの品質を任意の値にできるのが嬉しいということで…
■余談
なんでGoogleフォトやOneDriveじゃなくてAmazonPhotosなの? というところですが、これはAmazonPhotosであれば容量の上限がないためですね。
その他、Googleフォトも使ってるのですがこれは普段使いしている(スマホのカメラで撮った写真をアップロードしている)ので、これと分けたかったのが大きいです。
GoogleドライブのWindowsアプリで「このフォルダの写真はこのアルバムとしてアップロードする」というような細かい設定が出来ればGoogleフォトでもよかったんですけど、GoogleのサービスはWindows向けアプリのサポートが手薄いイメージですので、今後も特に改善されないんじゃなかろうか… と勝手に思ってます。
------------
>>5/6追伸
VRChatのスクショは月ごとにフォルダが分かれていて、月初めの1枚目はフォルダ作成&スクショファイル配置… という挙動になるかと思いますが、これを検知するには↓のチェックが必要なようです。
holypanel at 22:56│Comments(0)│
│IT



