Интеграция с сиcтемой Digispot II¶
- Table of contents
- Интеграция с сиcтемой Digispot II
Расписания(Плейлисты)¶
Система Дигиспот оперирует суточными расписаниями вещания. Расписание одних суток действует всегда с 00:00 до 23:59:59
Расписание состоит из блоков, блоки - из элементов. Обычный элемент блока - ссылка на звуковой файл с параметрами воспроизведения - фонограмма.
Фонограмма не может находится вне блока, только в блоке.
У блока указано время начала вещания. Блоки в расписании следуют по времени начала, от меньшего к большему.
На одно время начала должен существовать только один блок.
Фонограммы в блоке следуют в порядке воспроизведения.
Детальное описание структуры расписания можно прочитать в описании.
Самый распространенный способ формирования расписания извне - импорт из файла.
Импорт из файла - это явная, выполняемая пользователем операция.
Джин "без помощи" умеет читать текстовые файлы с разделителем (CSV).
Формат импортируемого файла - разделитель, порядок и значение полей и пр, настраивается в специальном окне ПО - Форматы импорта.
Если формат внешнего файла не CSV, например, это таблица Эксел, то при импорте из данного файла необходимо использование препроцессора - примитивного приложения, преобразующего данные из данного формата в CSV, который будет импортирован программой.
Препроцессор указывается в форматах импорта и автоматически запускается в процессе импорта. При запуске ему передаются два параметра командной строки
- Имя исходного файла (Эксел)
- Имя файла, в котором препроцессор должен сохранить результат своей работы (CSV)
Конкретное содержимое CSV файла определяется в зависимости от нюансов решаемой задачи.
Подробнее о импорте из файла можно прочитать в разделе 4.4.4. Импорт расписания из текстового файла в описании.
Существуют 3 основные способа описания элемента блока при импорте
- Указанием ссылки на звуковой файл
- Указанием элемента МБД
- Указанием его идентификатора в МБД (DB ID)
- Указанием его внешнего номера (ID NUMBER)
- Поиск элемента в Папках (это модуль Дигиспот) по имени или ID_NUMBER. Это устаревший вариант, используемый в очень простых случаях.
Информация о вышедших в эфир элементах¶
О том, какие элементы расписания фактически вышли в эфир можно узнать несколькими способами
Текстовые логи¶
В процессе воспроизведения DJin ведет текстовые логи воспроизведения. Это файлы формата CSV, в которые вносится запись о каждом воспроизведенном элементе.
Формат файла настраивается, по умолчанию пишется вся доступная информация. Запись в файл вносится в момент окончания звучания очередного элемента.
На каждые сутки создается свой файл, каталог хранения файлов также указывается в настройках.
Внешнее приложение может периодически считывать информацию из данного файла, фиксируя его изменения по изменению даты модификации и размера.
Текстовый лог ведется каждой эфирной станцией самостоятельно в свой собственный файл.
Информация о всех вещаемых данной станцией расписаниях помещается в один файл.
SQL запрос¶
В одну из таблиц МБД вносится информация о выходе в эфир элементов расписания, которые были добавлены в расписание из МБД. Элементы, добавленные в расписание в виде ссылок на звуковые файлы и не имеющие DB ID, в эту таблицу не вносятся.
Получить данные можно следующим SQL запросом:
SELECT TOP 1000 * FROM PH_PLAY_HISTORY
В таблице присутствуют колонки:
- sch_id - идентификатор папки расписаний, при вещании которого был воспроизведен данный элемент
- PlayTime - время начала его воспроизведения, с указанием даты и времени
- ph_id - DB ID воспроизведенного элемента, являющегося индексом в таблице фонограмм.
XML файл¶
В процессе работы X-плеера DJin может формировать XML файл, в котором сохраняется информация о текущем состоянии очереди воспроизведения плеера (2-3 элемента).
Файл перезаписывается каждый раз, когда состояние очереди меняется - при начале и окончании воспроизведения, при появлении в очереди нового файла и пр.
В настройках DJin можно указать приложение, вызываемое при каждом изменении данного файла. Данное приложение может обработать содержимое данного файла и получить информацию о времени начал и окончания воспроизведения элементов.
Формат файла фиксированный, динамически расширить сохраняемое описание нельзя.
Пример файла:[raw-cur_playing.xml].
Обмен информацией с МБД¶
SQL-запросы
Для получения информации об изменениях, произошедших в МБД с некоторого момента, существует специальная хранимая процедура TEST_NEW_2.
Данная процедура формирует несколько рекордсетов, описывающих изменения, произошедшие в БД.
Вызов процедуры *TEST_NEW_2 *производится с единственным параметром, номером изменения, до которого в прошлый раз программа обработала изменения. Процедура сформирует данные о произошедших изменениях и вернет номер последнего обработанного изменения. Программа ограничивает количество получаемых за раз изменений, для избежания излишней загрузки сервера, поэтому данную процедуру необходимо выполнять циклически, передавая в качестве аргумента последнее возвращенное значение. Если процедура вернет только один рекордсет и значение счетчика меньшее или раное переданному - это означает отсутствие изменений.
Процедура рассчитана на периодический вызов, с таймаутами между вызовами (на практике 15-30-60 сек), для избежания излишней загрузки сервера.
Процедура возвращает несколько рекордсетов, в каждом из который первой колонкой является RECID, определяющий смысл записей.
* RECID=2
Информация об изменениях в аттрибутах - создание, удаление и изменение категорий, и других аттрибутов. Перечислены изменившиеся атрибуты. Новые и измененные атрибуты не отличаются. У удаленных атрибутов поле Deleted=1.
Данная запись появляется как при изменении полей атрибута, так и при появлении/изменении элементов БД, относящихся к данным значениям атрибутов. Например, при добавлении эл-та в категорию.
Основные колонки:
* ID - уникальный идентификатор значения атрибута
* Name - имя
* attr_id - тип атрибута (id в таблице attribs, указывающий о каком атрибуте речь - категория, исполнитель и пр.)
* type - тип материала (1…5: реклама, джинглы, музыка, передачи, новости)
* Deleted. Признак удаления - Deleted = 1
* RECID=3
Информация об изменившихся элементах БД. У новых элементов ModifyDate=!AddDate, у изменившихся эти поля не равны, у удаленных Deleted=1.
При наличии связей данного элемента с атрибутами записи для одного и то же ID дублируются с указанием всех значений атрибутов, относящихся к данному элементу (см. поля ATTRIB_VALS_xxx).
Основные колонки:
* ID - уникальный ИД элемента МБД. Не меняется.
* Name - название элемента
* Duration - планируемая длительность в миллисекундах, 0 - не установлена. Используется только если SmplSize = 0 и TextSizeMs=0
* Freq - частота дискретизации, Гц
* FileName - ссылка на файл
* SmplSize - общая длина звукового файла FileName в семплах с частотой Freq
* Ph_Start - пропускаемая часть в начале файла, в семплах с частотой Freq, 0 - нет
* Ph_Stop - пропускаемая часть в конце файла, в семплах с частотой Freq, 0 - нет
* PhonoType - тип элемента. 4 - фонограмма, 14 - сюжет (текстовый элемент).
* для звукового элемента (!PhonoType = 4)
* Длительность звучания элемента от начала до конца, в секундах: -Ph_Start- Ph_stop)/Freq
* Длительность, добавляемая к длительности последовательно звучащих эл-тов расписания, с учетом наложения на соседей, Runtime, -Ph_Start- ph_stop - StartThis - StartNext)/freq, она может оказаться отрицательной, в этой ситуации ограничивается 0.
* для текстового (!PhonoType = 14)
* TextSizeMs - Длительность чтения текста, ms
* информация о связанных значениях атрибута. При наличии нескольких значений записи в данном рекордсете будут дублироваться, за исключением данных полей.
* ATTRIBS_ID - о каком атрибуте речь (id в таблице attribs)
* ATTRIB_VALS_ID - ID одного из значений атрибута, связанного с данным элементом
* ATTRIB_VALS_NAME - тоже, только указывается имя значения атрибута
-
RECID=5
Информация о счетчике изменений, единственная безымянная колонка, кроме RECID, содержит номер изменения, которое необходимо передать в процедуру при следующем вызове.
Для первого обращения номер изменения можно получить как максимальный ID из таблицы MODIFY_DATES.
Приложение DB_Import¶
Это приложение, предназначенное для автоматического внесения информации в МБД.
Программа умеет считывать информацию из каталогов файловой системы и добавлять в МБД новые или обновлять в МБД существующие элементы.
Программа опирается на файлы формата CSV, формат которых настраивается.Типовой способ использования: внешняя система формирует данные файлы в указанном каталоге, а DB_Import считывает их и вносит информацию в МБД.