あっきぃ日誌

鉄道ブログのような技術系ブログのようななにか

Macの写真.appがハッシュ比較で重複しないけど重複した写真であふれるのをどうにかする

写真.appの写真重複がメチャクチャひどく、ひとまずスクリーンショットを見てください。

f:id:Akkiesoft:20220321235452j:plain

なんでこんな事になっているかと言うと、フォトストリームを有効にしていてかつ、後からiPhoneの写真を取り込むとこうなるみたいです。が、フォトストリームだけに頼ると、たまに写真の転送漏れがあったり、動画は対象ではなかったりするのでそもそも微妙ですが、いつからか、転送された写真とiPhoneから取り込んだ写真が別ファイルになるようになってしまいました。こいつのおかげでストレージが爆食い状態になってMacBook AirSSD(500GB)空き容量が50GBを切ったのでいよいよなんとかすることにしました。

まずはフォトストリーム機能を全部オフにしました。むかしで言うEye-Fi的な自動転送が魅力の機能でしたが、このとおり転送後の体験があまりにもあんまりで愛想がつきました……。どうも、最近Apple IDを取得したユーザーはフォトストリーム機能が隠されていてそもそも使えないらしく、Apple的にも店じまいにしたい的な機能なのかもしれません。でもiCloudは絶対使わんで。

さて、重複した写真の検出方法ですが、「iPhoneで保存形式をHEICにしている+フォトストリーム有効」の場合は、拡張子とかタイムスタンプとかで判定できるので、海外で同様の現象にぶち当たった人がスクリプトを書いて公開してくれています。これで私もまあまあ重複写真を潰せました。

n8henrie.com

しかし、私の場合、途中から「iPhoneで保存形式をJPEGにしている+フォトストリーム有効」の設定に変更してしまったので、さらに面倒なことに。ファイル名的にはIMG_1234.JPGとIMG_1234D.JPG(しの部分はXになっていることもあった)の2つができている状態になり、iPhoneで加工orアスペクト比変更or回転している画像とそのオリジナルみたいな感じで差もあってかなり判定しにくい感じでした。

が、先述のスクリプトを場当たり的に改造して検出に成功し、1000枚位をやっつけたり、これでも検出できない分は諦めて手で消したりして、なんとか大体やっつけられました。もしかしたらまだ残っているかもしれませんが、かなり消せたので人まずは満足ということで……。場当たり的なスクリプトは公開できるクオリティではないので公開しません。

また、同じく先述のスクリプトを改造して、画像サイズからポケモンGoの相棒撮影を検出してまるごと消したりできて、osascript(JavaScriptのすがた)で結構Photos.appの中身をイジれることを知れたのは収穫でした。

MBAのストレージはその他に色々消したりして、ひとまず100GBくらいまで回復しましたが、その後93GBまで戻りました。Macの空き容量計算はなんか適当な気がします。APFSで色々と計算しにくかったりするのかしらん。

次のMacは1TBかなーー