それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

iPhotoで写真を扱う - 顔検出された写真を扱う→出来ない→出来る

JavaScript Automation でiPhotoの自動化です。

今回は顔検出で顔が未設定の物を取り出して、タグ付け

タグ付けされてない写真を探す⇛AppleScriptでは出来ない

出来ない。

調べたけど出来ない。

提供されてないっぽい

クラスやエレメントを調べたけど、できなっかった

app

photo

顔写真は何処で管理されているのか

顔写真は、次のデータベースと

/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すると、本旨からはずれる。。

本当は、写真に写ってる人に写真をまとめて送るとか

顔とアドレス帳を組合せて、写ってたピクチャーを、メールに添付して送りたかったんですけどねぇ

◯◯が映った写真を、まとめて選択とかやりたくても出来ないっす。

スマートアルバムの新規作成も出来ない

顔(人々)を検索条件にする、スマートアルバムの新規作成も出来ませんでした。

smart

ツライね。

まとめ

そのままでは出来ない。

2015-11-29 追加

出来ると思う。

できてる。何で出来ないと思ったのか謎。

>> app.facesAlbum.photos[0].imagePath()
=> "/Users/takuya/Documents/Dropbox/写真/iPhoto Library.photolibrary/Masters/2015/05/24/20150524-002048/IMG_0382.PNG"

JavaScript Autotomation for OSX まとめ

Javascrript for OSX Automation アドベントカレンダー - それマグで!