Содержание
Плейлисты описываются в файле 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» всегда выбирает композицию, не звучавшую дольше всего (сортирует по дате последнего проигрывания).