#contents

*cwbowron's hooks [#g262b65a]

このコンポーネントは、いろいろな種類の[[TitleFormatting]]の関数を追加したりすることができます。
-[[cwbowron's title format hooks mod (foobar2000 v1.1以上に対応)>General/その他#c1851829]]

*設定 [#y838bc99]

Preferences>Tools>CWB Hooks から設定できます。

#imgr(./snaps/up364.png);
※ この画像はv1.1.1のものです。

-User defined next strings
--[[%cwb_next_user1%,%cwb_next_user2%>cwbowron's hooks 解説#i58ab444]]で参照するフィールドを設定できます。
設定が反映されない場合は、foobar2000を再起動してみてください。
-Notify other components…
--他のコンポネートが設定を変更したとき、通知します。
-Perform Action on Skipped Files
--Playback>Nextが実行されたときに選択したアクションを実行します。
:使用例 - 曲のスキップ回数を記録する|
++[[Tagging]]>Manage Scriptsから
 Action: "Format Values From Other Fields" 
 Destination Field: SKIP_COUNT
 Formatting pattern: $if(%skip_count%,$add(%skip_count%,1),1)
とし、適当な名前で保存します。
++Perform Action…で
 Tagging/Scripts/(保存した名前)
を選択します。
++Nextで次の曲に移動する度に、その曲の%skip_count%の値が1増えるようになります。

*関数の解説 [#w363abaf]
[[TitleFormatting]]の解説は、[[Reference:http://tnetsixenon.xrea.jp/title_formatting.html]] や [[Title Formatting Help]] などを参考にしてください。

**文字列の変換、比較 [#ve0ee824]
***$cwb_urldecode(x) [#p582a30d]
xの文字をURLデコードします。%などを含んでいるとそのままではうまく変換されないので、
<pre>
$cwb_urldecode('%E3%81%82')
</pre>
 $cwb_urldecode('%E3%81%82')
のように、'を入れて使用してください。ちなみに、上の例では'''あ'''と表示されます。

***$cwb_removethe(x) [#h6febce7]
xの単語の頭にあるaまたはtheを消します。anは消えません。

***$cwb_ltrim(x,L1,L2,...) [#c974650a]
xの単語の頭に文字Lnがあれば除去します。

***$cwb_datediff(d1,d2) [#s6f64956]
'''yyyy-mm-dd'''または'''yyyy-mm-dd hh:mm:ss'''で表される二つの日付の日数を比較します。
24時間で一日とカウントされます。
なお、'''yyyy-mm-dd'''は'''yyyy-mm-dd 00:00:00'''とみなされます。
:例|
<pre>
$cwb_datediff(2006-12-30 01:00:00,2007-01-01 00:00:00)
</pre>
 $cwb_datediff(2006-12-30 01:00:00,2007-01-01 00:00:00)
この場合、差は一日と23時間なので'''1'''と表示されます。

***$cwb_hms(n) [#eab4e0f2]
秒数nを'''hh:mm:ss'''の形に変換します。小数点以下は切り捨てられます。
nの値が2^31-1(2147483647、596523:14:07)を超える場合、正常に認識されません。
:例|
<pre>
$cwb_hms(90.81)
</pre>
 $cwb_hms(90.81)
'''01:30'''が返されます。

***$cwb_wdhms(n) [#e7d3f58d]
秒数nを'''?wk ?d hh:mm:ss'''の形に変換します。

***$cwb_splitnum(n,x) [#wd9dcac2]
数字nを三桁ずつ区切り、文字xを挿入します。
$cwb_splitnum(n)はスペースを挿入します。
:例|
<pre>
$cwb_splitnum(1000000,',')
</pre>
 $cwb_splitnum(1000000,',')
'''1,000,000'''が返されます。

**プレイリストの情報 [#a472cee3]

***%cwb_activelist% [#u8dbd8d3]
アクティブなプレイリストの名前を返します。

***%cwb_activelist_count% [#xee3de3d]
アクティブなプレイリストの総曲数を返します。

***%cwb_activelist_duration% [#w3fb89fc]
アクティブなプレイリストの総演奏時間を、秒数で小数点二桁まで返します。
:設定例|
<pre>
$cwb_hms(%cwb_activelist_duration%)
</pre>
 $cwb_hms(%cwb_activelist_duration%)
これにより、'''hh:mm:ss'''の形になります。
***%cwb_playinglist% [#k8dee728]
再生中のプレイリストの名前を返します。

***%cwb_playinglist_count% [#p5c5f90c]
再生中のプレイリストの総曲数を返します。

***%cwb_playinglist_duration% [#mde1ec6a]
再生中のプレイリストの総演奏時間を、秒数で小数点二桁まで返します。
:設定例|
<pre>
$cwb_hms(%cwb_playinglist_duration%)
</pre>
 $cwb_hms(%cwb_playinglist_duration%)
これにより、'''hh:mm:ss'''の形になります。

***%cwb_playing_index% [#l5344f1b]
再生中のトラックが、プレイリストの何番目にあるかを返します。

***%cwb_selection_count% [#k8eb8391]
選択されたトラックの総曲数を返します。

***%cwb_selection_duration% [#qb61f98e]
選択されたトラックの総演奏時間を、秒数で小数点二桁まで返します。

**キューの情報 [#tf5f732a]

***%cwb_queueindex% [#a447b535]
選択されたトラックが、何番目のキューに入っているかを返します。複数回入っていても一番若い数のみを返します。

***%cwb_queueindexes% [#z72926fb]
選択されたトラックが、何番目のキューに入っているかを返します。複数回入っていた場合、' , 'で区切って返します。

***%cwb_queuelength% [#af6c653b]
現在キューされている曲数を返します。

***%cwb_queue_end_playlist% [#n263c5dc]
最後にキューしたトラックのプレイリスト名を返します。

**next_* [#cd2c345e]

***%cwb_next_title% [#vf17523f]
次のファイルの%title%の値を返します。

***%cwb_next_artist% [#x7a06246]
次のファイルの%artist%の値を返します。

***%cwb_next_user1%,%cwb_next_user2% [#i58ab444]
次のファイルの、任意に設定したフィールドの値を返します。
[[設定方法>cwbowron's hooks 解説#y838bc99]]
使うには、%cwb_next_user1% とそのまま記入してください。

**foobar2000 の情報 [#n1c41fc0]

***%cwb_stopaftercurrent% [#h936924a]
Playback>Stop after current が有効ならば1、無効ならば何も返しません。$ifなどと共に使います。

***%cwb_followcursor% [#z6cfdd0b]
Playback>Playback follows Cursor が有効ならば1、無効ならば何も返しません。$ifなどと共に使います。
Playback>Cursor follows Playback と間違えないように。

***%cwb_playback_order% [#zc2ac92b]
Playback>Order>... の値を返します。

***%cwb_volume% [#h960e600]
ボリュームの値を返します。
:設定例|
<pre>
$if(%cwb_volume%
,
$ifequal($strchr(%cwb_volume%,'.'),2,'  ',$ifequal($strchr(%cwb_volume%,'.'),3,' ',))
$ifequal($strchr(%cwb_volume%,'.'),5,-100.0 dB,%cwb_volume% dB)
,
 Volume)
</pre>
 $if(%cwb_volume%
 ,
 $ifequal($strchr(%cwb_volume%,'.'),2,'  ',$ifequal($strchr(%cwb_volume%,'.'),3,' ',))
 $ifequal($strchr(%cwb_volume%,'.'),5,-100.0 dB,%cwb_volume% dB)
 ,
  Volume)
少し見やすいように改造(等幅フォントで効果を発揮します)。

***%cwb_playback_state% [#k64639f3]
stop, play, pauseを返します。
:設定例|
<pre>
$replace(%cwb_playback_state%,play,Playing,pause,Paused,stop,Stopped)
</pre>
 $replace(%cwb_playback_state%,play,Playing,pause,Paused,stop,Stopped)
再生中に'''Playing'''、ポーズしたときに'''Paused'''、停止したときに'''Stopped'''を返すようにします。

:%_isplaying%,%_ispaused% との違い|
%cwb_playback_state% は "foobar2000が曲を再生、一時停止しているかどうか" を判断しますが、
%_isplaying%,%_ispaused% は "''その曲一曲が''再生、一時停止されているかどうか" を判断します。
この違いは、 Columns Playlist や [[Single Column Playlist>Single Column Playlist 解説]],[[Track info panel mod>User interface#l16c0a98]] の Follow Cursorモードなどで重要になります。

**その他 [#ba9fecfd]

***$cwb_fileexists(f) [#s2c84050]
パス名を含んだファイルの有無を調べます。$ifなどと共に使います。
絶対、相対パスの両方が使えます。
:設定例|
<pre>
$if($cwb_fileexists($replace(%_path%,%_filename_ext%,)foobar.jpg),blah,zzz)
</pre>
 $if($cwb_fileexists($replace(%_path%,%_filename_ext%,)foobar.jpg),blah,zzz)
再生中のファイルがあるフォルダに、'''foobar.jpg'''という名のファイルがあれば'''blah'''を、なければ'''zzz'''を返します。

***%cwb_systemdate% [#efcdf664]
Windowsのシステムの日付を'''yyyy-mm-dd'''の形で返します。
:設定例|
<pre>
$replace(%cwb_systemdate%,'-','/')
</pre>
 $replace(%cwb_systemdate%,'-','/')
日付を'''yyyy/mm/dd'''の形で返します。
<pre>
$substr(%cwb_systemdate%,6,7)
</pre>
 $substr(%cwb_systemdate%,6,7)
今月は何月かを返します。

***%cwb_systemdatetime% [#p8c374f0]
Windowsのシステムの日付、時刻を'''yyyy-mm-dd hh:mm:ss'''の形で返します。
:設定例|
<pre>
$replace(%cwb_systemdatetime%,%cwb_systemdate%' ',)
</pre>
 $replace(%cwb_systemdatetime%,%cwb_systemdate%' ',)
時刻のみを'''hh:mm:ss'''の形で返します。

***$cwb_rand() [#ga674e64]
0 ~ 2^15-1(32767)までの間で乱数を返します。
:設定例|
<pre>
$mod($cwb_rand(),10)
</pre>
 $mod($cwb_rand(),10)
0 ~ 9 の間で乱数を取得します。

***%cwb_created% [#yabfb839]
ファイルの作成日時を'''yyyy-mm-dd hh:mm:ss'''の形で返します。
(([[New File Tageer>#teeb9e22]]で %cwb_systemdatetime% を使うことにより、ファイルにいちいちアクセスしないで似たような情報を取得できるようになったため、本家解説にはこの関数は現在記載されていない。))

*New File Tagger [#teeb9e22]
Preferences>Tools>New File Tagger から設定できます。

#imgr(./snaps/up321.png);

-Process files added to the library
--チェックを入れることにより、Media libraryに新規追加されたファイルに対して選択したコマンドを自動的に実行できるようになります。
Preferences>Media library>Add/Scan/Scan Allでも、すでにMedia libraryに指定してあるフォルダ以下からのD&Dでも機能します。

Replaygainの分析や、[[Tagging scripts>Tagging#v7812ec5]]や[[foo_custominfo>foo_custominfo 解説]]を使ってdatabase=1のような事ができます。


*[[Masstagger に追加される Action>Tagging#lf7dc49b]] [#rcafb406]
***Stamp Current Date and Time [#iff22741]
指定したfieldに、Windowsの時刻を 2007-01-10 16:45:22 のように入力します。

***Stamp File Creation Time [#jcab27ca]
指定したfieldに、ファイル作成日時を 2007-01-10 16:45:22 のように入力します。

*Tagger Window [#p8c33c8p]
//#ref(http://foobar.bazquux.com/images/tagger.png);
//※ 画像はv1.2.beta0のものです。

再生中の曲のタグをチェックボックスによって編集できます。
設定は右クリック→Options から。
-Options
--Metadata Field:
チェックボックスで編集するフィールド名を設定。
--Tags:
Tagger Window に表示するタグを設定。
複数入力する場合は間に ; (半角セミコロン)を。
--Show Rating Buttons
右端に表示されるレーティングボタンの表示/非表示。

*実装予定のない機能 [#s3871418]
作者によると、foobar2000の機能上、実装不可能なものがあるようです。これらの機能は期待しないほうがいいでしょう。
http://wiki.bowron.us/index.php/Foobar2000:Hooksより。(07/02/10 現在)

-%cwb_next_*%
--次のトラックの情報を参照する機能に関することは、これ以上はほぼ不可能。
-%_replaygain_mode%
-%_database% (databaseにファイルがあるかどうかを調べる関数)

IP:58.94.173.95 TIME:"2016-02-15 (月) 22:09:21" REFERER:"http://foobar2000.xrea.jp/index.php" USER_AGENT:"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"