Add mpv
This commit is contained in:
1
main.yml
1
main.yml
@@ -1,5 +1,6 @@
|
|||||||
- hosts: localhost
|
- hosts: localhost
|
||||||
connection: local
|
connection: local
|
||||||
roles:
|
roles:
|
||||||
|
- mpv
|
||||||
- arkenfox
|
- arkenfox
|
||||||
- dwm
|
- dwm
|
||||||
|
143
roles/mpv/files/mpv.conf
Normal file
143
roles/mpv/files/mpv.conf
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
#
|
||||||
|
# Example mpv configuration file
|
||||||
|
#
|
||||||
|
# Warning:
|
||||||
|
#
|
||||||
|
# The commented example options usually do _not_ set the default values. Call
|
||||||
|
# mpv with --list-options to see the default values for most options. There is
|
||||||
|
# no builtin or example mpv.conf with all the defaults.
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Configuration files are read system-wide from /etc/mpv or /usr/local/etc/mpv,
|
||||||
|
# and per-user from ~/.config/mpv, where per-user settings override
|
||||||
|
# system-wide settings, all of which are overridden by the command line.
|
||||||
|
#
|
||||||
|
# Configuration file settings and the command line options use the same
|
||||||
|
# underlying mechanisms. Most options can be put into the configuration file
|
||||||
|
# by dropping the preceding '--'. See the man page for a complete list of
|
||||||
|
# options.
|
||||||
|
#
|
||||||
|
# Lines starting with '#' are comments and are ignored.
|
||||||
|
#
|
||||||
|
# See the CONFIGURATION FILES section in the man page
|
||||||
|
# for a detailed description of the syntax.
|
||||||
|
#
|
||||||
|
# Profiles should be placed at the bottom of the configuration file to ensure
|
||||||
|
# that settings wanted as defaults are not restricted to specific profiles.
|
||||||
|
|
||||||
|
##################
|
||||||
|
# video settings #
|
||||||
|
##################
|
||||||
|
|
||||||
|
# Start in fullscreen mode by default.
|
||||||
|
#fs=yes
|
||||||
|
|
||||||
|
# force starting with centered window
|
||||||
|
#geometry=50%:50%
|
||||||
|
|
||||||
|
# don't allow a new window to have a size larger than 90% of the screen size
|
||||||
|
#autofit-larger=90%x90%
|
||||||
|
|
||||||
|
# Do not close the window on exit.
|
||||||
|
#keep-open=yes
|
||||||
|
|
||||||
|
# Do not wait with showing the video window until it has loaded. (This will
|
||||||
|
# resize the window once video is loaded. Also always shows a window with
|
||||||
|
# audio.)
|
||||||
|
#force-window=immediate
|
||||||
|
|
||||||
|
# Disable the On Screen Controller (OSC).
|
||||||
|
#osc=no
|
||||||
|
|
||||||
|
# Keep the player window on top of all other windows.
|
||||||
|
#ontop=yes
|
||||||
|
|
||||||
|
# Specify fast video rendering preset (for --vo=<gpu|gpu-next> only)
|
||||||
|
# Recommended for mobile devices or older hardware with limited processing power
|
||||||
|
#profile=fast
|
||||||
|
|
||||||
|
# Specify high quality video rendering preset (for --vo=<gpu|gpu-next> only)
|
||||||
|
# Offers superior image fidelity and visual quality for an enhanced viewing
|
||||||
|
# experience on capable hardware
|
||||||
|
#profile=high-quality
|
||||||
|
|
||||||
|
# Force video to lock on the display's refresh rate, and change video and audio
|
||||||
|
# speed to some degree to ensure synchronous playback - can cause problems
|
||||||
|
# with some drivers and desktop environments.
|
||||||
|
#video-sync=display-resample
|
||||||
|
|
||||||
|
# Enable hardware decoding if available. Often, this does not work with all
|
||||||
|
# video outputs, but should work well with default settings on most systems.
|
||||||
|
# If performance or energy usage is an issue, forcing the vdpau or vaapi VOs
|
||||||
|
# may or may not help.
|
||||||
|
#hwdec=auto
|
||||||
|
|
||||||
|
##################
|
||||||
|
# audio settings #
|
||||||
|
##################
|
||||||
|
|
||||||
|
# Specify default audio device. You can list devices with: --audio-device=help
|
||||||
|
# The option takes the device string (the stuff between the '...').
|
||||||
|
#audio-device=alsa/default
|
||||||
|
|
||||||
|
# Do not filter audio to keep pitch when changing playback speed.
|
||||||
|
#audio-pitch-correction=no
|
||||||
|
|
||||||
|
# Output 5.1 audio natively, and upmix/downmix audio with a different format.
|
||||||
|
#audio-channels=5.1
|
||||||
|
# Disable any automatic remix, _if_ the audio output accepts the audio format.
|
||||||
|
# of the currently played file. See caveats mentioned in the manpage.
|
||||||
|
# (The default is "auto-safe", see manpage.)
|
||||||
|
#audio-channels=auto
|
||||||
|
|
||||||
|
##################
|
||||||
|
# other settings #
|
||||||
|
##################
|
||||||
|
|
||||||
|
# Pretend to be a web browser. Might fix playback with some streaming sites,
|
||||||
|
# but also will break with shoutcast streams.
|
||||||
|
#user-agent="Mozilla/5.0"
|
||||||
|
|
||||||
|
# cache settings
|
||||||
|
#
|
||||||
|
# Use a large seekable RAM cache even for local input.
|
||||||
|
#cache=yes
|
||||||
|
#
|
||||||
|
# Use extra large RAM cache (needs cache=yes to make it useful).
|
||||||
|
#demuxer-max-bytes=500M
|
||||||
|
#demuxer-max-back-bytes=100M
|
||||||
|
#
|
||||||
|
# Disable the behavior that the player will pause if the cache goes below a
|
||||||
|
# certain fill size.
|
||||||
|
#cache-pause=no
|
||||||
|
#
|
||||||
|
# Store cache payload on the hard disk instead of in RAM. (This may negatively
|
||||||
|
# impact performance unless used for slow input such as network.)
|
||||||
|
#cache-dir=~/.cache/
|
||||||
|
#cache-on-disk=yes
|
||||||
|
|
||||||
|
# Display English subtitles if available.
|
||||||
|
#slang=en
|
||||||
|
|
||||||
|
# Play Finnish audio if available, fall back to English otherwise.
|
||||||
|
#alang=fi,en
|
||||||
|
|
||||||
|
# Change subtitle encoding. For Arabic subtitles use 'cp1256'.
|
||||||
|
# If the file seems to be valid UTF-8, prefer UTF-8.
|
||||||
|
# (You can add '+' in front of the codepage to force it.)
|
||||||
|
#sub-codepage=cp1256
|
||||||
|
|
||||||
|
# You can also include other configuration files.
|
||||||
|
#include=/path/to/the/file/you/want/to/include
|
||||||
|
|
||||||
|
############
|
||||||
|
# Profiles #
|
||||||
|
############
|
||||||
|
|
||||||
|
# The options declared as part of profiles override global default settings,
|
||||||
|
# but only take effect when the profile is active.
|
||||||
|
|
||||||
|
# The following profile can be enabled on the command line with: --profile=eye-cancer
|
||||||
|
|
||||||
|
#[eye-cancer]
|
||||||
|
#sharpen=5
|
78
roles/mpv/files/scripts/ytdlautoformat.lua
Normal file
78
roles/mpv/files/scripts/ytdlautoformat.lua
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
--[[
|
||||||
|
|
||||||
|
A simple mpv script to automatically change ytdl-format (yt-dlp)
|
||||||
|
for specified domains/streams.
|
||||||
|
|
||||||
|
Info: https://github.com/Samillion/mpv-ytdlautoformat
|
||||||
|
|
||||||
|
--]]
|
||||||
|
|
||||||
|
local options = {
|
||||||
|
-- Which domains should ytdl-format change on?
|
||||||
|
domains = {
|
||||||
|
"youtu.be", "youtube.com", "www.youtube.com",
|
||||||
|
"twitch.tv", "www.twitch.tv",
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Set maximum video quality (on load/start)
|
||||||
|
-- 240, 360, 480, 720, 1080, 1440, 2160, 4320
|
||||||
|
-- use 0 to ignore quality
|
||||||
|
quality = 720,
|
||||||
|
|
||||||
|
-- Prefered codec. avc, hevc, vp9, av1 or novp9
|
||||||
|
-- novp9: accept any codec except vp9
|
||||||
|
codec = "novp9",
|
||||||
|
|
||||||
|
-- rare: to avoid mpv shutting down if nothing is found with the specified format
|
||||||
|
-- if true, and format not found, it'll use fallback_format
|
||||||
|
fallback = true,
|
||||||
|
fallback_format = "bv+ba/b",
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Do not edit beyond this point
|
||||||
|
local msg = require "mp.msg"
|
||||||
|
|
||||||
|
local function create_set(list)
|
||||||
|
local set = {}
|
||||||
|
for _, v in pairs(list) do
|
||||||
|
set[type(v) == "string" and v:lower() or v] = true
|
||||||
|
end
|
||||||
|
return set
|
||||||
|
end
|
||||||
|
|
||||||
|
local function update_ytdl_format()
|
||||||
|
local codec_list = {
|
||||||
|
["avc"] = "[vcodec~='^(avc|h264)']",
|
||||||
|
["hevc"] = "[vcodec~='^(hevc|h265)']",
|
||||||
|
["vp9"] = "[vcodec~='^(vp0?9)']",
|
||||||
|
["av1"] = "[vcodec~='^(av01)']",
|
||||||
|
["novp9"] = "[vcodec!~='^(vp0?9)']",
|
||||||
|
}
|
||||||
|
|
||||||
|
local format = {
|
||||||
|
quality = options.quality > 0 and "[height<=?" .. options.quality .. "]" or "",
|
||||||
|
codec = codec_list[options.codec:lower()] or "",
|
||||||
|
fallback = options.fallback and " / " .. options.fallback_format or "",
|
||||||
|
}
|
||||||
|
|
||||||
|
local ytdl_custom = "bv" .. format.quality .. format.codec .. "+ba/b" .. format.quality .. format.fallback
|
||||||
|
|
||||||
|
mp.set_property("file-local-options/ytdl-format", ytdl_custom)
|
||||||
|
msg.info("Changed ytdl-format to: " .. ytdl_custom)
|
||||||
|
end
|
||||||
|
|
||||||
|
local list = create_set(options.domains)
|
||||||
|
|
||||||
|
mp.add_hook("on_load", 9, function()
|
||||||
|
local path = mp.get_property("path", "")
|
||||||
|
|
||||||
|
if path:match("^%a+://") then
|
||||||
|
local hostname = path:lower():match("^%a+://([^/]+)/?") or ""
|
||||||
|
local domain = hostname:match("([%w%-]+%.%w+%.%w+)$") or hostname:match("([%w%-]+%.%w+)$") or ""
|
||||||
|
|
||||||
|
if list[domain] then
|
||||||
|
msg.info("Domain match found: " .. domain)
|
||||||
|
update_ytdl_format()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end)
|
15
roles/mpv/tasks/main.yml
Normal file
15
roles/mpv/tasks/main.yml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
- name: Install mpv
|
||||||
|
ansible.builtin.package:
|
||||||
|
name: mpv
|
||||||
|
state: present
|
||||||
|
become: true
|
||||||
|
|
||||||
|
- name: Install mpv.conf
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: mpv.conf
|
||||||
|
dest: "/home/{{ username }}/.config/mpv/mpv.conf"
|
||||||
|
|
||||||
|
- name: Install scripts
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: scripts
|
||||||
|
dest: "/home/{{ username }}/.config/mpv/"
|
Reference in New Issue
Block a user