TOOLS/lua/autoload: may specify loading only one type of files

Under the current file loading logic, a video file and an external
audio track next to it will both be added to the playlist, which
most users don't wish to happen. Having an option that tells the
script to load only one type of files (video, audio, or image)
can avoid this problem. It may also come in handy for people who
have different types of files mixed in a folder but wish to consume
only one type of media at a time.
This commit is contained in:
sunpenghao 2023-08-18 01:23:45 +08:00 committed by Dudemanguy
parent 152a95f215
commit f6fc6cfd35
1 changed files with 18 additions and 3 deletions

View File

@ -20,6 +20,7 @@ additional_image_exts=list,of,ext
additional_video_exts=list,of,ext additional_video_exts=list,of,ext
additional_audio_exts=list,of,ext additional_audio_exts=list,of,ext
ignore_hidden=yes ignore_hidden=yes
same_type=yes
--]] --]]
@ -37,7 +38,8 @@ o = {
additional_image_exts = "", additional_image_exts = "",
additional_video_exts = "", additional_video_exts = "",
additional_audio_exts = "", additional_audio_exts = "",
ignore_hidden = true ignore_hidden = true,
same_type = false
} }
options.read_options(o) options.read_options(o)
@ -153,15 +155,28 @@ function find_and_add_entries()
end end
pl_count = mp.get_property_number("playlist-count", 1) pl_count = mp.get_property_number("playlist-count", 1)
this_ext = get_extension(filename)
-- check if this is a manually made playlist -- check if this is a manually made playlist
if (pl_count > 1 and autoloaded == nil) or if (pl_count > 1 and autoloaded == nil) or
(pl_count == 1 and EXTENSIONS[string.lower(get_extension(filename))] == nil) then (pl_count == 1 and EXTENSIONS[string.lower(this_ext)] == nil) then
msg.verbose("stopping: manually made playlist") msg.verbose("stopping: manually made playlist")
return return
else else
autoloaded = true autoloaded = true
end end
if o.same_type then
if EXTENSIONS_VIDEO[string.lower(this_ext)] ~= nil then
EXTENSIONS_TARGET = EXTENSIONS_VIDEO
elseif EXTENSIONS_AUDIO[string.lower(this_ext)] ~= nil then
EXTENSIONS_TARGET = EXTENSIONS_AUDIO
else
EXTENSIONS_TARGET = EXTENSIONS_IMAGES
end
else
EXTENSIONS_TARGET = EXTENSIONS
end
local pl = mp.get_property_native("playlist", {}) local pl = mp.get_property_native("playlist", {})
local pl_current = mp.get_property_number("playlist-pos-1", 1) local pl_current = mp.get_property_number("playlist-pos-1", 1)
msg.trace(("playlist-pos-1: %s, playlist: %s"):format(pl_current, msg.trace(("playlist-pos-1: %s, playlist: %s"):format(pl_current,
@ -182,7 +197,7 @@ function find_and_add_entries()
if ext == nil then if ext == nil then
return false return false
end end
return EXTENSIONS[string.lower(ext)] return EXTENSIONS_TARGET[string.lower(ext)]
end) end)
alphanumsort(files) alphanumsort(files)