====== Рекомендуемые стандарты тегов ====== ===== Предупреждение ===== Рекомендации, описанные в этом документе, были выработаны и согласованы группой пользователей 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~~