A Lua script that replicates and extends the YouTube "Add to Queue" feature for mpv
- Interactive Queue Management: A menu-driven interface for adding, removing, and rearranging videos in your queue
- yt-dlp Integration: Gathers video info and allows downloading with any link supported by yt-dlp
- Internal Playlist Integration: Seamlessly integrates with mpv's internal playlist for a unified playback experience
- Customizable Keybindings: Assign your preferred hotkeys to interact with the currently playing video and queue
This script requires the following software to be installed on the system
- One of xclip, wl-clipboard, or any command-line utility that can paste from the system clipboard
- Windows users can utilize
Get-Clipboard
from powershell by setting theclipboard_command
inmpv-youtube-queue.conf
file to the following:clipboard_command=powershell -command Get-Clipboard
- Windows users can utilize
- yt-dlp
- Copy
mpv-youtube-queue.lua
script to your~~/scripts
directory~/.config/mpv/scripts
on Linux%APPDATA%\mpv\scripts
on Windows
- Optionally copy
mpv-youtube-queue.conf
to the~~/script-opts
directory~/.config/mpv/script-opts
on Linux%APPDATA%\mpv\script-opts
on Windows to customize the script configuration as described in the next section
add_to_queue - ctrl+a
: Add a video in the clipboard to the queuedownload_current_video - ctrl+d
: Download the currently playing videodownload_selected_video - ctrl+D
: Download the currently selected video in the queuemove_cursor_down - ctrl+j
: Move the cursor down one row in the queuemove_cursor_up - ctrl+k
- Move the cursor up one row in the queueload_queue - ctrl+l
- Appends the videos from the most recent save point to the queuemove_video - ctrl+m
: Mark/move the selected video in the queueplay_next_in_queue - ctrl+n
: Play the next video in the queueopen_video_in_browser - ctrl+o
: Open the currently playing video in the browseropen_channel_in_browser - ctrl+O
: Open the channel page for the currently playing video in the browserplay_previous_in_queue - ctrl+p
: Play the previous video in the queueprint_current_video - ctrl+P
: Print the name and channel of the currently playing video to the OSDprint_queue - ctrl+q
: Print the contents of the queue to the OSDsave_queue - ctrl+s
: Saves the queue using the chosen method indefault_save_method
save_queue_alt - ctrl+S
: Saves the queue using the method not chosen indefault_save_method
remove_from_queue - ctrl+x
: Remove the currently selected video from the queueplay_selected_video - ctrl+ENTER
: Play the currently selected video in the queue
default_save_method - unwatched
: The default method to use when saving the queue. Valid options areunwatched
orall
. Defaults tounwatched
- Whichever option is chosen is the default method for the
save_queue
binding, and the other method will be bound tosave_queue_alt
- Whichever option is chosen is the default method for the
browser - firefox
: The browser to use when opening a video or channel pageclipboard_command - xclip -o
: The command to use to get the contents of the clipboardcursor_icon - ➤
: The icon to use for the cursordisplay_limit - 10
: The maximum amount of videos to show on the OSD at oncedownload_directory - ~/videos/YouTube
: The directory to use when downloading a videodownload_quality 720p
: The maximum download qualitydownloader - curl
: The name of the program to use to download the videofont_name - JetBrains Mono
: The name of the font to usefont_size - 12
: Size of the fontmarked_icon - ⇅
: The icon to use to mark a video as ready to be moved in the queuemenu_timeout - 5
: The number of seconds until the menu times outshow_errors - yes
: Show error messages on the OSDytdlp_file_format - mp4
: The preferred file format for downloaded videosytdlp_output_template - %(uploader)s/%(title)s.%(ext)s
: The yt-dlp output template string- Full path with the default
download_directory
is:~/videos/YouTube/<uploader>/<title>.<ext>
- Full path with the default
use_history_db - no
: Enable watch history tracking through integration with mpv-youtube-queue-serverbackend_host
: ip or hostname of the backend serverbackend_port
: port to connect to for the backend server
This project is licensed under the terms of the GPLv3 license.