Глава 4. Программирование эфира
Пред. |  | След.

## Глава 4. Программирование эфира

## Плейлисты

Плейлисты описываются в файле `playlists.yaml`, который находится в корне медиатеки (обычно называется `/var/lib/ardj/music/playlists.yaml`, но имя может быть изменено с помощью конфигурационного файла). Описываются они в таком виде:

    - name: jingles
      delay: 30

    - name: music
      weight: 1.0-100

Плейлисты обрабатываются сверху вних. Описанная конфигурация означает, что раз в 30 минут надо играть композицию с меткой "jingles", а всё остальное время — композиции с меткой "music" и весом ≥1.0.

Возможные параметры плейлистов

`name`

  Название плейлиста. По умолчанию используется в качестве метки, которую должны иметь композиции, для попадания в этот плейлист (метки можно также указать парамером `labels`).

`weight`

  Границы веса композиций, указываются в виде диапазона: min-max (включительно). Композиции с весом, выходящим за указанные пределы, из плейлиста исключаются. Если значение не указано — в плейлист попадают все композиции.

`delay`

  Задержка для плейлиста. Указывает время в минутах, на которое плейлист отключается после проигрывания композиции из него. Значение 30 означает, что композиции из этого плейлиста будут звучать не чаще раза в полчаса.

  Плейлист блокируется не только при выборе композиции непосредственно из него, но и при проигрывании вообще любой композиции, которая удовлетворяет условиям плейлиста.

`track_delay`

  Задержка для композиций. Указывает время в минутах, на которое композиция исключается из плейлиста при проигрывании. Фактически это означает, что композиция должна была быть в предыдущий раз проиграна не ранее чем указанное количество минут назад. Этот параметр используется для предотвращения повторов в специализированных коротких плейлистах, вроде десятки лучших песен.

`history`

  Количество композиций, в течение которых исполнитель не должен повторяться (по умолчанию 5). Композиции, принадлежащие указанному количеству последних звучавших исполнителей, из плейлиста исключаются. При этом следует иметь в виду, что проверка ведётся не только по текущему плейлисту, но по всей истории, то есть в указанное количество будут включены и джинглы, и всё, что звучало.

`repeat`

  Максимальное количество проигрываний для композиции. Композиции, проигранные более указанного количества раз, из плейлиста исключаются. Этот параметр может использоваться, например, для организации усиленной ротации новых песен.

`hours`

  Часы активности плейлиста. Указываются в виде списка значений или диапазонов, например:

      hours: [8, 12-20, 22]

  В такой конфигурации плейлист будет активен с 8 до 0 часов утра, с 12 дня до 8 вечера и с 10 до 11 вечера.

`days`

  Дни активности плейлиста. Указываются в виде списка значений или диапазонов, например:

      days: [1-3, 6]

  В такой конфигурации плейлист будет активен в понедельник, вторник, среду и субботу.

`labels`

  Список меток для выбора композиций. Метки с префиксом "-" исключают композицию, метки с префиксом "+" обязательны, из меток без префикса должна присутствовать хотя бы одна. Пример:

      labels: [rock, punk, +female, -russian]

  В такой конфигурации в плейлист попадут композиции с метками "rock" или "punk" с женским вокалом не на русском языке.

  При использовании этого параметра параметр `name` в качестве метки не используется.

`sticky_labels`

  Список меток, которые должны «прилипать» к плейлисту при обнаружении. Если из плейлиста выбрана композиция с однои из этих меток, она будет добавлена к значению свойства `labels` плейлиста в качестве обязательной и пробудет там до смены плейлиста.

  Пример конфигурации:

      labels: [music]
      sticky_labels: [rock, jazz, 8bit]

  В такой конфигурации если из плейлиста будет выбрана композиция с меткой «rock», то свойство `labels` примет значение «[music, +rock]» и до смены плейлиста будут звучать только композиции с этими двумя метками.

  Эта функция позволяет разбивать плейлист на случайные блоки из похожих песен, без резких перепадов (не забудьте регулярно встревающий плейлист с джинглами, иначе липкая метка залипнет до перезапуска сервера).

`program`

  Имя программы. Этим свойством отмечаются ключевые плейлисты (исключая джинглы и прочие сопутствующие) для того, чтобы отслеживать переключение между программами. При выборе композиции из плейлиста с таким свойством его значение сравнивается с предыдущим, если они отличаются — запускается внешняя программа (обычно используется для отражения состояния на сайте), отправляется сообщение в чат.

`preroll`

  Список меток, по которым подбирается подмотка для композиций из текущего плейлиста. Композиции из текущего плейлиста будут предваряться случайной композицей с одной из указанных меток. Этот параметр обычно используется для добавления анонсов, например, о том, что сейчас прозвучит подкаст.

`strategy`

  Определяет алгоритм выбора случайной композиции. Значение «fresh» включает алгоритм, не учитывающий голоса слушателей: он выбирает случайную из пяти композиций с наименьшим количеством проигрываний. Алгоритм «oldest» всегда выбирает композицию, не звучавшую дольше всего (сортирует по дате последнего проигрывания).

Пред. |  | След.
Управление доступом ко специальным командам | Начало | Ручное программирование