<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Неофициальный форум DLNA Home Media Server &mdash; Lua скрипт для выбора файла в плейлисте в Ace_player (VLC)]]></title>
	<link rel="self" href="https://hms.lostcut.net/extern.php?action=feed&amp;tid=153&amp;type=atom" />
	<updated>2016-01-30T14:33:29Z</updated>
	<generator>PunBB</generator>
	<id>https://hms.lostcut.net/viewtopic.php?id=153</id>
		<entry>
			<title type="html"><![CDATA[Lua скрипт для выбора файла в плейлисте в Ace_player (VLC)]]></title>
			<link rel="alternate" href="https://hms.lostcut.net/viewtopic.php?pid=3185#p3185" />
			<content type="html"><![CDATA[<p>В общем, я практически сдался.<br />У меня не получается огранизовать воспроизведение конкретного (не первого) файла из плейлиста, используя aceplayer.exe для воспроизведения torrent файла.<br />Если тут будут спецы по lua и модулям для vlc, может кто-нибудь подскажет?</p><p>А проблема, как выясняется, проста до безобразия. При исполнении кода скрипта интерфейса, который мы указали в командной строке при запуске - плейлист пустой и не содержит информации о файлах.</p><p>Эксперименты провожу следующим образом:<br />Допустим, AcePlayer установлен в &quot;C:\Users\User\AppData\Roaming\ACEStream\player\ace_player.exe&quot;. <br />Есть файл test.torrent, в котором файлов несколько и они отображаются как плейлист, если запустить плеер указав это файл:<br /></p><div class="codebox"><pre><code>&quot;C:\Users\User\AppData\Roaming\ACESTR~1\player\ACE_PL~1.EXE&quot; --language en --no-auto-preparse --no-playlist-autostart --access=p2p_access &quot;test.torrent&quot;</code></pre></div><p>Странность №1: не срабатывает --no-playlist-autostart и, я подозреваю, --no-auto-preparse. Т.е. автоматически начинает играть первый файл.</p><p>Странность №2 следующая.<br />Кладём файл ts.lua с таким дурацким содержанием:<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>vlc.playlist.sort( &#039;duration&#039; )

vlc.msg.info(&quot;torrentfile=&quot;    .. config.torrentfile)
vlc.msg.info(&quot;torrentsubfile=&quot; .. config.torrentsubfile)

pl = vlc.playlist.get(&quot;playlist&quot;)
n  = #pl.children

vlc.msg.info(&quot;playlist_name =&quot; .. pl.name)
vlc.msg.info(&quot;playlist_count=&quot; .. n)

for i, item in ipairs(pl.children) do

  vlc.msg.info(&quot;torrentsubfile=&quot; .. item.name)

end</code></pre></div></div></div><p>Этот скрипт выводит в консольное окно информацию о установленных переменных и содержание плейлиста.<br />Кладём его в папку &quot;C:\Users\User\AppData\Roaming\ACEStream\player\lua\intf\&quot;.</p><p>и пробуем запустить плеер с такими параметрами:<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>&quot;C:\Users\User\AppData\Roaming\ACESTR~1\player\ACE_PL~1.EXE&quot; --language en --no-auto-preparse --no-playlist-autostart --extraintf=dummy -Iluaintf --lua-intf=ts --lua-config &quot;ts={torrentfile=&#039;test.torrent&#039;, torrentsubfile=&#039;08. Stiven_King_Plohoy_malshishka_06_192.mp3&#039;}&quot; --access=p2p_access &quot;test.torrent&quot;</code></pre></div></div></div><p>Где в параметрах мы указали использовать интерфейс ts.lua и задали пару значений в config для данного интерфейса.</p><p>Наш код в ts.lua успешно выполнится. Мы увидим в консольном окне наши надписи...<br />Да только команда vlc.playlist.get(&quot;playlist&quot;) возвращает всегда пустой плейлист.<br />vlc.playlist.get(&quot;root&quot;) или vlc.playlist.get() возвращает два плейлиста, &quot;Playlist&quot; и медиатеку. Но первый плейлист всегда пустой.</p><p>Как я понял, при использовании торрент файлов в aceplayer информация о файлах в плейлист попадает где-то позже.<br />Вопрос, как и где перехватить воспроизведение файла из плейлиста, чтобы спозиционировать и включить нужный файл?<br />Сделать lua скрипт и положить его в \lua\playlist\ не дало результатов. Он не исполняется.<br />Например такой тестовый дурацкий:<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>function probe()
    return true
end

function parse()
    playlist = {}

    while true do

       line = vlc.readline()

       if line == nil then
           break
       else 
           vlc.msg.info(&quot; Read line: &#039;&quot;..line..&quot;&#039;&quot;)
       end

       playlist_item = { path = line }

       table.insert( playlist, playlist_item )
    end

    return playlist
end</code></pre></div></div></div><p>Где-то я туплю и lua до этого не знал и с vlc близко так не был знаком. Вот бы кто подсказал.</p><p>Архив с файлами (test.torrent, test_ts.bat, ts.lua, tt.lua) для тестов приложил.</p>]]></content>
			<author>
				<name><![CDATA[WendyH]]></name>
				<uri>https://hms.lostcut.net/profile.php?id=2</uri>
			</author>
			<updated>2016-01-30T14:33:29Z</updated>
			<id>https://hms.lostcut.net/viewtopic.php?pid=3185#p3185</id>
		</entry>
</feed>
