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

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


foobar2000:tagz:tutorial:create_columns

Это старая версия документа!


Создание скрипта для столбцов

Красивые «фишки» и «штучки» это конечно очень хорошо, но что будет представлять из себя плэйлист без текстовой информации о песнях? По этому мы в первую очередь позаботимся об этом. Конечно же, при создании собственного скрипта, мы практически никогда явно не разделяем различные стадии. Особенно это касается создания скриптов для текста и скриптов для цветовых схем, процессы создания которых идут параллельно, по той причине, что большая часть описания цветовой схемы определяет как именно будет выглядеть текстовая часть. И наоборот. Вот, хорошее место чтобы еще раз сказать: никто не заставляет Вас повторять мой дизайн буква в букву. Если что то Вас не устраивает - просто возьмите и сделайте как Вам угодно. В конце концов в том том то и прелесть Fooobar2000: у каждого есть свой собственный выбор, неограниченный конфигурацией из нескольких пресетов.

Ну что-то я совсем заболтался ;-) Итак, идите в Foobar2000 → Preferences, в открывшемся дереве выберите Display → Columns UI → Playlist View и перейдите на закладку Columns. С левой стороны будет список всех имеющихся столбцов. Мы собираемся начать с нуля, поэтому смело нажимайте кнопку Delete для того чтобы их все удалить.

Столбец Artist/Album

Для создания новых столбцов имеются 2 кнопки: New создает новый столбец в конце списка, т.е. этот столбец будет крайним справа в плэйлисте. А кнопка Insert вставляет новый столбец перед тем столбцом, который выбран в данный момент.

Наш первый столбец содержит информацию о исполнителе и альбоме. Нажмите New для того чтобы создать столбец, которому автоматически присвоится имя New column. Замените это имя в поле Display name значением Artist/Album (или любым другим, которое по Вашему лучше подходит). Установите значение width (ширина столбца) равное 250 и Aligment равное Left (выравнивание по левому краю). Самым важным является большое поле ввода внизу. Если вкладка Display еще не активна, то щелкните на ней мышкой и приготовитесь вводить код.

В большинстве столбцов мы должны делать различия между композициями принадлежащими полным альбомам (с этого момента я буду называть их 'альбомными трэками') и отдельными композициями (отдельными трэками). Задача скрипта будет такая: Если работаем с альбомным трэком, то делаем то-то. Если же работаем с отдельным трэком, делаем другое. Конечно же для этого лучше всего подойдет конструкция if

<code>$if(<b>$get_global(isAlbum)</b><br> ,<br> // Tasks for album tracks go here<br> ,<br> // Tasks for single tracks go here<br> )</code>

Обратите внимание на часть выделенную жирным шрифтом. Т.к. разделение альбомный/отдельный трэк нам нужно повсеместно, то самым эффективным решением будет выполнить такой запрос только один раз, сохранив его результат в глобальной переменной и в дальнейшем просто использовать эту переменную там где необходимо. Это спасает нас от перепечатывания одних и тех же строк снова и снова, и делает скрипт быстрее, потому что запрос фактически выполняется только один раз.

Посмотрите на закладку General , поставьте галочку Use global variables for display (использовать глобальные переменные для отображения) и активируйте закладку Variables внизу. Сюда мы введем код для проверки альбома.

$if($and(%tracknumber%,%album tracks%,%album%),
$set_global(isAlbum,1)
)

В первой строке используется функция $and() для того чтобы проверить наличие тэгов tracknumber, album tracks и album. Это выражение будет истинным только в случае когда в файле содержатся все три тэга. Говоря простыми словами, мы предполагаем что композиция является альбомным трэком если в ней присутствуют все эти тэги. В противном случае она рассматривается как отдельный трэк.

Во второй строке $set_global() создает переменную с именем isAlbum и присваивает ей значение 1. Таким образом, если все три тэга имеются, то переменная isAlbum будет существовать. В противном случае этой переменной не будет.

Все что определено на закладке Global / Variables при помощи $set_global() может быть получено в любом месте кода при помощи $get_global(). И это именно то, что мы делаем в первом скрипте. Давайте вернемся к нему и вставим код для отдельных трэков

$if($get_global(isAlbum)
,
// Tasks for album tracks go here
,
// Tasks for single tracks go here
[%artist%]
)

Очень легко и очень скучно, не правда ли? Мы просто ищем тэг artist (не забудьте про подстановку полей, скрывающуюся за ним) и используем квадратные скобки, для того чтобы предотвратить показ знака ?, в случае отсутствия тэга. Случай с альбомным трэком более интересен. Взгляните еще раз на скриншот завершенного дизайна.

~~DISCUSSION~~

foobar2000/tagz/tutorial/create_columns.1148043400.txt.gz · Последние изменения: 2006/05/19 16:02 (внешнее изменение)