From edab612bd41ab2fdfb123cb8030b77c372a81dc6 Mon Sep 17 00:00:00 2001 From: Tharre Date: Tue, 6 Feb 2018 17:32:11 +0100 Subject: mpv: add autosave.lua (resume-playback) --- .config/mpv/scripts/autosave.lua | 45 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 .config/mpv/scripts/autosave.lua (limited to '.config/mpv/scripts/autosave.lua') 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) -- cgit v1.2.3-70-g09d2