Рекомендуемые стандарты тегов
Предупреждение
Рекомендации, описанные в этом документе, были выработаны и согласованы группой пользователей foobar2000 и авторами скриптов titleformatting. Использование этих рекомендованных стандартов не обязательно для применения в foobar2000, но некоторые компоненты и скрипты для своей работы могут требовать различные специфические теги.
Примеры кода и версии foobar2000
Примеры кода в этом документе приведены для версии Foobar2000 v0.9, они не будут работать с предыдущими версиями, из-за новых подстановок полей, появившихся в версии 0.9.
Общая конструкция тега
Используйте легкое для понимания название поля в английском написании.
Префикс альбомозависимой информации должен быть «ALBUM», например: «ALBUM ARTIST», «ALBUM SUBTITLE».
Избегайте использовать в названиях символы вне английского алфавита. Для последовательных полей (не самый удачный пример: FIELD1, FIELD2, и т.д.), вводите их в такои порядке, в каком они должны читаться.
Постарайтесь избегать использования символов подчеркивания (
_
). Пробелы (
) легче в написании, более понятны и их проще использовать в
TAGZ. Пробелы
предпочтительней других символов.
Краткий обзор рекомендаций
ИМЯ ПОЛЯ [формат] (компонент)
Примечание: имя поля ALBUM ARTIST — без символов подчеркивания
.
Тег должен существовать если, и только если, альбом является V.A.-альбомом (V.A. Various Artists — различные исполнители), т.е. сборником, где присутствуют разные исполнителм, и в таком случае, этот тег должен быть прописан в каждом треке. Исполнители должны быть прописаны в теге ARTIST, но ни в коем случае не в теге TITLE.
(узнать больше об этом стандарте)
Примечание: эти два тега используют символы подчеркивания, причиной для этого послужила совместимость с уже существующим тегом PLAY_COUNTER.
После указания времени можно прописать любой тип данных и любую другую информацию. Скрипты TAGZ при извлечении строк из этого поля должны использовать $substr()
вместо $right()
.
Смотрите также
: Стандартизация поля PLAY_DATE и PLAY_TIME
ALBUM ARTIST
Главное
Тег используется для объявления и описания альбомов (разных EP, разных синглов, сборников), которые содержат разных исполнителей (разделять пробелами, не символами подчеркивания).
Тег должен существовать только если в альбоме есть разные исполнители (в сборниках, компиляциях и др.). Тег не должен быть создан в любом другом случае.
Этот тег содержит общее название всех исполнителей (как например, «the foo-bar collective»), различных исполнителей (или если для сборника нет чистого списка и присутствуют компиляции — просто прописывайте значение «Various Artists»). Проще говоря, вы свободны прописывать все что угодно, если речь идет об указании информации про исполнителей в альбоме.
Каждый трек сборника разных исполнителей должен содержать этот тег с прописанным значением (списком) всех исполнителей или значением V.A. (Various Artists — различные исполнители).
Исполнитель конкретного трека должен быть прописан в соответсвующем теге ARTIST.
Тег TITLE должен содержать только название трека.
Причины для применения такого стандарта
Такой подход решает все проблемы с альбомами, в которых существуют разные исполнители, только при помощи одного тега ALBUM ARTIST.
Cтандарт уже широко используется.
Осуществлятся сортировка и поиск.
Сохранение тега ARTIST специфичным позволяет делать поиск треков в V.A.-альбомах точно также, как и обычного исполнителя (и более гуманней по отношению к базе данных).
Сохранение тега TITLE специфичным позволяет сортировать и искать треки в V.A.-альбомах по заголовку (и более гуманней по отношению к базе данных).
Стандарт позволяет определять и отображать 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, замените %title% на:
[%track artist% - ][%title%]
FIRST_PLAYED и LAST_PLAYED
Основы
«FIRST_PLAYED» — тег используется для хранения информации о том, когда трек был впервые проигран.
«LAST_PLAYED» — тег используется для хранения информации о том, когда трек был проигран в последний раз.
Теги содержат дату и время в начале в следующем формате: «YYYY-MM-DD HH:MM:SS» (24х часовой формат)
Дополнительная информация может быть добавлена в конец после информации даты/времени
Причины для применения такого стандарта
-
По этому стандарту, возможна сортировка.
Стандарт легкочитаем и распознаваем.
Формат даты/времени может быть проверен в TAGZ
Стандарт может быть включен в строки форматирования без их реформатирования.
Выбор нового имени поля исключает конфликт с уже существующим двусмысленным тегом play_date.
Имя поля понятно, признано, легко запоминается, быстро пишется в коде.
Примеры кода
// проверка формата тега (проверяем позицию первой черточки и двоеточия)
// использование $len для проверки строго не рекомендуется!
$if(
$and($strcmp($strstr(%last_played%,-),5),$strcmp($strstr(%last_played%,:),14))
,$puts(last_played_is_valid,1)
)
// разбираем метку даты/времени для дальнейшего форматирования или расчета
$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.
~~DISCUSSION~~