init
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
-- Runs write-watch-later-config periodically
|
||||
|
||||
local options = require 'mp.options'
|
||||
local msg = require 'mp.msg'
|
||||
|
||||
o = {
|
||||
save_interval = 60,
|
||||
percent_pos = 99,
|
||||
}
|
||||
options.read_options(o)
|
||||
|
||||
local can_delete = true
|
||||
local can_save = true
|
||||
local path = nil -- only set after file success load, reset to nil when file unload.
|
||||
|
||||
local function reset()
|
||||
path = nil
|
||||
end
|
||||
|
||||
-- set vars when file success load
|
||||
local function init()
|
||||
path = mp.get_property("path")
|
||||
end
|
||||
|
||||
local function save()
|
||||
if not can_save then return end
|
||||
local watch_later_list = mp.get_property("watch-later-options", {})
|
||||
if mp.get_property_bool("save-position-on-quit") then
|
||||
msg.debug("saving state")
|
||||
if not watch_later_list:find("start") then
|
||||
mp.commandv("change-list", "watch-later-options", "append", "start")
|
||||
end
|
||||
mp.command("write-watch-later-config")
|
||||
end
|
||||
end
|
||||
|
||||
local function save_if_pause(_, pause)
|
||||
if pause then save() end
|
||||
end
|
||||
|
||||
local function pause_timer_while_paused(_, pause)
|
||||
if pause then timer:stop() else timer:resume() end
|
||||
end
|
||||
|
||||
-- save watch-later-config when file unloading
|
||||
local function save_or_delete()
|
||||
if not can_delete then return end
|
||||
local eof = mp.get_property_bool("eof-reached")
|
||||
local percent_pos = mp.get_property_number("percent-pos")
|
||||
if eof or percent_pos and (percent_pos == 0 or percent_pos >= o.percent_pos) then
|
||||
can_delete = true
|
||||
if path ~= nil then
|
||||
msg.debug("deleting state: percent_pos=0 or eof")
|
||||
mp.commandv("delete-watch-later-config", path)
|
||||
end
|
||||
elseif path ~= nil then
|
||||
save()
|
||||
end
|
||||
reset()
|
||||
end
|
||||
|
||||
mp.register_script_message("skip-delete-state", function() can_delete = false end)
|
||||
|
||||
timer = mp.add_periodic_timer(o.save_interval, save)
|
||||
mp.observe_property("pause", "bool", pause_timer_while_paused)
|
||||
|
||||
mp.observe_property("pause", "bool", save_if_pause)
|
||||
|
||||
mp.register_event("file-loaded", init)
|
||||
mp.add_hook("on_unload", 50, save_or_delete) -- after mpv saving state
|
||||
Reference in New Issue
Block a user