last-opened-directory.lua (1673B)
1 --[[ 2 An addon for mpv-file-browser which stores the last opened directory and 3 sets it as the opened directory the next time mpv is opened. 4 5 Available at: https://github.com/CogentRedTester/mpv-file-browser/tree/master/addons 6 ]]-- 7 8 local mp = require 'mp' 9 local msg = require 'mp.msg' 10 11 local fb = require 'file-browser' 12 13 local state_file = mp.command_native({'expand-path', fb.get_opt('last_opened_directory_file')}) --[[@as string]] 14 msg.verbose('using', state_file) 15 16 ---@param directory? string 17 ---@return nil 18 local function write_directory(directory) 19 if not fb.get_opt('save_last_opened_directory') then return end 20 21 local file = io.open(state_file, 'w+') 22 23 if not file then return msg.error('could not open', state_file, 'for writing') end 24 25 directory = directory or fb.get_directory() or '' 26 msg.verbose('writing', directory, 'to', state_file) 27 file:write(directory) 28 file:close() 29 end 30 31 ---@type ParserConfig 32 local addon = { 33 api_version = '1.7.0', 34 priority = 0, 35 } 36 37 function addon:setup() 38 if not fb.get_opt('default_to_last_opened_directory') then return end 39 40 local file = io.open(state_file, "r") 41 if not file then 42 return msg.info('failed to open', state_file, 'for reading (may be due to first load)') 43 end 44 45 local dir = file:read("*a") 46 msg.verbose('setting default directory to', dir) 47 fb.browse_directory(dir, false) 48 file:close() 49 end 50 51 function addon:can_parse(dir, parse_state) 52 if parse_state.source == 'browser' then write_directory(dir) end 53 return false 54 end 55 56 function addon:parse() 57 return nil 58 end 59 60 mp.register_event('shutdown', function() write_directory() end) 61 62 return addon