2011年12月2日金曜日

WSH Panel Modを使ってfoobar2000内部ライブラリの中身を解析する

87+2 :名無しさん@お腹いっぱい。 [↓] :2011/11/24(木) 01:26:35.67 ID:L5M1PCpC0 (1/4) [PC]
すみません、foobarに登録してる曲の総数を視覚情報として表示するには
なんのプラグインを入れればいいですか?

 

 

 

timer = window.CreateTimerInterval(20000)
PlName = "WSHにより自動的に作成されたプレイリスト(削除されてない場合は手動で削除してください)";
disp = "Loading, Please wait a little long...";
flag = 0;
ext = Array("ALL", "AAC", "ALAC", "APE", "FLAC", "MKV", "Monkey's Audio", "MP1", "MP2", "MP3", "PCM", "TAK", "True Audio", "TTA", "Vorbis", "WAV", "WavPack", "WMA");
num = Array(ext.length)
//しきい値(これ以下の割合のものは表示しないようにします)単位%
limen = 0;

function on_timer(id) {
    if (timer && id == timer.ID) {
        var amount_plIdx = plman.PlaylistCount;
        switch (flag){
            case 0:
                window.KillTimer(timer);
                fb.CreateAutoPlaylist(amount_plIdx, PlName,ext[flag]);
                num[flag] = plman.PlaylistItemCount(amount_plIdx)
                disp  = "全プレイリストに登録されている曲数は "+num[flag]+" 曲です\n";
                flag ++;
                timer = window.CreateTimerInterval(500)
                break;
            case ext.length-1:
                window.KillTimer(timer);
                fb.CreateAutoPlaylist(amount_plIdx, PlName,"%codec% IS "+ext[flag]);
                num[flag] = plman.PlaylistItemCount(amount_plIdx)
                if (limen < num[flag]*100/num[0]){
                    disp += ext[flag]+":"+num[flag]+"("+ Math.round(num[flag]*10000/num[0])/100+"%)\n"
                }
                disp += "完了..."
                break;
            default:
                window.KillTimer(timer);
                fb.CreateAutoPlaylist(amount_plIdx, PlName,"%codec% IS "+ext[flag]);
                num[flag] = plman.PlaylistItemCount(amount_plIdx)
                if (limen < num[flag]*100/num[0]){
                    disp += ext[flag]+":"+num[flag]+"("+ Math.round(num[flag]*10000/num[0])/100+"%)\n"
                }
                flag ++;
                timer = window.CreateTimerInterval(500)
                break;
        }
        fb.RemovePlaylist(amount_plIdx);
        window.Repaint();
    }
}
function RGB(r, g, b) {
    return (0xff000000 | (r << 16) | (g << 8) | (b));
}
function on_paint(gr) {
    gr.SetTextRenderingHint(5);
    var ww = window.Width;
    var wh = window.Height;
    var g_font = gdi.Font("メイリオ", 12, 0);
    gr.DrawString(disp, g_font, RGB(0,0,0), 0, 0, ww, wh, 0x01000000);
}

タイマーを使ってfoobar2000起動時に動作が重くならないように配慮。

num配列にデータが入っており、一応グローバルとして扱っているので、利用の場合は適当に独自の描写メソッドの引数に入れてやったりなんなりとご利用ください。





0 件のコメント:

コメントを投稿