AppleScriptJavaScriptが使える…というか、JavaScriptからMac OSXを操作できるようにするJavaScript OSA、試してみたけどドキュメントが少なくてどうしようもない。

var itunes = MacOS.appByBundleID("com.apple.itunes", true);
itunes.name; // =>"iTunes"

でもこの先が解らない。たとえば itunes.playpauseundefined
MacOS.AEAppクラス(上で取得したitunesもこれ)のドキュメントを見ても、どうにもよく解らない。AppleEventを送るんだろうか?うーん…。


というわけで、結局AppleScriptで実装することにする。
「教えて税理士さん」というPodcast(ラジオ番組をPodcastで再放送するもの)は、Podcast版は一週間まとめて配信されるので、こちらも一週間まとめて聞くことになる。
然るに毎回オープニングとエンディング(CM)が入るのは、別にいいけど何なので、これを省略する。iTunesで「情報を見る > オプション > 開始時間,停止時間」を設定すれば、これらを省略可能。
尤も「停止時間」は番組長がまちまちなので、音声の長さから計算して出さなきゃいけない。
ついでに、月曜日にはOP入って欲しいし、最後(金曜)くらいは広告を聞くのもいいかなと思うので、これらは省略しないようにする。番組名に曜日が入ってるので、それを見て処理するように。

set text item delimiters to ":" --区切り文字を : に設定

tell application "iTunes"
    repeat with theTrack in every track in the playlist "Podcasts unplayed" --"Podcast unplayed"は未再生のPodcastを格納するスマートプレイリスト。
    --ちなみに当初は repeat with theTrack in every tracks of some playlist whose special kind is Podcasts で全Podcastを回してたが、時間がかかるので変更。
        if album of theTrack is "教えて税理士さん(東京地方税理士会戸塚支部)" then
            --月曜日は最初から、それ以外は33秒からスタート。
            if (offset of "(月)" in (name of theTrack as text)) is 0 then --"月"だけだと日付に反応する。
                set start of theTrack to 33
            end if
            --金曜以外は20秒早く終る
            if (offset of "(金)" in (name of theTrack as text)) is 0 then --"金"だけだとお金で動く(違
                set t to text items of (the time of theTrack as text) --track.timeは"mm:ss"形式の文字列。長さだけ単純に数値で得られれば楽なのに。
                set finish of theTrack to ((item 1 of t) * 60 + (item 2 of t) - 20) --それでいて「停止時間」は秒で指定なんだよねー。
            end if
        end if
    end repeat
end tell

いつもと違う道を通ってみたんだけど、GoogleStreetViewで予習してから行ったら、結構複雑な道だけど間違わずに行けた。便利だなぁ(尤も30分もかければ普通に地図を見ただけでも間違えにくそうではある)。
距離的には近くなるけど、登り下りがあるのと歩道がないのとで、必ずしも良いルートとは言い難い。から、気分を変えたいときに通ろう。