Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Astra Script
- -- Play a list of the files (m3u or simple text file)
- -- Address format: pls://path
- -- path - full path to the playlist
- -- Additional options:
- -- loop - start from begining after the end of list
- astra_storage["/mod.js"] = [[
- make_url_format.pls = function(data, except) {
- var r = "pls://";
- if(data.addr) { r += data.addr; except.push("addr"); }
- return r;
- };
- ]]
- init_input_module.pls = function(config)
- local instance = transmit({ current = 0 })
- local f = io.open(config.addr)
- if not f then
- log.error("[" .. config.name .. "] playlist not found")
- return instance
- end
- local list = {}
- while true do
- local l = f:read()
- if not l then
- break
- end
- if l:find("^#") then
- --
- else
- table.insert(list, l)
- end
- end
- f:close()
- if #list == 0 then
- log.error("[" .. config.name .. "] empty playlist")
- return instance
- end
- local function playnext()
- local current = instance.__options.current + 1
- if current > #list then
- instance.__options.current = 0
- if config.loop then
- playnext()
- return nil
- else
- instance.__options.input = nil
- instance.__options.tail = transmit({})
- log.info("[" .. config.name .. "] end of playlist")
- end
- else
- instance.__options.current = current
- instance.__options.input = file_input({
- filename = list[current],
- callback = playnext
- })
- instance.__options.tail = channel({
- upstream = instance.__options.input:stream(),
- name = config.name,
- pnr = 0,
- set_pnr = 1,
- map = { {"pmt",100}, {"video",101}, {"audio",102} }
- })
- end
- instance:set_upstream(instance.__options.tail:stream())
- end
- playnext()
- return instance
- end
- kill_input_module.pls = function(instance)
- instance.__options.current = nil
- instance.__options.input = nil
- instance.__options.tail = nil
- end
Advertisement
Add Comment
Please, Sign In to add comment