45 lines
1.3 KiB
Lua
45 lines
1.3 KiB
Lua
-- playlist.lua
|
|
--
|
|
-- Automatically adds files from the same directory
|
|
-- to the playlist.
|
|
|
|
local msg = require 'mp.msg'
|
|
local utils = require 'mp.utils'
|
|
|
|
local current_dir = nil
|
|
|
|
table.indexOf = function(t, x)
|
|
for k, v in pairs(t) do
|
|
if x == v then return k end
|
|
end
|
|
end
|
|
|
|
function alphanumsort(t)
|
|
local function padnum(d) return ("%012d"):format(d) end
|
|
table.sort(t, function(a,b)
|
|
return tostring(a):gsub("%d+",padnum) <
|
|
tostring(b):gsub("%d+",padnum)
|
|
end)
|
|
return t
|
|
end
|
|
|
|
mp.register_event("file-loaded", function()
|
|
local dir = utils.split_path(mp.get_property("path"))
|
|
if dir ~= current_dir then
|
|
local entries = utils.readdir(dir, "files")
|
|
if entries ~= nil then
|
|
entries = alphanumsort(entries)
|
|
local index = table.indexOf(entries, mp.get_property("filename"))
|
|
if index ~= nil then
|
|
index = index - 1
|
|
current_dir = dir
|
|
mp.commandv("playlist_clear")
|
|
for k, v in pairs(entries) do
|
|
mp.commandv("loadfile", utils.join_path(current_dir, v), "append")
|
|
end
|
|
mp.commandv("playlist_remove", "current")
|
|
mp.set_property("playlist-pos", index)
|
|
end
|
|
end
|
|
end
|
|
end) |