My Lua scripts
A collection of scripts I have written for mpv over the years. Small ones are kept in this repository, larger ones have their own. Please keep in mind that not all of these scripts are maintained, and some of these were experiments which didn't pan out. Nevertheless, feel free to submit issues if something breaks, and if you have any interesting script ideas feel free to make a suggestion in the discussions tab.
after-playback
Sends commands to nircmd (windows only) on playback finish. Commands include sleep, hibernate, shutdown, lock. Full list is in the file
change-refresh
Uses nircmd (windows only) to change the resolution and refresh rate of the monitor to match the playing video. Saves the original monitor resolution and reverts changes on exit and when hotkey is pressed. Full description in file.
chapter-list
Creates an scrollable list of chapters to allow more granular chapter selection. Requires scroll-list
command-timeout
Sends an input command after a specified delay. I suggest using the newer delay-command.lua
instead. This script is deprecated.
coverart
Automatically scans the directory of the currently loaded file and loads any valid cover art into mpv as additional video tracks. Has options for selecting what file names and types are considered valid.
cycle-commands
Cycles through a series of commands on a keypress. Each iteration of the cycle can contain as many commands as one wants. Syntax details are at the top of the file.
cycle-profile
Cycles through a list of profiles sent via a script message and prints the profile-desc to the OSD. More details at the top of the file
delay-command
An extremely simple script which executes an input.conf command only after a set delay.
display-profiles
Automatically applies profiles when the mpv window is moved to a new display
display-name
A simple script designed for windows that saves the name of the monitor that mpv is using into
the display_name
shared_script_properties
field. This means that one can use conditional
auto profiles with the name of the monitor.
This is necessary on windows because the default display names that mpv uses
are in the form \\.\DISPLAY#
, which are completely useless for setting persistent profiles
as the numbers can change between boots or display configurations.
dvd-browser
This script uses the lsdvd
commandline utility to allow users to view and select titles for DVDs from directly within mpv. The browser is interractive and allows for both playing the selected title, or appending it to the playlist. It is designed to be used stand-alone, or as an addon for file-browser. It also has automatic playlist support for DVDs.
editions-notification
Prints a message on the OSD if editions are found in the file, and temporarily switches the osd-playing-message to the editions-list property when switching. This makes it easier to tell the number and names while navigating editions.
file-browser
A universal no-dependency file browser that uses mpv's OSD.
ftp-compat
Changes some options when using the ftp protocol for better user experience
keep-session
Automatically saves the current playlist on exit and allows the user to reload it next time they boot mpv
music-mode
Switches to a music profile when an audio file is being played and switches back when a non-audio file is played
onedrive-hook
Automatically converts a onedrive share link into a direct path which mpv can play, Windows only.
open-file
Uses mpv-user-input to create an open file dialogue box.
ordered-chapters-playlist
A script to point the player towards an ordered chapters playlist for devices which don't have direct access to their file systems.
pause-indicator
Prints a pause icon in the middle of the screen when mpv is paused
playlist-shuffle
shuffles the playlist and moves the current file to the start of the playlist
profile-command
Parses a script-opt and sends it as a command. Allows input commands to be sent via profiles.
read-file
An API that provides scripts with a universal interface for reading text files. This allows scripts to easily read network files over a variety of protocols.
save-playlist
A script for saving m3u playlists based on mpvs current internal playlist. Users can set the name and directory to save the file in the initial script message, or can enter custom strings in the osd.
This script requires mpv-user-input.
scroll-list
A lua module to easily allow the creation of interactive scrollable lists.
search-page
Allows in-player searching of keybinds, commands, properties, and options, and displays the results on the OSD.
Requires scroll-list and user-input.
segment-linking
Implements support for Matroska hard segment linking. This is not the same as ordered chapters, which mpv already supports natively.
show-errors
Prints error messages onto the OSD
sub-select
Allows you to configure advanced subtitle track selection based on the current audio track and the names and language of the subtitle tracks.
syncplay-compat
Changes some settings to work well with Syncplay. Currently designed to provide support for local playlists.
temp-profiles
Allows you to apply a profile with a timeout, after which another profile is called to revert the changes. Works well with osc layout changes.
user-input
An API to allow scripts to request text input from the user over the OSD. The script is built around a modified version of mpv's console.lua, so supports almost all the same keybinds.
vars
This script allows users to set custom variables which can be used in commands and profiles.
youtube-search
A script that allows users to search and open youtube results from within mpv. Requires scroll-list, user-input, curl, and a youtube API key. Alternatively, an Invidious frontend can be used for searches without requiring an API key. See the file header for details.