-- 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 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) |
@gwarser Unfortunately there's no way to delete watch-later data from user scripts as far as I know, only save it. A "work around" is to re-open the movie (mpv removes the watch-later data when you open the file), then ctrl+c out of mpv, which should exit without re-creating the watch later data.
It might be worth opening an issue to request a way to remove the watch-later data programmatically.
You can (ab)use the undocumented mp.find_config_file()
to get paths to files near or about the mpv executable or config directories. Here's how mp.options
uses it - if you replicate the MD5sum process for generating the watch-later filename, you can find_config_file it and remove it (or, if lazy, clear all files in the watch_later
directory).
What about setting the watch-data back to zero instead of deleting it? In other words seek to zero, then save it.
I'm not sure how to actually trigger this though, since seeking won't work from an on_unload hook.
Unfortunately there's no way to delete watch-later data from user scripts as far as I know, only save it.
Anyone knows if this is by design? Seems odd if true to me.
Edit: The same behavior happens with keybinds in input.conf
, like CTRL+Q write-watch-later-config ; show-text "Wrote watch-later data"
. So programatically invoking the write-watch-later-config
function wont erase the data even when doing a simple quit
during the same run. Odd indeed.
Is there a way to suppress the "Saving state" message that prints in the terminal?
local function save()
mp.commandv("set", "msg-level", "cplayer=warn")
mp.command("write-watch-later-config")
mp.commandv("set", "msg-level", "cplayer=status")
still works?
I put the script in mpv/scripts but not seem to work
edit:
I think dont work in folders/playlist
It might be worth opening an issue to request a way to remove the watch-later data programmatically.
There is now delete-watch-later-config
, you can use this version of the script which takes advantage of it:
https://gist.github.com/CyberShadow/2f71a97fb85ed42146f6d9f522bc34ef
More details in the commit message here: mpv-player/mpv@3ccf70b
@CyberShadow thank you!
Can you copy an autosave lua script because i can't
How to copy it from where should I start copying local options.
My watch-later config file is not cleaned on the end of movie, when player window is not active.
Often happens for music videos.