forked from NaiveInvestigator/save-playlist
-
Notifications
You must be signed in to change notification settings - Fork 0
/
save-playlist.lua
64 lines (56 loc) · 2.1 KB
/
save-playlist.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
-- local playlist_savepath = (os.getenv('APPDATA') or os.getenv('HOME')..'/.config')..'/mpv/'
local playlist_savepath = mp.get_property('working-directory')
local utils = require("mp.utils")
local msg = require("mp.msg")
local have_menu = false
-- saves the current playlist into a m3u file
function save_playlist(savepath)
local length = mp.get_property_number('playlist-count', 0)
local file, err = io.open(savepath, "w")
if not file then
msg.error("Error in creating playlist file, check permissions and paths: " .. (err or ""))
else
local i = 0
while i < length do
local pwd = mp.get_property("working-directory")
local filename = mp.get_property('playlist/' .. i .. '/filename')
local fullpath = filename
if not filename:match("^%a%a+:%/%/") then
fullpath = utils.join_path(pwd, filename)
end
file:write(fullpath, "\n")
i = i + 1
end
msg.info("Playlist written to: " .. savepath)
mp.osd_message("Playlist written to: " .. savepath)
file:close()
end
end
-- detect menu.dll
mp.register_script_message('menu-ready', function()
have_menu = true
end)
mp.register_script_message('save-playlist', function()
local length = mp.get_property_number('playlist-count', 0)
if length == 0 then
mp.osd_message("Empty Playlist")
return
end
local filename = os.time() .. "-size_" .. length .. "-playlist"
if have_menu then
mp.register_script_message('dialog-save-reply', function (savepath)
save_playlist(savepath)
mp.unregister_script_message('dialog-save-reply')
end)
mp.set_property_native('user-data/menu/dialog/filters', {
{ name = 'Playlist Files', spec = '*.m3u;*.m3u8;*.pls;*.cue' },
{ name = 'All Files (*.*)', spec = '*.*' },
})
mp.set_property_native('user-data/menu/dialog/default-path', mp.get_property('working-directory'))
mp.set_property_native('user-data/menu/dialog/default-name', filename)
mp.commandv('script-message-to', 'menu', 'dialog/save', mp.get_script_name())
else
local savepath = utils.join_path(playlist_savepath, filename .. '.m3u')
save_playlist(savepath)
end
end)