Home

Awesome

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 field of the shared_script_properties and user-data properties. 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.

user-data-loader

A script that allows the mpv user-data property to be set at launch and runtime using config files and script-opts.

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.