Instantly share code, notes, and snippets.

Embed
What would you like to do?
-- 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

This comment has been minimized.

Copy link

gwarser commented Oct 30, 2017

My watch-later config file is not cleaned on the end of movie, when player window is not active.
Often happens for music videos.

@Hakkin

This comment has been minimized.

Copy link
Owner

Hakkin commented Nov 1, 2017

@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.

@TheAMM

This comment has been minimized.

Copy link

TheAMM commented Dec 31, 2017

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).

@jgreco

This comment has been minimized.

Copy link

jgreco commented Dec 7, 2018

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.

@garoto

This comment has been minimized.

Copy link

garoto commented Jan 10, 2019

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.

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