JavaScript Automation でiPhotoの自動化です。
今回は顔検出で顔が未設定の物を取り出して、タグ付け
タグ付けされてない写真を探す⇛AppleScriptでは出来ない
出来ない。
調べたけど出来ない。
提供されてないっぽい
クラスやエレメントを調べたけど、できなっかった
顔写真は何処で管理されているのか
顔写真は、次のデータベースと
/Users/takuya/Pictures/iPhoto Library.photolibrary/Database/apdb/Faces.db
次のPlistバイナリファイルにそれぞれ管理されていました。
/Users/takuya/Pictures/iPhoto Library.photolibrary/Database/apdb/Faces/**/*
写真そのものにはデータを書き込まない
もちろん、exif 情報にも書き込まないデータなので、iPhoto単体での管理。
検出済の顔データについて
顔データは、plist のバイナリのコンバートで管理されていました。
takuya@rena:~/Pictures/iPhoto Library.photolibrary/Database/Faces$ plutil -convert xml1 FaceNames/0N+rxxxxxxx.apfacename -o - <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>faceKey</key> <integer>5441</integer> <key>lastUsedDate</key> <date>2014-12-13T10:52:35Z</date> <key>manualOrder</key> <integer>999999</integer> <key>modelId</key> <integer>1</integer> <key>name</key> <string>たくや</string> <key>similarFacesCached</key> <false/> <key>similarFacesOpen</key> <true/> <key>uuid</key> <string>0N+rlJhcR%2LTZsGQTOg7g</string> </dict> </plist>
Faces.db の方は、SQLite3でした
Faces.db の方は、例に漏れずsqlite3 で中を見ることが出来ました。
takuya@rena:~/Pictures/iPhoto Library.photolibrary/Database$ sqlite3 Faces.db SQLite version 3.8.5 2014-08-15 22:37:57 Enter ".help" for usage hints. sqlite> .tables RKDetectedFace RKFaceExternal RKDetectedFaceBlob RKFaceFeature RKDetectedFaceExternal RKFaceName RKDetectedFace_RidIndexes RKSimilarFaces sqlite>
コレをAutomationすると、本旨からはずれる。。
本当は、写真に写ってる人に写真をまとめて送るとか
顔とアドレス帳を組合せて、写ってたピクチャーを、メールに添付して送りたかったんですけどねぇ
◯◯が映った写真を、まとめて選択とかやりたくても出来ないっす。
スマートアルバムの新規作成も出来ない
顔(人々)を検索条件にする、スマートアルバムの新規作成も出来ませんでした。
ツライね。
まとめ
そのままでは出来ない。
2015-11-29 追加
出来ると思う。
できてる。何で出来ないと思ったのか謎。
>> app.facesAlbum.photos[0].imagePath() => "/Users/takuya/Documents/Dropbox/写真/iPhoto Library.photolibrary/Masters/2015/05/24/20150524-002048/IMG_0382.PNG"