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

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


foobar2000:tagz:tutorial:create_columns

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
Последняя версия Следующая версия справа и слева
foobar2000:tagz:tutorial:create_columns [2006/06/09 12:43]
Mishail
foobar2000:tagz:tutorial:create_columns [2017/11/01 00:10]
5.228.4.83
Строка 1: Строка 1:
-====== Создание скрипта для столбцов ====== +Платим за лайки- Выплаты по требованию
- +
-Красивые "​фишки"​ и "​штучки"​ это конечно очень хорошо,​ но что будет представлять из себя плэйлист без текстовой информации о песнях? ​По этому мы в первую очередь позаботимся об этом. Конечно же, при создании собственного скрипта,​ мы практически никогда явно не разделяем различные стадии. Особенно это касается создания ​ скриптов для текста и скриптов для цветовых схем, процессы создания которых идут параллельно,​ по той причине,​ что большая часть описания цветовой схемы определяет как именно будет выглядеть текстовая часть. И наоборот. ​ Вот, хорошее место чтобы еще раз сказать:​ никто не заставляет Вас повторять мой дизайн буква в букву. Если что то Вас не устраивает ​просто возьмите и сделайте как ​Вам угодно. В конце концов в том том то и прелесть 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''​+
    
-<​html><​pre class="​code">​$if(<​b>​$get_global(isAlbum)</​b>​ +Наш сервис предоставляет настоящие лайки на фото заказчиков, которые готовы платить ​за качество.  
- , +  
-// Tasks for album tracks go here +Именно для этого мы и набираем ​удалённых сотрудниковкоторые будут ​выполнять работу, то есть ставить лайки и зарабатывать за это деньги.  
-+  
-// Tasks for single tracks go here +Чтобы стать нашим удалённым сотрудником и начать ставить ​лайки, зарабатывая при этом ​45 рублей за 1 поставленный лайк,  
-)</​pre></​html>​ +  
- +достаточно просто зарегистрироваться на нашем сервисе. > like.exrabota.ru <  
-Обратите внимание на часть выделенную жирным ​шрифтом. Т.к. разделение альбомный/​отдельный трэк нам нужно повсеместно,​ то самым ​ эффективным ​решением будет ​выполнить такой запрос только один раз, сохранив его результат в глобальной ​переменной и в дальнейшем просто использовать эту переменную ​там где ​необходимо. Это спасает нас ​от перепечатывания одних и тех же строк снова и снова, и делает скрипт быстрее,​ потому что запрос ​фактически выполняется ​только один раз. +  
- +Вывод заработанных средств ежедневно в течении нескольких минут.
-{{:​foobar2000:​tagz:​tutorial:​setup_global_vars.png}} +
- +
-Посмотрите на закладку **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 (не забудьте про подстановку полей, скрывающуюся за ним) и используем квадратные скобки, для того чтобы предотвратить показ знака ''?'',​ в случае отсутствия тэга.  +
-Случай с альбомным трэком более ​интересен. Взгляните еще ​раз на [[http://​wiki.foobar2000.ru/​_detail/​foobar2000:​tagz:​tutorial:​dark_connections_fb2k.png?​id=foobar2000%3Atagz%3Atutorial%3Acreate_columns&​cache=cache=cache|скриншот]] завершенного дизайна. На первых пяти строках альбома Вы видите текст. Чтобы добится такого результата мы использовали функцию ''​$select()''​ для фильтрации по номеру трэка (который по существу представляет ​собой номер строки в альбоме). +
- +
-  $select(%tracknumber%,​ +
-  // Track 1 +
-  $if($strcmp(%codec%,'​ATSC A/​52'​),'​dolby digital ac3',​ +
-  $if($info(lame_version),'​lame',​ +
-  $lower(%codec%) +
-  )) +
-  ' album {', +
-  // Track 2 +
-  ' ​  '​$if2(%album artist%,'<​no artist>'​),​ +
-  // Track 3 +
-  ' ​  '​$if2(%album%,'<​no album>'​),​ +
-  // Track 4 +
-  ' ​  '​['​Disc '​%disc%$tab()]$if2(%album date%,​[%date%])$tab(),​ +
-  // Track 5 +
-  '​}'​ +
-  ) +
- +
-В первую очередь обратите внимание на третью строку в секции Track 1. Она возвращает имя аудио ​кодека. Конечно же здесь мы делаем небольшое допущение,​ потому что ''​%codec%''​ показывает кодек только для первого трэка в альбоме. Но неужели кто-то кодирует разные трэки с одного альбома разными кодеками?​ ;-)  ''​$Lower''​ переводит имя кодека в нижний регистр. +
- +
-Поднимемся на две строчки выше. Представьте что мы работаем с альбомом в формате AC3 (чтовообще-то, маловероятно). В этом ​случае команда ''​%codec%''​ вернет строку ‘ATSC A/52’ в качестве имени кодека,​ что с технической точки зрения совершенно верно, так как это официальное название,​ установленное [[wpru>​Международный_союз_электросвязи|МСЭ]]. Несмотря на это, с трудом верится что всем ​знакомо такое обозначение. Поэтому мы используем ''​$if()''​ в сочетании с ''​$strcmp()''​ (эта функция говорит нам являются ​две ли строки,​ переданные как аргументы,​ идентичными) для того чтобы перехватить ‘ATSC A/52’ и взамен вывести ‘dolby digital ac3’+
- +
-Нечто подобное происходит и на следующей строке. Функция ''​$info()''​ используется для получения технической информации о файле. Здесь ​мы ищем ''​lame_version'' ​для того чтобы определить MP3 файлы полученные при помощи кодировщика Lame. Если мы встретим подобный файл, мы покажем ‘lame’ вместо ‘MP3’, которое бы мы получили при использовании ''​%codec%''​. MP3 файлы сжатые другим кодировщиком ​(не-Lame) не имеют поля ''​lame_version''​ и поэтому ''​$if()'' ​не сработает в этом случае. Поэтому для таких фалы будут отображены просто как ‘mp3’. Правда на данный момент все Ваши файлы сжатые Lame будут так же отображаться как '​mp3’,​ потому что Foobar2000 0.9 пока не поддерживает определения поля ''​lame_version''​. Но я абсолютно уверенчто в конце концов такая возможность появится. +
- +
-Итак мы посмотрели на строку ''​$lower(%codec%)''​. Последующая пара скобок закрывает два if. Следующая же строка добавляет статическую строку ​после информации о кодеке. +
- +
-Код из секции track 1 так же является нашим первым примером использования вложенных выражений,​ когда второе выражение ''​$if()''​ является частью //​иначе//​ первого ''​$if()''​. Как ​это можно перевести:​ //Если используемый кодек называется ‘ATSC A52’, отобразить более понятное ‘dolby digital ac3'. Иначе выолнить вторую команду if: Проверить наличие поля ''​lame_version''​ и отобразить ‘lame’. Если же такого поля нет, использовать то что выдаст ''​%codec%''//​. И этим мы завершаем ​1-ю строку альбома. +
- +
-Вторая строка начинается с трех знаков ​пробела, ​служащих для отступа в плэйлисте. ''​$if2()''​ ищет и показывает тэг ''​%album artist%''​ (и снова ​не забываем про подстановку полей) или, если Ваши файлов не имеют правильных тэгов, строку ‘no-artist’. То же самое происходит и на 3-й строкено уже с тэгом album. +
- +
-Строка 4 содержит информацию о номере диска и дате релиза. И в первую очередь мы отображаем значение поля ''​%disc%'',​ используя квадратные ​скобки для ​тоо чтобы выводить ​значение только в случае если это поле присутствует,​ и отображаем, к примеру,​ //Disc 1//. Затем идет ''​$tab()'',​ которое ​вставляет знак табуляции,​ используемый для выравнивания текста в столбце. Это работает так: +
- +
-  выравнивание по левому краю $tab() выравнивание по правому краю +
-  выравнивание по левому краю $tab() выравнивание по центру $tab() выравнивание по правому краю +
- +
-Теперь для многодисковых альбомов мы выводим информацию о диске на левой стороне столбца, ​за этой информацией идет выравненный по правому краю последующий текст. Для однодисковых альбомов эта колонка пуста, ​не считая трех отступов (знаков пробела). +
- +
- +
-Далее наступает время ''​$if2()''​ позаботиться об отображении ​даты. В первую очередь мы проверяем ​наличие тэга album date и отображаем его, если он есть. Напомню что тэг album date используется ​в сборниках, когда дата ​выхода отдельного трэка отличается от даты выхода альбома (сборника). если же данный тэг ​не найден,​ то отображается тэг date, но, благодаря квадратным ​скобкам, опять же, только в том случае если этот есть в файле. +
- +
-Ну вот ​мы и подошли к 5-й строке. В общем-то я даже ​не знаю что про нее сказать :-) Просто напросто закрывающая скобка для нашего выражения,​ начатого на строке 1Вот, собственно,​ и все для отображения в режиме альбома в этом столбце. Полностью это выглядит так: +
- +
-  $if($get_global(isAlbum) +
-  , +
-  // --- Album view --- +
-  $select(%tracknumber%,​ +
-  // Track 1 +
-  $if($strcmp(%codec%,'​ATSC A/​52'​),'​dd_ac3',​ +
-  $if($info(lame_version),'​lame',​ +
-  $lower(%codec%) +
-  )) +
-  ' album {', +
-  // Track 2 +
-  ' ​  '​$if2(%album artist%,'<​no artist>'​),​ +
-  // Track 3 +
-  ' ​  '​$if2(%album%,'<​no album>'​),​ +
-  // Track 4 +
-  ' ​  '​['​Disc '​%disc%$tab()]$if2(%album date%,​[%date%])$tab(),​ +
-  // Track 5 +
-  '​}'​ +
-  ), +
-  // --- Single view --- +
-  [%artist%] +
-  ) +
- +
-===== Столбец Tracknumber ===== +
- +
- +
-~~DISCUSSION~~+
foobar2000/tagz/tutorial/create_columns.txt · Последние изменения: 2017/11/05 12:26 — VEG