====== Рекомендуемые стандарты тегов ======
===== Предупреждение =====
Рекомендации, описанные в этом документе, были выработаны и согласованы группой пользователей foobar2000 и авторами скриптов titleformatting. Использование этих рекомендованных стандартов не обязательно для применения в foobar2000, но некоторые компоненты и скрипты для своей работы могут требовать различные специфические теги.
===== Примеры кода и версии foobar2000 =====
Примеры кода в этом документе приведены для версии Foobar2000 v0.9, они не будут работать с предыдущими версиями, из-за новых [[foobar2000:tagz:tutorial:tagz_intro#podstanovki_polej|подстановок полей]], появившихся в версии 0.9.
===== Общая конструкция тега =====
* Используйте легкое для понимания название поля в английском написании.
* Префикс альбомозависимой информации должен быть "ALBUM", например: "ALBUM ARTIST", "ALBUM SUBTITLE".
* Избегайте использовать в названиях символы вне английского алфавита. Для последовательных полей (не самый удачный пример: FIELD1, FIELD2, и т.д.), вводите их в такои порядке, в каком они должны читаться.
* Постарайтесь избегать использования символов подчеркивания (''_''). Пробелы ('' '') легче в написании, более понятны и их проще использовать в [[foobar2000:tagz|TAGZ]]. Пробелы //предпочтительней// других символов.
===== Краткий обзор рекомендаций =====
ИМЯ ПОЛЯ [формат] (компонент)
* ALBUM ARTIST [например: Various Artists, The Foobar Collective]
//Примечание//: имя поля ALBUM ARTIST --- без ''символов подчеркивания''.
Тег должен существовать если, и **только** если, альбом является V.A.-альбомом (V.A. Various Artists --- различные исполнители), т.е. сборником, где присутствуют разные исполнителм, и в таком случае, этот тег должен быть прописан в каждом треке. Исполнители должны быть прописаны в теге ARTIST, но ни в коем случае не в теге TITLE.
[[Encouraged_Tag_Standards#ALBUM_ARTIST|(узнать больше об этом стандарте)]]
* FIRST_PLAYED и LAST_PLAYED [2005-03-22 19:00:00...] (компонент ''foo_playcount'')
//Примечание//: эти два тега **используют символы подчеркивания**, причиной для этого послужила совместимость с уже существующим тегом PLAY_COUNTER.
После указания времени можно прописать любой тип данных и любую другую информацию. Скрипты TAGZ при извлечении строк из этого поля должны использовать ''$substr()'' вместо ''$right()''.
''Смотрите также'': [[foobar2000:секреты_и_трюки|Стандартизация поля 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/синглов.
* Стандарт имеет поддержку в [[foobar2000:tagz:tutorial:tagz_intro#podstanovki_polej|подстановке полей]] foobar2000 0.9.
=== Примеры кода ===
// проверка, является ли альбом 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х часовой формат)
* Дополнительная информация может быть добавлена в конец после информации даты/времени
=== Причины для применения такого стандарта ===
* [[http://www.hydrogenaudio.org/musepack/klemm/www.personal.uni-jena.de/~pfk/mpp/sv8/time.html|APE-формат даты и времени]] (взят из ISO) является интернациональным.
* По этому стандарту, возможна сортировка.
* Стандарт легкочитаем и распознаваем.
* Формат даты/времени может быть проверен в 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~~