1

Тема: 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) для тестов приложил.

Прикреплённые файлы сообщения

test_aceplayer.zip 17.22 kb, скачивалось 372 раза, начиная с 2016.01.30

Sony Bravia KDL-32CX523