Передача метаданных из XML в Sound4 через Basic RDS¶
При отсутствии дополнительной опции Full RDS для процессора, имеется вариант передачи метаданных из XML-файла, создаваемого эфирным Djin через URL-запрос напрямую в процессор. Для этого необходимо выполнить следующие настройки:
1. С помощью функции "Что играет в плеере" необходимо настроить запись метаданных в XML-файл. Этот файл будет обновляться при запуске воспроизведения каждого следующего элемента Djin-ом. Для этого в эфирном Djin необходимо зайти в меню Сервис - Настройки - вкладка Доп. - раздел XML и в пункте Производить запись в XML файл выбрать Да. В пункте Имя XML файла необходимо указать путь, куда будет сохраняться файл. Это может быть как локальный, так и сетевой каталог с общим доступом.
2. С помощью специального парсера XML (d2cptsvc.exe прикреплен к тикету), необходимо подобрать данные из файла. Парсер будет выдавать GET-запрос и отправлять его в процессор. Строка запроса выглядит следующим образом: http://192.168.2.2:8080/?artist=%text3%, где указан IP-адрес процессора, порт и указана отдача переменной artist. Эта переменная является полем проброса метаданных, подготовленных парсером, в RDS процессора, и ее значение выбрано согласно внутреннему скрипту S4. Под катом кратко описана настройка приложенного к тикету XML-парсера.
Структура¶
- Исполняемый файл d2cptsvc.exe
- Конфигурационный файл d2cptsvc.ini (лежит рядом, при отсутствии создается с параметрами по-умолчанию)
- Таблица транслитерации translit.ini (лежит рядом, автоматически не создается)
- Файл лога d2cptsvc.log (создается автоматически)
- Файлы шаблонов для текстовых файлов (лежат в произвольных местах, пути задаются в конфигурации)
Настройка¶
Вся настройка производится в конфигурационном файле d2cptsvc.ini
Данный файл можно редактировать и в ходе работы программы, он будет автоматически перечитан. Единственный параметр, который требует задания в самом начале - название сервиса.
-
Название сервиса задается в секции Service, по умолчанию это - d2cptsvc
- В секции Xml задается путь к файлу cur_playing.xml, который пишется Джинном, при необходимости можно задать имя плеера (нужно при использовании конфигураций на базе АМПВ)
- Секция Icecast определяет куда и какие данные будут выгружаться. В поле Url задается полный линк, через который на cast-сервере обновляются данные. Именно здесь мы задаем сроку запроса в процессор (http://192.168.2.2:8080/?artist=%text3%). При этом выражения типа
%имя_параметра%
будут автоматически заменяться на основе считанных параметров (об этом далее).
- Секция Text определяет дополнительный текстовый файл для выгрузки данных. В параметре Encoding указывается выходная кодировка файла (предполагается использование UTF-8 или Win-1251, но можно указать и номер кодовой страницы), в параметре Template можно определить путь к шаблону (в кодировке UTF-8), на основе которого будет создаваться файл. Если путь к шаблону не указан, используется
%text%
.
- Секция Parameters определяет базовые переменные, которые будут использоваться и в том случае, если не удастся считать данные из cur_playing.xml. Названия параметров произвольны (можно использовать только символы латиницы), регистр не учитывается.
- Секции Parameters.Music, .News, .Program, .Commercial, .Unknown, .Stopped, .Retransmission задают параметры для разных режимов плеера, а именно: воспроизведение музыки, новостей, программы, рекламы, элемента без типа, при остановленном плеере, при ретрансляции. При указании значения параметра можно использовать подстановки вида
%имя_параметра%
Параметры, считываемые из файла cur_playing.xml:
- schedule - название расписания
- title - название элемента (в самом xml это - NAME)
- artist - исполнитель
- author - автор
- album - название альбома
- duration - хронометраж
В параметрах можно задавать дополнительные модификаторы, для этого используется запись %имя_параметра(modificator1, modificatior2, modificator3)%
. При указании нескольких модификаторов, они указываются через запятую. Поддерживаются следующие:
- upper - все к верхнему регистру
- lower - все к нижнему регистру
- translit - использовать транслит
Транслит выполняется на основе таблицы, описанной в файле translit.ini
Пример структуры конфигурационного файла
d2cptsvc.ini
[Service] -- название сервиса
Name=d2cptsvc
[Log] -- сколько дней хранить информацию
Days=15
[Xml] -- путь к файлу cur_playing.xml
Source=\\srvnsb08\RDS\DACHA\cur_playing.xml
[Icecast.1] -- адрес cast-сервера со строкой запроса в процессор
Url=http://172.22.1.58:8080/?artist=%text%
[Parameters] -- то, что будет отображаться, если из файла cur_playing.xml не удастся считать информацию. В данном случае это текст RADIO DACHA 106.7
Mode=updinfo
Text=RADIO DACHA 106.7
[Parameters.Music] -- текст, который будет отображаться при воспроизведении элементов типа "Музыка". Модификатор upper означает что текст будет состоять из заглавных букв, а translit - что он будет записан транслитом.
Text=%artist(upper,translit)% - %title(upper,translit)%
[Parameters.News] -- текст, который будет отображаться при воспроизведении элементов типа "Новости"
Text=%artist(upper,translit)% - %title(upper,translit)%
[Parameters.Program] -- текст, который будет отображаться при воспроизведении элементов типа "Программа"
Text=%artist(upper,translit)%
[Parameters.Commercial] -- текст, который будет отображаться при воспроизведении элементов типа "Реклама"
Text=REKLAMA 362-07-67
[Parameters.Unknown] -- текст, который будет отображаться при воспроизведении элементов без типа
Text=RADIO DACHA
[Parameters.Stopped] -- текст, который будет отображаться при остановленном плеере
Text=RADIO DACHA
[Parameters.Retransmission] -- текст, который будет отображаться при ретрансляции
Text=RADIO DACHA
Принцип работы¶
- Первоначально нужно задать необходимые параметры, указать название сервиса, если он должен отличаться от исходного
- Далее исполняемый файл запускается от имени администратора, что позволяет управлять службами. Кроме того, в системных логах создается категория d2cptsvc, куда параллельно будет попадать отладочная информация
- Для установки сервиса требуется нажать на кнопку Install, после чего Start для запуска. При необходимости, параметры сервиса можно настроить через стандартную оснастку системы, в списке сервис числится как Digispot II Curplay Transmit Service
- При каждом изменении конфигурационного файла или файла cur_playing.xml, а также каждую минуту, будет производится перечитывание всех параметров и отсылка данных получателям.
- Изначально в словарь попадают данные из секции Parameters
- Затем считывается файла cur_playing.xml и из него забираются описанные выше данные
- На основании режима, в котором находится плеер, используется одна из расширенных секций с параметрами Parameters.режим
- В конце получается словарь параметров, по соглашению, выходным параметром считается параметр с именем text, но это не мешает в url cast-сервиса использовать и параметры artist или title, если поддерживается раздельная передача названия трека и исполнителя.
- В ходе работы пишется лог в текстовый файл, а так же в системный лог (только ошибки и предупреждения).
- При работе с кириллическими метаданными, необходимо убедиться, что транслитерация включена, иначе данные могут не передаваться.
3. Настроить конфигурацию процессора в SOUND4 Remote control. Для этого необходимо зайти в меню Setup, и открыть пункт Basic RDS. Здесь выполняются базовые настройки RDS, аналогичные представленным на скриншотах ниже. Обязательно включить пункт Use Radio Text (RT)
Обязательно включить пункт RT Use Dynamic и задать поле для данных (artist) в Dynamic RT
В разделах Dynamic RT и Metadata необходимо произвести следующие настройки:
а) активировать динамический RT кнопкой RT Use Dynamic - Yes;
б) выбрать режим данных в пункте "RT Dynamic Labels Source Mode" - User (то есть данные в прибор отдает пользователь, а не наоборот);
в) ввести переменную Dynamic RT - {artist} в фигурных скобках;
г) Metadata Source Kind - тип источника метаданных - установить TCP Server;
д) TCP Bind IP можно оставить пустым;
е) Metadata Source Port - 8080 - порт, по которому процессор принимает GET-запросы от парсера (в настройках парсера выше указывается именно этот порт);
ж) Metadata Parsers Script - в данном случае необходимо выбрать скрипт Http request. В Sound4 имеется набор готовых скриптов, которые позволяют извлечь метаданные от различных источников. В скрипте Http request, к примеру, значится требуемая нам переменная artist, которая, в данном случае, приспособлена под все необходимые данные сразу. Скрипты написаны на языке LUA, и при необходимости их можно корректировать под любое ПО, которое сможет прочитать XML-файл и передать его данные в процессор. Можно также использовать и переменную Title (она предусмотрена скриптом в том числе). Для этого в пункте "в" маска Dynamic RT записывается как {artist} - {title}, однако это может усложнить обработку данных, когда в эфире не песня, а например "новости", которые не требуют тире, и не содержат Артиста.
Чтобы проверить правильность настроек, необходимо открыть в браузере ссылку GET-запроса. Должен быть виден ответ "ОК" от S4 - это значит что веб-сервер успешно принял и понял запрос. Спустя несколько секунд появится информация в поле RT и соответственно в эфире в строчке Radiotext.
Примечание: при передаче данных через Basic RDS не ставилась задача передавать данные в поле PS (program service). По стандарту оно должно быть статичным и отображать только краткое название станции. Для тега играющей песни предназначено именно поле RT (radiotext), где в нашем распоряжении целых 64 символа, что гораздо удобнее, чем "карусель" из 8-символьных фрагментов.