-
-
Save CyberShadow/2f71a97fb85ed42146f6d9f522bc34ef to your computer and use it in GitHub Desktop.
| -- 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.commandv("set", "msg-level", "cplayer=warn") | |
| mp.command("write-watch-later-config") | |
| mp.commandv("set", "msg-level", "cplayer=status") | |
| end | |
| local save_period_timer = mp.add_periodic_timer(o.save_period, save) | |
| local function pause(name, paused) | |
| save() | |
| if paused then | |
| save_period_timer:stop() | |
| else | |
| save_period_timer:resume() | |
| end | |
| end | |
| mp.observe_property("pause", "bool", pause) | |
| mp.register_event("file-loaded", save) | |
| local function end_file(data) | |
| if data.reason == 'eof' or data.reason == 'stop' then | |
| local playlist = mp.get_property_native('playlist') | |
| for i, entry in pairs(playlist) do | |
| if entry.id == data.playlist_entry_id then | |
| mp.commandv("delete-watch-later-config", entry.filename) | |
| return | |
| end | |
| end | |
| end | |
| end | |
| mp.register_event("end-file", end_file) |
I'm not sure why it doesn't work for you. Note that the critical difference of this fork vs. other versions is supporting playlists - we need to delete the watch_later bookmark when leaving one file and before going to the next one, otherwise resuming playback of the playlist will not work.
@CyberShadow does it also save when the video paused? if it does it would be perfect!
Yes, you can see it calls save() in the pause function.
@Hakkin @CyberShadow what are the conditions for modifying and sharing your work, i.e. what license are you putting your work under and who would I write down as the copy right holder?
@josch I wrote the original script this was forked from. My code can be licensed under Zero-Clause BSD.
My code can be licensed under Zero-Clause BSD.
Same.
Is it possible to auto save on exit only whether by quitting mpv internally or externally, e.g. closing the window? Even if it means using a shell wrapper script. That would be much preferred than periodically saving which is not so predictable when/where the last save is and relatively more resource-intensive.
Yeah, I think it reads the file with the same parser as for
mpv.conf, which doesn't seem to support things like lists.