コンポーネントの設定/Playlist Tree

Last-modified: 2010-07-02 (金) 19:49:11
Counter: ?, today: ?, yesterday: ?

現在?人閲覧中

 
 

これは何?

曲のリストを階層上に作る。Album List の機能上位版のようなもの。
bazquux からダウンロードできる。
01.png

用語解説

  • クエリ (Query)
    データベースから曲を抽出するための検索、およびその結果。デフォルトではこのアイコンで表される。
    02.png
  • フォルダ (Folder)
    入れ物の役割を果たす。PC のフォルダと同じようなもの。デフォルトではこのアイコンで表される。
    03.png
  • リーフ (Leaf)
    クエリの末端。ファイルそのものを表すことが多い。デフォルトではこのアイコンで表される。
    04.png
  • ノード (Node)
    これらクエリ、フォルダ、リーフを全てひっくるめてノードと言う。

クエリ 解説

05.png

  • Label (表示名)
    この欄では Title Formatting は基本的には無効なので、$,%,(,),[,] などの文字をそのまま表示させたい場合、 ' で囲む必要は無い。Title Formatting を使いたい場合は @format<> で囲む必要がある。
  • Source (曲情報の入手元)
    Playlist Tree 独自の記法で記入する。
    • @database
  • Criteria
    Query syntax を使って表示する曲の条件を記入する。
    • 例1
      date EQUAL 2007
    • 例2
      %codec% IS MP3
  • Format
    クエリの構造を書き込む。基本的には Title Formatting のルールが適用される。| で新しく階層を作ることが出来る。
    • %album artist%|%album%|%title%
  • Maximum
    クエリに表示する曲(リーフ)の制限数。選択肢にある megs とはメガバイトのこと。
  • Population Order
    何によってソートするかを TitleFormatting で書き込む。Reverse で逆順にソートする。
  • Sort by display name after populating
    子ノードの名前順にソートする。これにチェックを入れている場合、Population Order を設定する必要は無い。
  • Automatically Refresh
    新しい曲が再生されるたびに、自動的に更新する。

関数一覧

  • 注意
    • Playlist Tree 特有の関数(以下、PT関数)はリーフでは使えない。これ以外にも、PT関数は本来の Title formatting の関数とは扱いが違う点が多い(PT関数の書き方を参照)。
    • 整数値で 2^31-1(2147483647) を超える数は取得できない

PT関数の書き方

PT関数は本来の Title formatting の関数と違い、特殊な書き方をしないと動作しないものが多い。
"$" または "%_" で始まるPT関数は、Label 欄では

@format<(PT関数を含んだスクリプト)>

Criteria 欄では

"@format<(PT関数を含んだスクリプト)>"

Format 欄では

@quote<@format<(PT関数を含んだスクリプト)>>

の形で記入する必要がある*1
なお、Label 欄でも(PT関数を含んだスクリプト)の部分は Title formatting のルールが適用されるようになる。

    • Label
      Files (Playing Artist) @format<$ifgreater(%_itemcount%,0,'['%_itemcount%' items]',)>
    • Criteria
      artist IS "@format<$playing('%artist%')>"
    • Format
      %artist%' ('@quote<@format<%_size_abb%>>')'|
      @icon<5>%album%|
      %title%

Tags

%_name%

ノードの名前を返す。自ノードに対して直接使うとフリーズする。

    • Format
      @rgb<255,0,0>aaa|@quote<@format<$parent('%_name%')>>|%title%

%_displayname%

ノードの名前を返す。%_name% と違い、ノード名 @icon<>@rgb<> などがあった場合は無視する。自ノードに対して直接使うとフリーズする。

    • Format
      @rgb<255,0,0>aaa|@quote<@format<$parent('%_displayname%')>>|%title%

%_size_abbr%

自ノード以下にあるリーフの合計ファイルサイズを返す。単位は"○○ GB" や "○○ MB" のように、自動的に調整される。

    • Label
      Total size (abbr) [@format<%_size_abbr%>]
    • Format
      %artist%|
      $if2(%album%,Unknown Album) '('@quote<@format<%_size_abbr%>>')'|
      %title%
      単位を統一したい、ファイルサイズを詳細に表示したいというような場合には %_size% などを使う。

%_size_abb%

自ノード以下にあるリーフの合計ファイルサイズを返す。単位は"○○ G" や "○○ M" のように、自動的に調整される。

    • Label
      Total size (abb) [@format<%_size_abb%>]
    • Format
      %artist%|
      $if2(%album%,Unknown Album) '('@quote<@format<%_size_abb%>>')'|
      %title%
      単位を統一したい、ファイルサイズを詳細に表示したいというような場合には %_size% などを使う。

%_size%

自ノード以下にあるリーフの合計ファイルサイズを、バイト数でそのまま返す。ただし、2^31-1(2147483647 ≒ 2GB) を超える場合は正常に取得できない。これより大きいファイルサイズを取得したい場合は %_size_abbr%%_size_abb% を使う必要がある。

  • 例 ("○.○○ GB" や "○○.○○ MB" のような形で表す)
    • Label
      Total size (original) (@format<%_size%> bytes)
    • Format
      %artist%|
      $if2(%album%,Unknown Album) '('@quote<@format<%_size%>>')'|
      %title%

%_play_length%

自ノード以下にあるリーフの総演奏時間を返す。単位は24時間以内ならば [hh:]mm:ss 、そうでなければ ">4 days" のように日付のみで返す。

    • Label
      play_length [@format<%_play_length%>]
    • Format
      %artist%|
      %album% '('@quote<@format<%_play_length%>>')'|
      %title%
      表示方法が好みに合わない場合は、$sum('%_length_seconds%') を使って、例えば
    • Label
      Total @format<$ifgreater(%_itemcount%,0,'['$replace($cwb_wdhms($sum('%_length_seconds%')),d, days,wk, weeks and)']','('No Item')')>
      のようにする(上の例では cwbowron's hooks が必要)。
      なお、$sum('%_length_seconds%') の値が 2^31-1(2147483647 ≒ 3310週間) を超える場合は正常に表示できない。

%_itemcount%

自ノード以下にある全てのリーフの数を返す。

    • Label
      play_length [@format<%_itemcount%>]
    • Format
      %artist%|
      %album% '('@quote<@format<%_itemcount%>>' items)'|
      %title%

%_foldercount%

子ノードの数を返す。%_itemcount%と違って直接の子しかカウントしない。

    • Label
      Folder Count (@format<%_foldercount%> items)
    • Format
      %artist% '('@quote<@format<%_foldercount%>>' items)'|
      %album% '('@quote<@format<%_foldercount%>>' items)'|
      %title%

%_folderindex%

親からみた自分のインデックス番号を返す。最初は 1 から。

    • Label
      Folder Index
    • Format
      @quote<@format<$num(%_folderindex%,2)>> - %artist%|
      @quote<@format<$num(%_folderindex%,2)>> - %album%|
      %title%

%_overallindex%

PlaylistTree全体におけるインデックス番号を返す。最初は 1 から(ルートフォルダは 0 )。

@quote<@format<$num(%_overallindex%,2)>> - %artist%|
@quote<@format<$num(%_overallindex%,2)>> - %album%|
%title%

%_nestlevel%

階層の深さを返す。@fakelevel で隠れた階層もカウントされる。

%_isquery%

クエリなら1を返す。

%_isleaf%

リーフなら1を返す。

%_isfolder%

フォルダなら1を返す。

Functions

@browse_as<>

(現在使用できない模様。)

%<tag>%

Album List のように、タグに複数の値が入っている場合は個別で判定してくれる。Playlist Tree では、%<tag1,tag2,tag3>% のように複数のタグを記述することもできる。
公式サイトではバグリストに入っている関数なので、使用する際には注意。

@format<>

"$" または "%_" で始まるPT関数を使用する際にこれで囲む。

@icon<index>

ノードのアイコン画像を指定(変更)する。

    • Label
      icon test
    • Format
      @icon<5>a|
      @icon<10>b|
      %title%

$playing('tag')

演奏中トラックの指定したタグ情報を取得する。使用する際には、

$playing('%artist%')

のように ' で囲む必要がある。

  • 例 (再生中のアーティストと同じ曲を抽出)
    • Label
      Playing Artist's Songs (@format<$playing('%artist%')>)
    • Source
      @database
    • Criteria
      artist IS "@format<$playing('%artist%')>"
    • Format
      %title%
    • Automatically Refresh

$avg('tag')

自ノード以下の全リーフから指定したタグ情報を取得しその平均値を小数点2桁まで返す。使用する際には、

$avg('%_length_seconds%')

のように ' で囲む必要がある。少数部分の数を表示したくない場合は、

$num($avg('%_length_seconds%'),0)

のように $num() を使うと整数部分のみが表示される。

    • Label
      Average Length [@format<$avg('%_length_seconds%')> seconds]
    • Format
      %artist% '['@quote<@format<$avg('%_length_seconds%')>>' seconds]'|
      %album% '['@quote<@format<$avg('%_length_seconds%')>>' seconds]'|
      %title%

$sum('tag')

自ノード以下の全リーフから指定したタグ情報を取得しその合計値を返す。使用する際には、

$sum('%_length_seconds%')

のように ' で囲む必要がある。

    • Label
      Total Length [@format<$sum('%_length_seconds%')> seconds]
    • Format
      %artist% '['@quote<@format<$sum('%_length_seconds%')>>' seconds]'|
      %album% '['@quote<@format<$sum('%_length_seconds%')>>' seconds]'|
      %title%

@quote<>

関数内の文字はトークンとして解釈されない。Label 欄で @format<> とともに使う機会が多いと思われる

$parent('tag',n)

自分よりn階層上のノードからタグ情報を取得する。使う際には、

$parent('%_foldercount%',2)

のように ' で囲む必要がある。n を省略すると、一個上のノードを参照する。
同一フィールド内で一度でも$parentを使用すると、それ以降は $parent節の外でも祖先ノードを参照するバグ?がある。

@query<>

そのクエリの子ノードとしてクエリを作成する。フリーズしやすいので使用の際には注意。

@query<Label;Source;Criteria;Format;PopOrder;DisplayOrder>

のように書く。

$hidetext()

括弧でかまれた部分を表示しない。おそらくコメントアウト用途的なものだと思われる。

@hidden 系

  • @hidden
    自分より下のノード全体を隠す。自分自身は表示する(アイコンの色が薄くなって表示される)。
  • @hidden2
    自より下のノード全体、および自分自身を隠す。
  • @hidden3
    自分に直接ぶら下がる全リーフを隠すがサブフォルダは隠さない。また自分自身は表示される。これらは直後に半角スペースを入れないと動作しない
  • 例1
    • Format
      %album%|%artist% @hidden2 |%title%
  • 例2
    • Format
      @quote<@format<$if($greater(%_foldercount%,8),@hidden ,)>>%album%|[$num(%tracknumber%,2)]%title%

@fakelevel

その階層だけを隠す。直後に半角スペースを入れないと動作しない

@rgb<r,g,b>

ノードの文字色を指定する。設定で "Custom selection colors" を ON にしておく必要がある。文字列の途中から色を変えることは出来ない。

@limit<max>

子ノードの最大数を指定する。

    • Format
      %album%@limit<5> |[$num(%tracknumber%,2)]%title%

@default

ソースが@drop<>の時、元のディレクトリ構造を再現する。

Source

Source 欄で使える関数。

@database

@database

Media Library のデータベースから入手する。

@drop<>

@drop<(パス名)>

特定のパス内の曲を検索し入手する。"(パス名)"の部分に検索したいパス名を書き込む。

  • @drop<C:\WINDOWS\Media>

@node<>

@node<(ノード名)>

特定のノード内の曲を検索し入手する。"(ノード名)"の部分に検索したいノード名を書き込む。

@and,@or,@not

@node<> および @drop<> に対して使える論理演算子。

  • @and
    • @node<a> @and @node<b>
      "a" と "b" 、両方のノードにあるものを対象にする。
  • @or
    • @node<a> @or @node<b>
      "a" と "b" の、少なくとも一方のノードにあるものを対象にする。
  • @not
    • @node<a> @not @node<b>
      "a" というノードにあり、"b" というノードにないものを対象にする。

@playlists

@playlists

すべてのプレイリストにある曲を対象にする。プレイリストごとにクエリを作る。

@playlist<>

@playlist<(プレイリスト名)>

特定のプレイリスト内の曲を対象にする。"(プレイリスト名)"の部分にプレイリスト名を書き込む。

@scheme

@scheme

"Scheme" というプログラム言語を使ってクエリを作成できるようになる。

その他

$treenode(arg)

選択しているノードの情報を返す。Playlist Tree 外で Title Formatting の関数として使うことができる。arg 部分に入れることができるのは以下の通り。

  • name
  • displayname
  • size
  • duration
  • itemcount
  • foldercount
  • overallindex
  • isleaf
  • isfolder
  • isquery
  • $treenode(name)

設定画面 (Preferences)

Preferences - Media Library > Playlist Tree Panel から選択可能。

"Playlist Tree Panel"

(画像)

  • Appearance (外観)
    • Font , Text Color , Line Color, Back Color
      順に フォント、文字の色、線の色、背景色
    • Edge Style
      枠のスタイル
    • no hscroll
      スクロールバーを隠す
    • hide root
      ルートフォルダを隠す
    • ''hide leaves
      リーフを隠す
    • hide +/-
      クエリやフォルダの横にある +/- マークを隠す
  • File Format
    編集希望
  • Folder Format
    編集希望
  • Default Query Format
    クエリを作成する際に、"Format" 欄にデフォルトで入力されるスクリプト
  • Library Playlist
    ライブラリプレイリスト名の設定
    • Activate library playlist when sending
      ライブラリプレイリストに曲を送ったとき、そのプレイリストをアクティブにする
    • Rename library playlist when sending
      編集希望
  • Custom Colors
    • Custom selection colors
      ノードが選択されたときの背景や文字の色を変える(これを ON にすると、@rgb が使えるようになる)
  • Use Default Queries if no file loaded
    編集希望
  • Bitmaps
    アイコン画像について(設定を有効にするには foobar2000 の再起動が必要)
    • Enable Bitmaps
      アイコン画像を有効にする
    • Load Windows Bitmaps
      ウィンドウズのアイコン画像を読み込む
    • Leaf,Folder,Query
      それぞれのアイコンを変更
    • foobar2000 icon path
      foobar2000 のアイコンがあるパス名。絶対パスで入力する
    • Additional Bitmaps
      好きなアイコン画像を追加できる。絶対パスで入力する。改行は Ctrl + Enter で

"Mouse & Keyboard"

  • Selection Actions
    ノードを選択したときに実行するアクション
  • Double Click Actions
    ノードをダブルクリックしたときに実行するアクション
    • Refresh Queries
      ダブルクリックしたときにノードを更新する
  • Middle Click Actions
    ノードを中クリックしたときに実行するアクション
  • Right Click Actions
    ノードを右クリックしたときに実行するアクション
    • with Shift
      ノードを Shift キー + 右クリックしたときに実行するアクション
  • Enter
    Enter キーを押したときに実行するアクション
  • Space
    Space キーを押したときに実行するアクション
  • Process Keyboard Shortcuts
    ノード選択時に General > Keyboard Shortcuts のキーボードショートカットを実行できるようにする
  • File Limit
    編集希望
 

"Scheme"

編集希望

Tips

  • クエリを編集し終わったときに、Shift を押しながら OK をクリックすると Refresh されない

外部リンク

  • uninkoの日記
    関数を詳細に、例を付けて解説している。説明は古いバージョンのものだが、関数の機能自体はあまり変わっていないので十分に使える。より詳しい解説を読みたい場合はおすすめ。
  • Playlist_Tree_Tutorial
    公式チュートリアル。英語。scheme などの解説がある。

*1 この他にも様々な書き方があるが、この書き方が一番誤動作が少ないと思われる。