Это старая версия документа!
Рекомендуемые стандарты тегов
Предупреждение
Рекомендации, описанные в этом документе, были выработаны и согласованы группой пользователей foobar2000 и авторами скриптов titleformatting. Применение этих рекомендаций не обязательно для использования в foobar2000, хотя некоторые компоненты или готовые скрипты могут потребовать для своей работы различные специфические теги.
Примеры кода и версии foobar2000
Примеры кода приведены для версии Foobar2000 v0.9., потому что обновленная подстановка полей начиная с версии 0.9 не совместима со старыми версиями foobar2000.
Общая конструкция тега
Используйте легко понятое название поля в английском написании.
Префикс альбомозависимой информации должен быть «ALBUM », например. «ALBUM ARTIST», «ALBUM SUBTITLE».
Избегайте использовать в названиях символы вне английского алфавита. Для последовательных полей (не самый удачный пример: FIELD1, FIELD2, и т.д.), вводите их в такои порядке, в каком он должны читаться.
Постарайтесь избегать использование символов подчеркивания. Пробелы легче в написании, более понятны и их легче использовать в
TAGZ. Пробелы предпочтительней других символов.
Краткий обзор текущих рекомендаций
ИМЯ ПОЛЯ [формат] (компонент)
Примечание: имя поля ALBUM ARTIST без символов подчеркивания
. Тег должен существовать если и только если альбом является V.A.-альбомом (V.A. Various Artists — различные исполнители), т.е. сборником, где присутствуют разные исполнителм, и в таком случае этот тег должен быть прописан в каждом треке. Исполнители должны быть прописаны в теге ARTIST, но не в коем случае не в теге TITLE.
(узнать больше об этом стандарте)
Примечание: эти два тега используют символы подчеркивания — причиной для этого послужила своместимость с уже существующими тегом PLAY_COUNTER. После времени можно прописать любой тип данных и другую информацию. Скрипты TAGZ при извлечении строк из этого поля должны использовать $substr()
вместо $right()
.
Смотрите также
: Standardize my PLAY_DATE and PLAY_TIME fields
(узнать больше об этом стандарте)
ALBUM ARTIST
Основы
тег используется для объявления и описания альбомов/разных-EP или синглов, которые содержат разных исполнителей в «ALBUM ARTIST» (разделение пробелами, не символами подчеркивания)
тег должен существовать только если в альбоме есть разные исполнители (в сборниках, компиляциях и др.). Тег не должен быть создан в любом другом случае.
этот тег содержит общее название всех исполнителей (как например, «the foo-bar collective»), различных исполнителей или если для сборника нет чистого списка и присутствуют компиляции — просто прописывайте «Various Artists». Проще говоря, вы свободны прописывать все что угодно если речь идет об указании информации про исполнителей в альбоме.
каждый трек сборника разных исполнителей должен содержать этот тег с прописанным значением (списком) всех исполнителей или значением V.A. (Various Artists — различные исполнители)
исполнитель конкретного трека должен быть прописан в соответсвующем теге ARTIST
тег TITLE должен содержать только название трека
Причины для применения такого стандарта
такой подход решает решает все проблемы с альбомами, в которых существуют разные исполнители только с одним тегом
стандарт уже широко используется
осуществлятся сортировка и поиск
сохранение тега ARTIST специфичным позволяет искать треки в V.A.-альбомах точно также, как и обычного исполнителя (только DB-friendly)
сохранение тега TITLE специфичным позволяет сортировать и искать треки в V.A.-альбомах по заголовку (DB-friendly)
позволяет определять и отобращать V.A.-альбомы при миниальном объеме кода
предотвращает большую загрузку ресурсов и небезопасного «угадывания» в V.A.-альбомах через путь файла
стандарт прост для запоминания и для использования
не нарушает существующую систему, когда теги ARTIST и TITLE уже специфичны для каждого трека (легко перевести)
может дополнительно использоваться вместе с сортировкой по каталогу и маркировкой
может быть использован для разделенных-EP и синглов
-
Примеры кода
// проверка, является ли альбом V.A.-альбомом
$if($meta_test(album artist),$puts(album_is_va,1))
// Для сортировки в контексте альбома, заменяем %artist% - %album% на:
%album artist% - %album%
// режим singlemode без поддержки %album artist%
[%artist% - ][%album% - ][%title%]
// режим singlemode с поддержкой %album artist%
// примечание: если у вас поддерживается показ обоих режимов --- albummode и singlemode,
// то вы можете использовать код выше, оставляем на ваш вкус
[%album artist% - ][%album% - ][%track artist% - ][%title%]
// Как легко интегрировать %album artist% в режим albummode:
// в колонке albummode-column замените %artist% на:
[%album artist%]
// В колонке заголовка, замените %title% на:
[%track artist% - ][%title%]
FIRST_PLAYED и LAST_PLAYED
Основы
«FIRST_PLAYED» — тег используется для хранения информации о том, когда трек был впервые проигран
«LAST_PLAYED» — тег используется для хранения информации о том, когда трек был проигран в последний раз
теги содержат дату и время в вначале в следующем формате: «YYYY-MM-DD HH:MM:SS» (24-часовой формат)
дополнительная информация может быть добавлена в конец после вышеупомянутой информации
Причины для применения такого стандарта
-
стандарт может быть подвергнутым сортировке
стандарт легко читаемый и распознаваемый
формат может быть проверен в TAGZ
может быть включен в строки форматирования без их реформатирования (про для начинающих кодеров tagz)
choosing a new fieldname avoids confusion with the existing ambigious play_date tag
имя поля понятно, признано, легко запоминающееся и коротко для написания в коде
Примеры кода
// verify tag-format (we check the pos. of the first dash and ":")
// using $len for verification is strongly unrecommended!
$if(
$and($strcmp($strstr(%last_played%,-),5),$strcmp($strstr(%last_played%,:),14))
,$puts(last_played_is_valid,1)
)
<code php>
// disassemble the timestamp for later reformatting or calcuations
$puts(last_played_year,$substr(%last_played%,1,4))
$puts(last_played_month,$substr(%last_played%,6,7))
$puts(last_played_day,$substr(%last_played%,9,10))
$puts(last_played_hour,$substr(%last_played%,12,13))
$puts(last_played_min,$substr(%last_played%,15,16))
$puts(last_played_sec,$substr(%last_played%,18,19))
// показ только даты last_played (без реформатирования)
$left(%last_played%,10)
// показ только времени last_played (без реформатирования)
// использование $right строго не рекомендуется!
$substr(%last_played%,12,19)
Приведенные выше примеры кода могут быть использованы также и для FIRST_PLAYED (достаточно заменить last_played на first_played).
Устаревшие и осуждаемые стандарты
PLAY_DATE и PLAY_TIME
Осуждаемые теги — это теги записанные старой версией foo_playcount. Принятые в той версии форматы даты и времени DDMMYY для PLAY_DATE и HHMMSS (24-часовой) для PLAY_TIME.
Смотрите
: FIRST_PLAYED and LAST_PLAYED.
~~DISCUSSION~~