Я использую equeue
для воспроизведения плейлиста, вставляя в него треки. Допустим, через час в очередь ставится новый плейлист (набор файлов). К сожалению, эти треки не начинают воспроизводиться, потому что они поставлены в очередь после ранее поставленных в очередь файлов.
Следующий скрипт удаляет файлы из очереди:
input_fs = request.equeue(id="fs")
def clear_items(s) =
ret = server.execute("fs.primary_queue")
ret = list.hd(ret)
if ret == "" then
log("Queue cleared.")
(-1.)
else
log("There are still items in the queue, trying skip ...")
source.skip(s)
(0.1)
end
end
def clear_queue(s) =
add_timeout(fast=false, 0.5, {clear_items(s)})
end
server.register(namespace="fs",
description="Clear the all items of the filesystem queue.",
usage="clear",
"clear",
fun (s) -> begin clear_queue(input_fs) "Done." end)
Он работает при вызове через Telnet, но также добавляет дополнительный тайм-аут. Как следствие, планирование следующего списка воспроизведения несколько задерживается.
Обратите внимание: я выполняю планирование LiquidSoap через приложение Python, которое помещает в очередь с помощью синхронизированных потоков.
Что бы вы сказали, это рекомендуемый способ решить эту проблему?