Инструменты пользователя

Инструменты сайта


foobar2000:encouraged_tag_standards

Рекомендуемые стандарты тегов

Предупреждение

Рекомендации, описанные в этом документе, были выработаны и согласованы группой пользователей foobar2000 и авторами скриптов titleformatting. Использование этих рекомендованных стандартов не обязательно для применения в foobar2000, но некоторые компоненты и скрипты для своей работы могут требовать различные специфические теги.

Примеры кода и версии foobar2000

Примеры кода в этом документе приведены для версии Foobar2000 v0.9, они не будут работать с предыдущими версиями, из-за новых подстановок полей, появившихся в версии 0.9.

Общая конструкция тега

  • Используйте легкое для понимания название поля в английском написании.
  • Префикс альбомозависимой информации должен быть «ALBUM», например: «ALBUM ARTIST», «ALBUM SUBTITLE».
  • Избегайте использовать в названиях символы вне английского алфавита. Для последовательных полей (не самый удачный пример: FIELD1, FIELD2, и т.д.), вводите их в такои порядке, в каком они должны читаться.
  • Постарайтесь избегать использования символов подчеркивания (_). Пробелы ( ) легче в написании, более понятны и их проще использовать в TAGZ. Пробелы предпочтительней других символов.

Краткий обзор рекомендаций

ИМЯ ПОЛЯ [формат] (компонент)

  • ALBUM ARTIST [например: Various Artists, The Foobar Collective]

Примечание: имя поля ALBUM ARTIST — без символов подчеркивания. Тег должен существовать если, и только если, альбом является V.A.-альбомом (V.A. Various Artists — различные исполнители), т.е. сборником, где присутствуют разные исполнителм, и в таком случае, этот тег должен быть прописан в каждом треке. Исполнители должны быть прописаны в теге ARTIST, но ни в коем случае не в теге TITLE.

(узнать больше об этом стандарте)

  • FIRST_PLAYED и LAST_PLAYED [2005-03-22 19:00:00…] (компонент foo_playcount)

Примечание: эти два тега используют символы подчеркивания, причиной для этого послужила совместимость с уже существующим тегом 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/синглов.
  • Стандарт имеет поддержку в подстановке полей 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х часовой формат)
  • Дополнительная информация может быть добавлена в конец после информации даты/времени

Причины для применения такого стандарта

  • 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~~

foobar2000/encouraged_tag_standards.txt · Последние изменения: 2007/02/14 09:32 (внешнее изменение)