順調なAppleScript版アプリ

自宅サーバへの音楽再生情報の送信ソフトをAppleScript版に切り替えたが、順調に動いているようだ。特に問題は起きていない。
今は、最低限の機能しか作り込んでいないし、自分以外が使えない(問題にはならないが)ようになっているが、ソースを整理して、設定ウインドウを用意して一般的に使えるようにするか、本の到着を見て、Objective-Cベースでもう一度同じものを一から作ってみるかは気分次第。
Java版の時と基本的な仕様を変えていないが、mixi stationが再生中の楽曲情報を取得して、それを適当なタイミングで送信するものとは全く異なるアプローチを取っている。
iTunesでは(確か)標準で、「最近再生した項目」というスマートプレイリストを持っている。
このスマートプレイリストを「最後に再生した日時」でソートしておき、そのデータを取得して送信するのだ。送信する条件は前回送信した最終データの「最後に再生した日時」よりも後で再生した楽曲情報というようにしている。
もちろん、AppleScriptで再生中の楽曲情報を取得して送信するアプリを書くことは私でもできる。しかし、iPodで再生した楽曲情報も送信する、といった要求を一番簡単に満たせる方法がこれだったのだ。送信数に制限を設けていないから、一つのファイルを一度しか再生していない期間であれば、スマートプレイリストを編集することで、任意の期間の再生履歴を正しく送信できる。自分も初回は一ヶ月分をこの方法で送信した。
iPodの再生履歴については、mixi stationは方式不明、たまに(しばしば)送信してくれない。last.fmのソフトは一応ソースが公開されているのでダウンロードして読んだ。内部でデータベースを作り、それとの比較で差分を取得して送信しているように見えた。last.fmのアプリは再生中にはアプリのウインドウに再生中の楽曲情報を表示するから、二通りの方法を併用しているように思える。
しかし、last.fmがどうやって、iPodが接続され、同期に入ったかを検知しているかを読み取ることができなかった。
そこで、前に上げた、スマートプレイリストを利用するという仕様を思いついたのだ。
今、私のアプリは5分間隔でデータの取得、送信を行っている。iPodで再生した場合は一度の同期で2度以上再生しても最後の分しか送信できないが、そのような使い方をしないから問題ない。また、iTunesでの再生の場合は、5分以内で2度以上再生が完了しない限りは毎回データを送信することができる。
自分の使い方、音楽の聴き方からすると、データの取得については最善解を得られた仕様ではないかと思っている。

コメント