74 lines
2.9 KiB
Lua
74 lines
2.9 KiB
Lua
--[[
|
|
mpv-file-browser
|
|
|
|
This script allows users to browse and open files and folders entirely from within mpv.
|
|
The script uses nothing outside the mpv API, so should work identically on all platforms.
|
|
The browser can move up and down directories, start playing files and folders, or add them to the queue.
|
|
|
|
For full documentation see: https://github.com/CogentRedTester/mpv-file-browser
|
|
]]--
|
|
|
|
local mp = require 'mp'
|
|
|
|
local o = require 'modules.options'
|
|
|
|
-- setting the package paths
|
|
package.path = mp.command_native({"expand-path", o.module_directory}).."/?.lua;"..package.path
|
|
|
|
local addons = require 'modules.addons'
|
|
local keybinds = require 'modules.keybinds'
|
|
local setup = require 'modules.setup'
|
|
local controls = require 'modules.controls'
|
|
local observers = require 'modules.observers'
|
|
local script_messages = require 'modules.script-messages'
|
|
|
|
local input_loaded, input = pcall(require, "mp.input")
|
|
local user_input_loaded, user_input = pcall(require, "user-input-module")
|
|
|
|
|
|
-- root and addon setup
|
|
setup.root()
|
|
addons.load_internal_parsers()
|
|
if o.addons then addons.load_external_addons() end
|
|
|
|
--these need to be below the addon setup in case any parsers add custom entries
|
|
setup.extensions_list()
|
|
keybinds.setup_keybinds()
|
|
|
|
-- property observers
|
|
mp.observe_property('path', 'string', observers.current_directory)
|
|
if o.map_dvd_device then mp.observe_property('dvd-device', 'string', observers.dvd_device) end
|
|
if o.map_bd_device then mp.observe_property('bluray-device', 'string', observers.bd_device) end
|
|
if o.map_cdda_device then mp.observe_property('cdda-device', 'string', observers.cd_device) end
|
|
|
|
-- scripts messages
|
|
mp.register_script_message('=>', script_messages.chain)
|
|
mp.register_script_message('delay-command', script_messages.delay_command)
|
|
mp.register_script_message('conditional-command', script_messages.conditional_command)
|
|
mp.register_script_message('evaluate-expressions', script_messages.evaluate_expressions)
|
|
mp.register_script_message('run-statement', script_messages.run_statement)
|
|
|
|
mp.register_script_message('browse-directory', controls.browse_directory)
|
|
mp.register_script_message("get-directory-contents", script_messages.get_directory_contents)
|
|
|
|
--declares the keybind to open the browser
|
|
mp.add_key_binding('MENU','browse-files', controls.toggle)
|
|
mp.add_key_binding('Ctrl+o','open-browser', controls.open)
|
|
|
|
if input_loaded then
|
|
mp.add_key_binding("Alt+o", "browse-directory/get-user-input", function()
|
|
input.get({
|
|
prompt = "open directory:",
|
|
id = "file-browser/browse-directory",
|
|
submit = function(text)
|
|
controls.browse_directory(text)
|
|
input.terminate()
|
|
end
|
|
})
|
|
end)
|
|
elseif user_input_loaded then
|
|
mp.add_key_binding("Alt+o", "browse-directory/get-user-input", function()
|
|
user_input.get_user_input(controls.browse_directory, {request_text = "open directory:"})
|
|
end)
|
|
end
|