main.lua (3161B)
1 --[[ 2 mpv-file-browser 3 4 This script allows users to browse and open files and folders entirely from within mpv. 5 The script uses nothing outside the mpv API, so should work identically on all platforms. 6 The browser can move up and down directories, start playing files and folders, or add them to the queue. 7 8 For full documentation see: https://github.com/CogentRedTester/mpv-file-browser 9 ]]-- 10 11 local mp = require 'mp' 12 13 local o = require 'modules.options' 14 15 -- setting the package paths 16 package.path = mp.command_native({"expand-path", o.module_directory}).."/?.lua;"..package.path 17 18 local addons = require 'modules.addons' 19 local keybinds = require 'modules.keybinds' 20 local setup = require 'modules.setup' 21 local controls = require 'modules.controls' 22 local observers = require 'modules.observers' 23 local script_messages = require 'modules.script-messages' 24 25 local input_loaded, input = pcall(require, "mp.input") 26 local user_input_loaded, user_input = pcall(require, "user-input-module") 27 28 29 -- root and addon setup 30 setup.root() 31 addons.load_internal_addons() 32 if o.addons then addons.load_external_addons() end 33 addons.setup_addons() 34 35 --these need to be below the addon setup in case any parsers add custom entries 36 setup.extensions_list() 37 keybinds.setup_keybinds() 38 39 -- property observers 40 mp.observe_property('path', 'string', observers.current_directory) 41 if o.map_dvd_device then mp.observe_property('dvd-device', 'string', observers.dvd_device) end 42 if o.map_bd_device then mp.observe_property('bluray-device', 'string', observers.bd_device) end 43 if o.map_cdda_device then mp.observe_property('cdda-device', 'string', observers.cd_device) end 44 if o.align_x == 'auto' then mp.observe_property('osd-align-x', 'string', observers.osd_align) end 45 if o.align_y == 'auto' then mp.observe_property('osd-align-y', 'string', observers.osd_align) end 46 47 -- scripts messages 48 mp.register_script_message('=>', script_messages.chain) 49 mp.register_script_message('delay-command', script_messages.delay_command) 50 mp.register_script_message('conditional-command', script_messages.conditional_command) 51 mp.register_script_message('evaluate-expressions', script_messages.evaluate_expressions) 52 mp.register_script_message('run-statement', script_messages.run_statement) 53 54 mp.register_script_message('browse-directory', controls.browse_directory) 55 mp.register_script_message("get-directory-contents", script_messages.get_directory_contents) 56 57 --declares the keybind to open the browser 58 mp.add_key_binding('MENU','browse-files', controls.toggle) 59 mp.add_key_binding('Ctrl+o','open-browser', controls.open) 60 61 if input_loaded then 62 mp.add_key_binding("Alt+o", "browse-directory/get-user-input", function() 63 input.get({ 64 prompt = "open directory:", 65 id = "file-browser/browse-directory", 66 submit = function(text) 67 controls.browse_directory(text) 68 input.terminate() 69 end 70 }) 71 end) 72 elseif user_input_loaded then 73 mp.add_key_binding("Alt+o", "browse-directory/get-user-input", function() 74 user_input.get_user_input(controls.browse_directory, {request_text = "open directory:"}) 75 end) 76 end