録音後の自動エンコード&iTunesプレイリストへインポート

iTunesのプレイリストに勝手に録音ファイル入れてくれればiPodで聞けて便利。




と思っていた時期が俺にもありました。


実際には、1つでもプレイリストにねとらじの録音ファイルを入れてしまうと
プレイリスト以外の再生方法(曲をシャッフルして再生とか)で聴いていると
時々、普通の曲の合間にねとらじの録音が来てウザイことこの上ないので


iPodねとらじの録音を聴くのはよそう。


となって、iTunesへ登録自体しなくなるというのがオチなのですが
もしかしたら、なんか自分が思いつかない用途でこの機能が便利なパターンがあるのかも。と
ふと思いついたので実装。

◆参考にしたサイト
AppleScriptiTunesプレイリストを操作してみる :: RakuenOverdrive/楽園オーバードライブ
http://rakuenoverdrive.net/2009/01/03/itunes-applescript-make-artist-playlist
RD-H1MaciTunes(2) - Unlimited LiFEwoRKs
http://www.vitae.jp/malkuth/no/1877


あとREALbasicからAppleScriptへ複数のワードを引き渡す方法に関してはここを参照

●タイトルを入力●
http://www.ne.jp/asahi/tan/puku/script/real/page2/index.html


作ったのが

プレイリストが存在しない場合にプレイリストを作る処理(以下)と
if name of every playlist does not contain PlayListName then
set NewPlayListItem to make new playlist
set the name of NewPlayListItem to PlayListName
end if
※PlayListNameは変数で、ここにプレイリスト名を代入する


ライブラリに曲を登録する処理(以下)と

set paths to TrackPath as Unicode text
set NewSongItem to add paths to playlist "ライブラリ" of source "ライブラリ"


ライブラリからプレイリストに登録する処理(以下)。

duplicate NewSongItem to playlist PlayListName


NewPlayListItemとNewSongItemっていうのが出てくるんだけど、これは実は自分でもよくわかってない。
「あのプレイリスト」「あの曲」ってのを指定するのにそういう名前をつかっているだけ。←自分で書いてても意味不明だ…


で。完成したのが


tell application "iTunes"
launch


on run {TrackPath, PlayListName, AddPlayList, AfterDelete}
tell application "iTunes"
launch

if AddPlayList = "True" then
if name of every playlist does not contain PlayListName then
set NewPlayListItem to make new playlist
set the name of NewPlayListItem to PlayListName
end if
end if

set paths to TrackPath as Unicode text
set NewSongItem to add paths to playlist "ライブラリ" of source "ライブラリ"

if AddPlayList = "True" then
duplicate NewSongItem to playlist PlayListName
end if

if AfterDelete = "True" then
tell application "Finder"
delete paths
end tell
end if

end tell
end run


pathsに曲へのフルパスをわたして、PlayListNameにプレイリスト名、AddPlayListとAfterDeleteはTrueを渡すかそうでないか。で実行可。
プレイリストじゃなくてライブラリに登録しておしまい。パターンと
全部終わった後にFinderで元のファイルを削除する。のパターンも1つのスクリプトで実行できるようにしてみた。





録音後の自動エンコードに関しては、今LAMEffmpegとかのコマンドラインから実行できるヤツを使って
内部でこっそりエンコードみたいな感じにできたらいいなってことでいまやってる。