diff options
Diffstat (limited to '.config/mpv/scripts/autosave.lua')
-rw-r--r-- | .config/mpv/scripts/autosave.lua | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/.config/mpv/scripts/autosave.lua b/.config/mpv/scripts/autosave.lua new file mode 100644 index 0000000..60609b2 --- /dev/null +++ b/.config/mpv/scripts/autosave.lua @@ -0,0 +1,45 @@ +-- autosave.lua +-- based on https://gist.github.com/Hakkin/5489e511bd6c8068a0fc09304c9c5a82 +-- +-- Periodically saves "watch later" data during playback, rather than only saving on quit. +-- This lets you easily recover your position in the case of an ungraceful shutdown of mpv (crash, power failure, etc.). +-- +-- You can configure the save period by creating a "lua-settings" directory inside your mpv configuration directory. +-- Inside the "lua-settings" directory, create a file named "autosave.conf". +-- The save period can be set like so: +-- +-- save_period=60 +-- +-- This will set the save period to once every 60 seconds of playback, time while paused is not counted towards the save period timer. +-- The default save period is 30 seconds. +local options = require 'mp.options' + +local o = { + save_period = 30 +} + +options.read_options(o) + +local mp = require 'mp' + +local function save() + if mp.get_property_bool("resume-playback") then + -- ugly hack to avoid the "Saving state." spam + local savelog = mp.get_property("msg-level") + mp.set_property("msg-level", "cplayer=warn") + mp.command("write-watch-later-config") + mp.set_property("msg-level", savelog) + end +end + +local save_period_timer = mp.add_periodic_timer(o.save_period, save) + +local function pause(name, paused) + if paused then + save_period_timer:stop() + else + save_period_timer:resume() + end +end + +mp.observe_property("pause", "bool", pause) |