Windows版のiTunesで現在聴いてる曲の情報を取得する(C#編)
iPhone/iPod touchにはIn the Moodという、現在iPhone/iPod touchで聴いてる曲の曲名などの情報をTwitterに少しカスタマイズした形式でポストできるアプリがあります。
しかし、Windows版のiTunesで曲を聴いてるときに、iTunesにも似たような機能があるだろうと思って探してみたのですが、見つかりませんでした。曲のプロパティで曲名などを個別にコピーすればできますがとても手間がかかります。
そこで、iTunesで現在聴いてる曲の情報を取得できないか調べてみました。WindowsにiTunesをインストールしていて、何か曲を聴いていることを前提とします。また、Visual Studio 2010を使いました。
- Visual Studio C#で新規にプロジェクトを作成して、ソリューションエクスプローラーで、作成したプロジェクトの[参照設定]を右クリックして[参照の追加]を選択します。
- [参照の追加]ダイアログで[COM]タブを選択します。
- [コンポーネント名]が[iTunes 1.13 Type Library]パスがiTunes.exeの項目を選択して[OK]をクリックします。
- すると、プロジェクトに、自動的にInterop.iTunesLib.dllというファイルができて、ソリューションエクスプローラーには[参照設定]にはiTunesLibが追加されます。
- C#のコードファイルの適切な位置に以下のusing文を追加します。
using iTunesLib; using System.Runtime.InteropServices;
以下のようなメソッドを追加します。文字列の組み立ての部分は好みに応じて変えてください。IntelliSenseを使用すれば、IITTrackインターフェースにどんなメンバーがあるか見ることができます。
/// <summary> /// iTunesで現在聴いてる曲の情報の文字列を取得 /// </summary> /// <returns>iTunesで現在聴いてる曲の情報の文字列</returns> private static string GetCurrentMusic() { string text = ""; iTunesApp app = new iTunesLib.iTunesApp(); IITTrack track = app.CurrentTrack; if (track != null && track.Enabled) { text = string.Format("[聴いてる♪]「{0} - {1}」 by {2}" , track.Name, track.Album, track.Artist); } Marshal.ReleaseComObject(app); return text; }
これを、コンソールアプリならConsole.WriteLine(GetCurrentMusic())で出力、WindowsアプリならTextBox.Textにセットすれば、目的の文字列が取得して表示できます。これをコピーしてツイッタークライアントのテキストボックスに貼り付けて、つぶやけば現在の聴いてる曲をTwitterなどでつぶやくことができます。