フォルダアクションとAppleScriptで写真アップロードを自動化

そもそもはAndroid携帯で撮った写真を、自動でFlickrにアップロードしようと思って始まった計画。

最初はDropboxにバックアップ。

「AiWiFi」でAndroidの写真と動画を自動バックアップ | Synapse Diary

次はPythonスクリプトで自動実行。

指定フォルダの写真を自動アップロードする@Mac | Synapse Diary

ただ、これの唯一の欠点は、Dropboxは起動時に同期を始めるので、Pythonスクリプトを起動時に実行してしまうと、同期する前に実行が終わっちゃうんだよね。。。かといってCronを使うほどずっとMacを立ち上げているわけでもないし。

ということで、AppleScriptをつくって「フォルダアクション」で実行するようにしてみた。

AppleScriptとは

さっくり言ってしまえば、命令文などをひとつのファイルに束ねたもの。数値演算だったり、アプリの実行だったり、そういう命令をひとつのファイルに束ねて実行することで、人がひとつひとつ実行する煩わしさから解放してくれる。これをもう少し作り易くしたのがAutomator。

ここでAppleScriptの基本を学びつつ、「記録」ボタンからアプリを操作することで、AppleScriptをつくってみる。

鳶嶋工房 / AppleScript / Introduction / AppleScriptってなに?

フォルダアクションとは

Finderのひとつの機能で、指定したフォルダにスクリプトを関連付けられるもの。指定したフォルダに何か操作が加えられると、自動でスクリプトが実行されるようになる。フォルダにどういう操作が加えられたときにスクリプトを実行するかは、ここらへんを参考に。

フォルダアクションを使ってみる – GameSprit

これは、アプリケーションを直接関連付けることはできないので、AppleScriptを今回は作成した。すごい短い。

onadding folder items tothis_folderafter receivingadded_items
tellapplication "flickr_uploader" toactivate
endadding folder items to

結局失敗した

これで、起動時ではなくフォルダに変更が行われたときに実行されるようになった。が、これは使えなかったよ。。。。

アホみたいだけど、Dropboxの同期とFlickrへのアップロードがうまくタイミング合わないんだよね。Dropboxがひとつの写真をフォルダに追加するとFlickrへのアップロードが始まるんだが、その後2枚目が追加されてもまだ1枚だけでアップロード中になる。という残念な結果になりました。

まあ、いろいろ勉強になったし、ここに書いて良しとする。