Тема: Lua скрипт для выбора файла в плейлисте в Ace_player (VLC)
В общем, я практически сдался.
У меня не получается огранизовать воспроизведение конкретного (не первого) файла из плейлиста, используя aceplayer.exe для воспроизведения torrent файла.
Если тут будут спецы по lua и модулям для vlc, может кто-нибудь подскажет?
А проблема, как выясняется, проста до безобразия. При исполнении кода скрипта интерфейса, который мы указали в командной строке при запуске - плейлист пустой и не содержит информации о файлах.
Эксперименты провожу следующим образом:
Допустим, AcePlayer установлен в "C:\Users\User\AppData\Roaming\ACEStream\player\ace_player.exe".
Есть файл test.torrent, в котором файлов несколько и они отображаются как плейлист, если запустить плеер указав это файл:
"C:\Users\User\AppData\Roaming\ACESTR~1\player\ACE_PL~1.EXE" --language en --no-auto-preparse --no-playlist-autostart --access=p2p_access "test.torrent"
Странность №1: не срабатывает --no-playlist-autostart и, я подозреваю, --no-auto-preparse. Т.е. автоматически начинает играть первый файл.
Странность №2 следующая.
Кладём файл ts.lua с таким дурацким содержанием:
vlc.playlist.sort( 'duration' )
vlc.msg.info("torrentfile=" .. config.torrentfile)
vlc.msg.info("torrentsubfile=" .. config.torrentsubfile)
pl = vlc.playlist.get("playlist")
n = #pl.children
vlc.msg.info("playlist_name =" .. pl.name)
vlc.msg.info("playlist_count=" .. n)
for i, item in ipairs(pl.children) do
vlc.msg.info("torrentsubfile=" .. item.name)
end
Этот скрипт выводит в консольное окно информацию о установленных переменных и содержание плейлиста.
Кладём его в папку "C:\Users\User\AppData\Roaming\ACEStream\player\lua\intf\".
и пробуем запустить плеер с такими параметрами:
"C:\Users\User\AppData\Roaming\ACESTR~1\player\ACE_PL~1.EXE" --language en --no-auto-preparse --no-playlist-autostart --extraintf=dummy -Iluaintf --lua-intf=ts --lua-config "ts={torrentfile='test.torrent', torrentsubfile='08. Stiven_King_Plohoy_malshishka_06_192.mp3'}" --access=p2p_access "test.torrent"
Где в параметрах мы указали использовать интерфейс ts.lua и задали пару значений в config для данного интерфейса.
Наш код в ts.lua успешно выполнится. Мы увидим в консольном окне наши надписи...
Да только команда vlc.playlist.get("playlist") возвращает всегда пустой плейлист.
vlc.playlist.get("root") или vlc.playlist.get() возвращает два плейлиста, "Playlist" и медиатеку. Но первый плейлист всегда пустой.
Как я понял, при использовании торрент файлов в aceplayer информация о файлах в плейлист попадает где-то позже.
Вопрос, как и где перехватить воспроизведение файла из плейлиста, чтобы спозиционировать и включить нужный файл?
Сделать lua скрипт и положить его в \lua\playlist\ не дало результатов. Он не исполняется.
Например такой тестовый дурацкий:
function probe()
return true
end
function parse()
playlist = {}
while true do
line = vlc.readline()
if line == nil then
break
else
vlc.msg.info(" Read line: '"..line.."'")
end
playlist_item = { path = line }
table.insert( playlist, playlist_item )
end
return playlist
end
Где-то я туплю и lua до этого не знал и с vlc близко так не был знаком. Вот бы кто подсказал.
Архив с файлами (test.torrent, test_ts.bat, ts.lua, tt.lua) для тестов приложил.