Skip to content

Instantly share code, notes, and snippets.

@TheDrHax
Forked from Hakkin/autosave.lua
Last active April 5, 2025 20:38
Show Gist options
  • Save TheDrHax/fa2dba9023aace168de029f51799948d to your computer and use it in GitHub Desktop.
Save TheDrHax/fa2dba9023aace168de029f51799948d to your computer and use it in GitHub Desktop.
MPV script that periodically saves "watch later" data during playback
-- autosave.lua
--
-- 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()
mp.command("write-watch-later-config")
end
local function init()
if not mp.get_property_bool("seekable", true) then
return
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)
end
mp.register_event("file-loaded", init)
@skafiend
Copy link

skafiend commented Mar 26, 2025

save()
local save_period_timer = mp.add_periodic_timer(o.save_period, save)

I noticed that if you kill mpv two times in a row it loses the savestate, and this small addition to the original script fixes the issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment