marzzzello / mpv_thumbnail_script

A Lua script to show preview thumbnails in mpv's OSC seekbar, sans external dependencies (fork)
GNU General Public License v3.0
270 stars 20 forks source link

Option to clear thumbnails cache #53

Open shibotto opened 4 months ago

shibotto commented 4 months ago

The cached thumbnails directory can grow to several hundreds of MBs or even GBs very fast. It is currently recommended to manually keep it clean, but I think this script could handle it itself.

I have a quick, dirty solution that works for me on GNU/Linux by deleting a video thumbnail directory on "end-file":

diff --git a/src/thumbnailer_shared.lua b/src/thumbnailer_shared.lua
index 37390e7..f53d774 100644
--- a/src/thumbnailer_shared.lua
+++ b/src/thumbnailer_shared.lua
@@ -71,6 +71,13 @@ function Thumbnailer:on_start_file()
     self:clear_state()
 end

+function Thumbnailer:on_end_file()
+    local path = self.state.thumbnail_directory
+    if path and path_exists(path) then
+        os.execute('rm -r "'..path..'"')
+    end
+end
+
 function Thumbnailer:on_video_change(params)
     -- Gather a new state when we get proper video-dec-params and our state is empty
     if params then
@@ -503,3 +510,4 @@ function Thumbnailer:start_worker_jobs()
 end

 mp.register_event("start-file", function() Thumbnailer:on_start_file() end)
+mp.register_event("end-file", function() Thumbnailer:on_end_file() end)

but as I said it's quick and dirty, it doesn't work on Windows and probably other stuff I didn't think about. Since keeping the cache could also have its benefits, it might be a good idea to have this controlled by an option.