Foobar2000/Описание синтаксиса форматирования заголовков

Предопределённые поля

править

Некоторые поля, доступные как %имя%, предопределены другими значениями, чтобы сделать написание скриптов форматирования заголовка более удобным.

Метаданные

править

%album artist%

править

Определёно как $if3($meta(album artist),$meta(artist),$meta(composer),$meta(performer))..

Определёно как $if3($meta(album),$meta(venue)).

Определёно как $if3($meta(artist),$meta(album artist),$meta(composer),$meta(performer)).

Возвращает номер диска. Номер берётся из тега discnumber; если этот тег не существует, номер берётся из тега disc. Если оба тега не прописаны, поле не определено.

Эквивалентно предопределённому полю %discnumber%

%discnumber%

править

Возвращает номер диска. Номер берётся из тега discnumber; если этот тег не существует, номер берётся из тега disc. Если оба тега не прописаны, поле не определено.

Эквивалентно предопределённому полю %disc%

%track artist%

править

Определёно как $meta(artist), если $meta(album artist) отлично от $meta(artist), иначе это поле пусто.

Определёно как $if2($meta(title),%_filename%). Возвращает тэг title , если он присутствует, иначе возвращает имя файла, без расширения.

Возвращает номер трека, дополненный слева нулями до двух цифр. Номер трека берётся из тега tracknumber; если этот тег не существует, номер берётся из тега track. Если оба тега не прописаны, поле не определено.

Эквивалентно предопределённому полю %tracknumber%.

%tracknumber%

править

Возвращает номер трека, дополненный слева нулями до двух цифр. Номер трека берётся из тега tracknumber; если этот тег не существует, номер берётся из тега track. Если оба тега не прописаны, поле не определено.

Эквивалентно предопределённому полю %track%.

Техническая информация

править

Определёно как $if2($info(bitrate_dynamic),$info(bitrate)). Возвращает текущий битрейт, если это возможно, иначе - средний битрейт. Если ни то, ни другое не определено, ничего не возвращается.

Определёно как $channels(). Возвращает число каналов в виде текста; возвращает "mono" и "stereo" вместо "1" и "2".

Определёно как %_filesize%. Возвращает размер файла в байтах.

%samplerate%

править

Определёно как $info(samplerate). Возвращает частоту дискретизации в Гц.

Определёно как $codec().

Специальные поля

править

%playlist_number%

править

Определёно как $num(%_playlist_number%,$len(%_playlist_total%)). Возвращает позицию трека (индекс) в плейлисте. Первый трек имеет индекс 1. Индекс дополняется слева нулями до такого же числа цифр, как и у индекса последнего трека.

Управление потоком выполнения

править

Функции в этом разделе могут быть использованы для зависимого от условий выполнения выражений.

[...] (условный раздел)

править

Вычисляет выражение между [ и ]. Если оно истинно, возвращаются его строковое значение и логическое значение истина. Иначе возвращаются пустая строка и ложь.

Пример: [%artist%] возвратит значение тэга artist, если оно существует. Иначе ничего не возвратится, в то время, как %artist% возвратил бы "?".

$if(условие,тогда)

править

Если условие вычисляется как истина, возвращается значение вычисленной части тогда. Иначе возвращается ложь.

$if(условие,тогда,иначе)

править

Если условие вычисляется как истина, возвращается значение вычисленной части тогда. В ином случае возвращается значение вычисленной части иначе.

$if2(a,иначе)

править

Подобно $if(a,a,иначе) за исключением того, что a вычисляется однократно.

$if3(a1,a2,...,aN,иначе)

править

Вычисляет аргументы a1...aN, пока не будет найден первый, вычисляемый как истина. Если это произошло, возвращается значение этого аргумента. В иных случаях возвращается значение вычисленной части иначе.

$ifgreater(n1,n2,тогда,иначе)

править

Сравнивает целые числа n1 и n2, если n1 больше, чем n2, возвращается значение вычисленной части тогда. В иных случаях возвращается значение вычисленной части иначе.

$iflonger(s1,s2,тогда,иначе)

править

Сравнивает длины строк s1 и s2, если s1 длиннее, чем s2, возвращается значение вычисленной части тогда. В иных случаях возвращается значение вычисленной части иначе.

$ifequal(a,b,тогда,иначе)

править

Сравнивает значения целых чисел a и b, если они равны, возвращается значение тогда. В иных случаях возвращается значение иначе.

$select(n,a1,...,aN)

править

Если значение n находится между 1 и N, возвращается вычисленное значение an. Иначе возвращается ложь.

Арифметические функции

править

Функции в этом разделе могут быть использованы для арифметических операций над целыми числами. Строка будет автоматически преобразована в число и наоборот. Преобразуется наиболее длинная начальная часть строки, которая может быть интерпретирована как число. Ведущие пробелы игнорируются.

Пример: "c3po" -> 0, " -12" -> -12, но "- 12" ->0.

Складывает a и b.

Можно использовать с произвольным количеством аргументов. $add(a,b,...) аналогично $add($add(a,b),...).

Делит a на b. Если b вычисляется как ноль, возвращается a.

Можно использовать с произвольным количеством аргументов. $div(a,b,...) аналогично $div($div(a,b),...).

$greater(a,b)

править

Возвращает истина, если a больше, чем b, иначе возвращает ложь.

Возвращает максимальное из a и b.

Можно использовать с произвольным количеством аргументов. $max(a,b,...) аналогично $max($max(a,b),...).

Возвращает минимальное из a и b.

Можно использовать с произвольным количеством аргументов. $min(a,b,...) аналогично $min($min(a,b),...).

Вычисляет остаток от деления a на b. Результат имеет тот же знак, что и a. Если b вычисляется как ноль, возвращается a.

Можно использовать с произвольным количеством аргументов. $mod(a,b,...) аналогично $mod($mod(a,b),...).

Умножает a на b.

Можно использовать с произвольным количеством аргументов. $mul(a,b,...) аналогично $mul($mul(a,b),...).

$muldiv(a,b,c)

править

Умножает a на b, затем делит на c. Результат округляется до ближайшего целого.

Генерирует случайное число в диапазоне от 0 до 232-1.

Вычитает b из a.

Можно использовать с произвольным количеством аргументов. $sub(a,b,...) аналогично $sub($sub(a,b),...).

Логические функции

править

Функции в этом разделе могут быть использованы для работы с логическими значениями (истина и ложь), не имеющих явного представления в скриптах форматирования заголовка. Эти функции не возвращают строку или числовое значение. Их можно использовать для задания более сложных условий в $if и подобных ей функциях.

Логическое И произвольного числа элементов. Возвращает истина тогда и только тогда, когда все аргументы вычисляются как истина.

Пример: $and(x,y) равно истина, если как x, так и y равны истина. В иных случаях функция возвратит ложь.

Логическое ИЛИ произвольного числа элементов. Возвращает истина, когда хотя бы один аргумент вычисляется как истина.

Пример: $or(x,y) равно истина, если x или y, или одновременно x и y равны истина. В иных случаях функция возвратит ложь.

Логическое НЕ. Возвращает ложь, если x равно истина, иначе возвращает истина.

Логическое ИСКЛЮЧАЮЩЕЕ ИЛИ произвольного числа элементов. Возвращает истина, когда нечётное количество аргументов вычисляется как истина.

Пример: $xor(x,y) равно истина, если x или y, но не одновременно x и y, равны истина. В иных случаях функция возвратит ложь.

Функции работы с цветом

править

$blend(цвет1,цвет2,часть,всего)

править

Возвращает цвет, являющийся переходным между цвет1 и цвет2. Если часть меньше или равно нулю, возвращается цвет1. Если часть больше или равно всего, возвращается цвет2. В иных случаях возвращается смешанный цвет, являющийся на часть цвет1 и на всего-часть цвет2. Смешивание производится в цветовом пространстве RGB.

Сбрасывает цвет текста к принятому по умолчанию.

$rgb(r,g,b)

править

Устанавливает цвет текста. r, g и b - соответственно красная, зелёная и синяя составляющие цвета невыделенного текста. Цвет выделенного текста устанавливается инверсным.

$rgb(r1,g1,b1,r2,g2,b2)

править

Устанавливает цвет текста. r1, g1 и b1 - соответственно красная, зелёная и синяя составляющие цвета невыделенного текста. r2, g2 и b2 - соответственно красная, зелёная и синяя составляющие цвета выделенного текста.

$transition(строка,цвет1,цвет2)

править

Вставляет цветовые коды в строка так, что первый символ имеет цвет1, последний - цвет2, и промежуточные символы имеют переходные цвета. Смешивание производится в цветовом пространстве RGB. Обратите внимание, что цветовые коды являются дополнительными символами, которые также будут обработаны строковыми функциями. Например, если вам нужно усечь строку, это необходимо сделать до применения $transition().

Информация о проигрываемой композиции

править

Следующие функции и поля применимы в скриптах, используемых для текущей проигрываемой композиции, например в скриптах для строки статуса строки, заголовка окна и команды копирования.

Специальные поля

править

%_time_elapsed%

править

Возвращает время, прошедшее с начала проигрывания.

%_time_remaining%

править

Возвращает время, оставшееся до конца проигрывания песни.

%_time_total%

править

Возвращает общую длительность песни.

%_time_elapsed_seconds%

править

Возвращает время, прошедшее с начала проигрывания, в секундах.

%_time_remaining_seconds%

править

Возвращает время, оставшееся до конца проигрывания, в секундах.

%_time_total_seconds%

править

Возвращает общую длительность песни в секундах.

%_ispaused%

править

Возвращает "1", если проигрывание приостановлено (на паузе) и пустую строку в ином случае.

Информация о плейлисте

править

Следующие функции и поля применимы в скриптах для плейлиста.

Специальные поля

править

%isplaying%

править

Возвращает "1", если файл в текущий момент проигрывается и пустую строку в ином случае.

Старая версия %_isplaying% остаётся допустимой.

%_ispausing%

править

Возвращает "1", если проигрывание приостановлено, в ином случае возвращает пустую строку.

%_playlist_number%

править

Возвращает индекс элемента в плейлисте. Первый элемент имеет индекс 1.

Смотрите также %playlist_number%.

%_playlist_total%

править

Возвращает количество элементов в плейлисте.

%playlist_name%

править

Возвращает имя плейлиста, в котором содержится элемент.

Старая версия %_playlist_name% остаётся допустимой.

Строковые функции

править

Функции из этого раздела используются для операций над символьными строками.

Возвращает аббревиатуру x.

$abbr(x,длина)

править

Возвращает аббревиатуру x, если x длиннее, чем длина символов, в ином случае возвращает x.

Приводит x к системной кодовой странице и возвращает получившееся значение. Символы, не присутствующие в системной кодовой странице будут удалены/заменены. Полезно при массовом переименования файлов для обеспечения совместимости с программами, не понимающими юникод.

Делает первую букву каждого слова в x прописной, остальные буквы - строчными.

Делает первую букву каждого слова в x прописной, остальные буквы оставляет в неизменном виде.

Вставляет юникодный символ с кодом x.

Вычисляет численное значение CRC32 строки a. Предназначена для использования при задании цветов в скриптах.

Вставляет маркер конца строки (возврат каретки, перевод строки). Может использоваться для вывода нескольких строк, например, во всплывающей подсказке иконки в системном трее.

$cut(a,длина)

править

Возвращает первые длина символов, начиная слева a.

$directory(x)

править

Извлекает имя каталога из файлового пути x.

$directory(x,n)

править

Извлекает имя каталога уровня n (отсчитывая с последнего) из файлового пути x.

Извлекает расширение файла из x (который должен быть именем файла или путём).

$filename(x)

править

Извлекает имя файла из полного пути.

$fix_eol(x)

править

Если x содержит маркер конца строки (CR-LF), этот маркер и весь текст после него заменяется строкой "(...)". В ином случае x возвращается неизменённым.

$fix_eol(x,индикатор)

править

Если x содержит маркер конца строки (CR-LF), этот маркер и весь текст после него заменяется строкой индикатор. В ином случае x возвращается неизменённым.

Приводит целое число n к шестнадцатиричной системе счисления.

$hex(n,длина)

править

Приводит целое число n к шестнадцатиричной системе счисления с длина цифрами, дополняет слева нулями при необходимости.

$insert(a,b,n)

править

Вставляет b в a после символа, находящегося в позиции n.

$left(a,длина)

править

Возвращает первые длина символов, считая слева a.

Возвращает длину строки a в символах.

Возвращает длину строки a в символах, учитывая правила обработки двухбайтовых (double-width) символов (двухбайтовый символ считается за два).

$longer(a,b)

править

Возвращает истина, если строка a длиннее строки b, в ином случае возвращает ложь.

Приводит a к нижнему регистру.

$longest(a,...)

править

Возвращает длиннейший из аргументов. Можно использовать с произвольным количеством строк.

$num(n,длина)

править

Дополняет (при необходимости) нулями слева до длина цифр число n в десятичной системе счисления.

$pad(x,длина)

править

Дополняет x слева пробелами до длина символов.

$pad_right(x,длина)

править

Дополняет x справа пробелами до длина символов.

$pad(x,длина,символ)

править

Дополняет x слева символом символ до длина символов.

$pad_right(x,длина,символ)

править

Дополняет x справа символом символ до длина символов.

$padcut(x,длина)

править

Возвращает первые длина сиволов с начала x, если x длиннее длина символов. В ином случае дополняет x справа пробелами до длина символов.

$padcut_right(x,длина)

править

Возвращает первые длина сиволов с начала x, если x длиннее длина символов. В ином случае дополняет x слева пробелами до длина символов.

$progress(позиция,диапазон,длина,a,b)

править

Создаёт полоску прогресса (progress bar): позиция определяет текущую позицию, диапазон - граничное значение, длина - длину полоски прогресса в символах, a и b определяют символы, из которых строится полоска прогресса.

Пример: $progress(%_time_elapsed_seconds%, %_time_total_seconds%, 20,'#','=') выдаст "====#===============", где символ # движется в соответствии со временем проигрывания песни.

$progress2(позиция,диапазон,длина,a,b)

править

Создаёт полоску прогресса (progress bar): позиция определяет текущую позицию, диапазон - граничное значение, длина - длину полоски прогресса в символах, a и b определяют символы, из которых строится полоска прогресса. Отличается от $progress видом результирующей полоски.

$repeat(a,n)

править

Возвращает n копий a. Обратите внимание, что a вычисляется однажды перед использованием значения, так что $repeat не может быть использовано в роли цикла.

$replace(a,b,c)

править

Заменяет все вхождения строки b в строке a строкой c.

Можно использовать с произвольным количеством аргументов. Обратите внимание, что $replace(a,b1,c1,b2,c2) возвращает значение, отличное от $replace($replace(a,b1,c1),b2,c2).

Пример: $replace(ab,a,b,b,c) -> "bc", $replace($replace(ab,a,b),b,c) -> "cc"

$right(a,длина)

править

Возвращает первые длина символов с конца a.

Приводит целое число n к записи римскими цифрами.

Производит ROT13 преобразование строки a.

Пример: $rot13('foobar2000') -> "sbbone2000".

$shortest()

править

Возвращает самый короткий из своих аргументов. Можно использовать с произвольным количеством аргументов.

$strchr(s,c)

править

Ищет первое вхождение символа c строке s.

Пример: $strchr(abca,a) -> 1

$strrchr(s,c)

править

Ищет последнее вхождение символа c в строке s.

Пример: $strrchr(abca,a) -> 4

$strstr(s1,s2)

править

Ищет первое вхождение строки s2 в строке s1.

$strcmp(s1,s2)

править

Выполняет регистрозависимое сравнение строк s1 и s2.

$stricmp(s1,s2)

править

Выполняет регистронезависимое сравнение строк s1 и s2.

$substr(s,m,n)

править

Возвращает подстроку строки s, начиная с m-го символа т заканчивая n-ым символом.

Удаляет ведущие и завершающие пробелы из строки s.

Вставляет один символ табуляции.

Вставляет n символов табуляции.

Приводит строку s к верхнему регистру.

Информация о треке

править

Метаданные

править

$meta(имя)

править

Возвращает значение тега с именем имя. Если существуют несколько тегов с этим именем, они объединяются с использованием "," в качестве разделителя.

Пример: $meta(artist) -> "He, She, It"

$meta(имя,n)

править

Возвращает значение n-го тега с именем имя.

Пример: $meta(artist,2) -> "She"

$meta_sep(имя,разделитель)

править

Возвращает значение тега с именем имя. Если существуют несколько тегов с этим именем, они объединяются с использованием разделитель в качестве разделителя.

Пример: $meta_sep(artist,' + ') -> "He + She + It"

$meta_sep(имя,разделитель,последний_разделитель)

править

Возвращает значение тега с именем имя. Если существуют несколько тегов с этим именем, они объединяются с использованием разделитель в качестве разделителя между ними, исключая последние два значения, которые разделяются последний_разделитель.

Пример: $meta_sep(artist,', ',' and ') -> "He, She and It"

$meta_test(...)

править

Возвращает истина, если все теги, имена которых были переданы в качестве параметров, существуют.

Пример: $meta_test(artist,title) -> true

$meta_num(имя)

править

Возвращает количество тегов с именем имя.

Пример: $meta_num(artist) -> 3

$tracknumber()

править

Возвращает номер трека, дополненный нулями до 2 цифр.

$tracknumber(n)

править

Возвращает номер трека, дополненный нулями до n цифр.

Техническая информация

править

$info(имя)

править

Возвращает значение поля технической информации с именем имя.

Пример: $info(channels) -> 2

Возвращает кодек трека. Если поле codec отсутствует, используется расширение файла.

Пример: $codec() -> "WavPack"

$channels()

править

Возвращает число каналов в виде текста.

Пример: $channels() -> "stereo"

%__replaygain_album_gain%

править

Возвращает значение ReplayGain gain альбома.

%__replaygain_album_peak%

править

Возвращает значение ReplayGain peak альбома.

%__replaygain_track_gain%

править

Возвращает значение ReplayGain gain трека.

%__replaygain_track_peak%

править

Возвращает значение ReplayGain peak трека.

Специальные поля

править

$extra(имя)

править

Возвращает значение специального поля с именем name. Эти поля также доступны посредством %_имя%; обратите внимание на дополнительный знак подчёркивания. Можно использовать следующие имена полей:

Возвращает имя файла без имени каталога и расширения.

filename_ext
править

Возвращает имя файла c расширением, но без имени каталога.

directoryname
править

Возвращает только имя родительского каталога, но не полный путь.

Возвращает путь.

Возвращает путь как URL, включая тип протокола.

Возвращает номер подкомпозиции. Номер подкомпозиции используется для отличия множества треков в одном файле, например, в cue sheet, трекерных модулях и различных форматах контейнеров.

foobar2000_version
править

Возвращает строку, сообщающую версию foobar2000.

Возвращает длину трека в формате часы, минуты, секунды.

Возвращает длину трека в формате часы, минуты, секунды и миллисекунды.

length_seconds
править

Возвращает длину трека в секундах.

length_seconds_fp
править

Возвращает длину трека в секундах в виде числа с плавающей точкой.

length_samples
править

Возвращает длину трека в сэмплах.

Операции с переменными

править

Переменные используются для хранения строк и чисел. Они не могут хранить логические значения. Переменные отлично подходят для сохранения промежуточных результатов, которые потребуются несколько раз. Имена переменных регистронезависимы.

$get(имя)

править

Возвращает значение, которое было последним сохранено в переменной имя. Если переменная не определена, ничего не возвращается. Логическое значение, возвращаемое $get показывает, существует ли переменная с именем имя.

$put(имя,значение)

править

Сохраняет значение в переменной с именем имя и возвращает значение неизменённым.

$puts(имя,значение)

править

Сохраняет значение в переменной с именем имя и возвращает только логическое значение.

Поля и функции, предоставляемые компонентами для треков

править

В этом разделе перечисляются компоненты, которые предоставляют поля и функции, доступные в контексте любого трека.

Статистика проигрывания (playback statistics)

править

Поля и функции, специфичные для компонентов

править

В этом разделе перечисляются компоненты, предоставляющие поля и функции, доступные только в контексте самого компонента

Список альбомов (album list)

править

Официальный компонент списка альбомов поддерживает создание различных элементов дерева с использованием специальных команд.


Оригинал описания

править

Данный документ является переводом Foobar2000:Titleformat Reference.