MusicBeeのプラグインのソース

先のエントリで日本語でウダウダ書いたので意味不明なので、今日はソースをツラツラと並べてみようかと思う。

再生回数がカウントアップされるイベントというのは、サンプルソースにもある、ReceiveNotificationというメソッドのなかで、NotificationType.PlayCountersChangedというswitch文に入ってくる。ここに該当ソースを書けば良い。

再生している(していた)ファイルのタグの取得は、

mbApiInterface.NowPlaying_GetFileTag(MetaDataType.TrackTitle)

の様に行う。上記の例はトラックタイトル(曲名)を取得している。再生中(再生が終わった)曲が対象である。mbApiInterfaceというのはAPIコールをする、MusicBeeのアプリケーションのオブジェクトであり、Initializeメソッドで初期化している。その名前を使うことになる。

ファイルのID3タグであれば、上記のようになるが、アプリケーションで管理しているデータ、例えば、最後に再生した日時、のようなデータであれば、次のようになる。

mbApiInterface.NowPlaying_GetFileProperty(FilePropertyType.LastPlayed)

次に、右クリックメニューへの項目追加であるが、NotificationType.PluginStartupの中で行う。

ToolStripMenuItem mainMenuItem = (ToolStripMenuItem)mbApiInterface.MB_AddMenuItem(“context.Main/MenuItem Name Displayed”, null, null, null);
mainMenuItem.Click += ClickEventHandler;

public void ClickEventHandler(object sender, EventArgs e)

というような形になる。これで、右クリックメニューのルートに指定した名前(上記であれば「MenuItem Name Displayed」)で項目が追加される。メニューのクリックイベントハンドラは指定した通りである。

if (mbApiInterface.Library_QueryFiles("domain=SelectedFiles")){
while (true) {
string filename = mbApiInterface.Library_QueryGetNextFile();
}
}

右クリックメニューを出したときに選択しているファイル(トラック)のファイル名は上記のようにして取得できる。ファイル名が取得できると、

mbApiInterface.Library_GetFileTag(filename, MetaDataType.TrackTitle)
mbApiInterface.Library_GetFileProperty(filename, FilePropertyType.LastPlayed)

のようにしてタグやアプリケーションの管理情報を取得することができる。
これらによって取得したデータを収集している。

残りは次項で。

コメント