Тема: liquidsoap получение трека из скрипта php

Доброе время суток.
Версия ликвисупа 0-9-Х

Пытаюсь отдать плейлист из скрипта. Если указываю один трек, суп не срабатывает, если в плейлисте три трека всё работает.
Подскажите что делаю не так.

Цель: отдавать треки из скрипта, чтобы реализовать на сайте полноценный список того, что играет сейчас и играло до того в течении суток-недели-месяца, а так же сделать рейтинг треков. Сама серверная часть php - не проблема.
Загвоздка именно в отдаче файлов ликвисупу.
Сейчас работает сложная схема на скрипте самого супа, с несколькими плейлистами, джинглами, рекламой и прочей ерундой, но не могу сделать полноценную работу слушатель-трек-рейтинг-заказ трека в эфир, поэтому было решено перейти на другую схему, но хоть убей не могу разобраться как ликвисупу отдавать треки по одному из php

сейчас для теста запущена такая конфигурация.

default = single("/mu/test.mp3")
day=playlist(reload=5,"****//neformatnoe.ru/*******/php/testplaylist.php")
night=playlist(reload=5,"****//neformatnoe.ru/*****/php/testplaylist.php")
clock   = single("/mu/test.mp3")

radio = fallback([ request.queue(id="request"),
                    switch([({ 6h-22h }, day),
                            ({ 22h-6h }, night)]),
                    default])


# And the clock jingle
radio = add([radio, switch([({59m56s},clock)])])

# Add the ability to relay live shows
full =
  fallback(track_sensitive=false,
           [input.http("****://localhost:8777/online"),
            radio])

# Output the full stream in OGG and MP3
output.icecast.lame(
  host="localhost",port=8777,password="*******",
  mount="live",url="www.****.ru",description="Neformatnoe Radio",full)


Если скрипт отдаёт один трек, то суп играет только тестовый сигнал непрерывно
Если скрипт отдаёт три трека и больше, то всё идёт хорошо, поток не прерывается, скрипт отдаёт рандомные треки, но так я не могу отслеживать время старта трека и правильно подсовывать джинглы и рекламу

Т.е. суть - кормить супу по одному заданию за раз. Для подстраховки (ну вдруг мало ли мускул упал,апач лёг, ещё какая жопа) если скрипт не отдал ни одного трека следующий брать из другого плейлиста, потом опять вернуться к скрипту

Поможите люди добрые))) Уже всю голову сломал. Гугл-переводчик и сайт ликвисупа вводят в ступор и путают ещё больше))) Гугл-поиск по данной проблеме ничего не выдал.

2

Re: liquidsoap получение трека из скрипта php

Не знаю где Вы искали, вот по одному треку Sources using requests.

3

Re: liquidsoap получение трека из скрипта php

gyurgin_ пишет:

Не знаю где Вы искали, вот по одному треку Sources using requests.

Вы видимо невнимательно читали. Языка я не знаю, а с гуглотранслейтом на их сайте я разобраться не смог - он ещё больше путает.

def my_request_function() = 
  # Get the first line of my external process
  result =
    list.hd(
      get_process_lines("my_script my_params"))
  # Create and return a request using this result
  request.create(result)
end

# Create the source
s = request.dynamic(my_request_function)

Вот конкретно с этим куском кода.
мне в output отправлять S?

4

Re: liquidsoap получение трека из скрипта php

Вот в данный момент конфиг такой:

#!/usr/bin/liquidsoap

set("log.file.path","/*****.ru/log/<script>.log")
set("log.stdout", true)
set("server.telnet", true)

def my_request_function() = 
  # Get the first line of my external process
  result =
    list.hd(
      get_process_lines("******/php/testplaylist.php"))
  # Create and return a request using this result
  request.create(result)
end

default = single("/mu/test.mp3")

day=request.dynamic(my_request_function)
night=request.dynamic(my_request_function)
clock   = single("/mu/test.mp3")

radio = fallback([ request.queue(id="request"),
                    switch([({ 6h-22h }, day),
                            ({ 22h-6h }, night)]),
                    default])

radio = add([radio, switch([({59m56s},clock)])])


full =
  fallback(track_sensitive=false,
           [input.http("***localhost:8777/online"),
            radio])


output.icecast.lame(
  host="localhost",port=8777,password="*****",
  mount="live",url="***.ru",description="Neformatnoe Radio",full)

Результат выполнения - постоянно проигрывается дефолтный источник

5

Re: liquidsoap получение трека из скрипта php

Ну если у Вас скрипт задает что дальше будет играть, то зачем вот выдумывать расписание, пусть php за все и отвечает. Вобщем подправил, сображайте.

#!/usr/bin/liquidsoap

set("log.file.path","/*****.ru/log/<script>.log")
set("log.stdout", true)
set("server.telnet", true)

def my_request_function() = 
  uri = get_process_output("/usr/bin/php ******/php/testplaylist.php")
  log (label="next_track",level=1,"#{uri}")
  request.create(uri)
end

radio = request.dynamic(id="playlist", my_request_function)

clock = single("/mu/test.mp3")

radio = add([radio, switch([({59m56s}, clock)])])

radio = crossfade(start_next=3., fade_out=5., fade_in=1., mksafe(radio))

input = input.http("***localhost:8777/online")

full = fallback(track_sensitive=false, [input, radio])

output.icecast.lame(
  host="localhost",port=8777,password="*****",
  mount="live",url="***.ru",description="Neformatnoe Radio", mksafe(full))