---
youtube-dl is unmaintained and rapidly becoming less useful given that
the websites it extracts from are a moving target. This pulls a patch
from mpv's upcoming release which adds yt-dlp support, which is already
packaged in aports.
community/mpv/APKBUILD | 4 +-
community/mpv/yt-dlp.patch | 139 +++++++++++++++++++++++++++++++++++++
2 files changed, 142 insertions(+), 1 deletion(-)
create mode 100644 community/mpv/yt-dlp.patch
diff --git a/community/mpv/APKBUILD b/community/mpv/APKBUILD
index f043bba03f..82cc6f2e58 100644
--- a/community/mpv/APKBUILD
@@ -5,7 +5,7 @@
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=mpv
pkgver=0.33.1
-pkgrel=5
+pkgrel=6
pkgdesc="Video player based on MPlayer/mplayer2"
url="https://mpv.io/"
arch="all"
@@ -63,6 +63,7 @@ subpackages="
"
source="mpv-$pkgver.tar.gz::https://github.com/mpv-player/mpv/archive/v$pkgver.tar.gz
placebo_upstream_api_changes.patch
+ yt-dlp.patch
"
# secfixes:
@@ -132,4 +133,5 @@ zshcomp() {
sha512sums="
99d6c40d18c5cf83814b44ec6d8eade229800c5b51a734c9bbe831c3aeb95f8931124c94f6ae2360ffff62053c163bc3c55b254df021e005b350ebc3df7e952b mpv-0.33.1.tar.gz
92833a516fe995289a4de40703bdf57925d86d644404a4c37b6455d952605a83872898575ae0b44432a1eeb178476079ac53ccb5487cbb9b2704fbcd460fa4ad placebo_upstream_api_changes.patch
+400f3f2aca612b76ca49214a5dd2e5c540df9691cfc663c48d0b104fb547931925232bc5f4c5a5c9aa87747b0122dc22f188122a98f41df6da250b787e323e1d yt-dlp.patch
"
diff --git a/community/mpv/yt-dlp.patch b/community/mpv/yt-dlp.patch
new file mode 100644
index 0000000000..80b8a1bd27
--- /dev/null
@@ -0,0 +1,139 @@
+From d1c92bfd79ef81ac804fcc20aee2ed24e8d587aa Mon Sep 17 00:00:00 2001
+From: Guido Cella <guido@guidocella.xyz>
+Date: Fri, 17 Sep 2021 09:37:09 +0200
+Subject: [PATCH] ytdl_hook.lua: search for yt-dlp by default
+
+Because youtube-dl is inactive and the yt-dlp fork is becoming more
+popular, make mpv use yt-dlp without any extra configuration.
+
+yt-dlp is ordered before youtube-dl because it's more obscure, so users
+who have yt-dlp installed are more likely to want to use it rather than
+youtube-dl.
+
+Fixes #9208.
+---
+ DOCS/man/options.rst | 8 +++--
+ player/lua/ytdl_hook.lua | 66 +++++++++++++++++++++++++++++-----------
+ 2 files changed, 53 insertions(+), 21 deletions(-)
+
+diff --git a/DOCS/man/options.rst b/DOCS/man/options.rst
+index c216f88edef..34d29db083a 100644
+--- a/DOCS/man/options.rst
++++ b/DOCS/man/options.rst
+@@ -995,9 +995,11 @@ Program Behavior
+ no). It's disabled ("no") by default for performance reasons.
+
+ ``ytdl_path=youtube-dl``
+- Configure path to youtube-dl executable or a compatible fork's.
+- The default "youtube-dl" looks for the executable in PATH. In a Windows
+- environment the suffix extension ".exe" is always appended.
++ Configure paths to youtube-dl's executable or a compatible fork's. The
++ paths should be separated by : on Unix and ; on Windows. mpv looks in
++ order for the configured paths in PATH and in mpv's config directory.
++ The defaults are "yt-dlp", "yt-dlp_x86" and "youtube-dl". On Windows
++ the suffix extension ".exe" is always appended.
+
+ .. admonition:: Why do the option names mix ``_`` and ``-``?
+
+diff --git a/player/lua/ytdl_hook.lua b/player/lua/ytdl_hook.lua
+index b9cb04645e4..27d39afb753 100644
+--- a/player/lua/ytdl_hook.lua
++++ b/player/lua/ytdl_hook.lua
+@@ -8,11 +8,12 @@ local o = {
+ use_manifests = false,
+ all_formats = false,
+ force_all_formats = true,
+- ytdl_path = "youtube-dl",
++ ytdl_path = "",
+ }
+
+ local ytdl = {
+- path = nil,
++ path = "",
++ paths_to_search = {"yt-dlp", "yt-dlp_x86", "youtube-dl"},
+ searched = false,
+ blacklisted = {}
+ }
+@@ -88,7 +89,13 @@ local function map_codec_to_mpv(codec)
+ return nil
+ end
+
++local function platform_is_windows()
++ return package.config:sub(1,1) == "\\"
++end
++
+ local function exec(args)
++ msg.debug("Running: " .. table.concat(args, " "))
++
+ local ret = mp.command_native({name = "subprocess",
+ args = args,
+ capture_stdout = true,
+@@ -718,20 +725,6 @@ end
+ function run_ytdl_hook(url)
+ local start_time = os.clock()
+
+- -- check for youtube-dl in mpv's config dir
+- if not (ytdl.searched) then
+- local exesuf = (package.config:sub(1,1) == '\\') and '.exe' or ''
+- local ytdl_mcd = mp.find_config_file(o.ytdl_path .. exesuf)
+- if ytdl_mcd == nil then
+- msg.verbose("No youtube-dl found with path "..o.ytdl_path..exesuf.." in config directories")
+- ytdl.path = o.ytdl_path
+- else
+- msg.verbose("found youtube-dl at: " .. ytdl_mcd)
+- ytdl.path = ytdl_mcd
+- end
+- ytdl.searched = true
+- end
+-
+ -- strip ytdl://
+ if (url:find("ytdl://") == 1) then
+ url = url:sub(8)
+@@ -786,8 +779,45 @@ function run_ytdl_hook(url)
+ end
+ table.insert(command, "--")
+ table.insert(command, url)
+- msg.debug("Running: " .. table.concat(command,' '))
+- local es, json, result, aborted = exec(command)
++
++ local es, json, result, aborted
++ if ytdl.searched then
++ es, json, result, aborted = exec(command)
++ else
++ local separator = platform_is_windows() and ";" or ":"
++ if o.ytdl_path:match("[^" .. separator .. "]") then
++ ytdl.paths_to_search = {}
++ for path in o.ytdl_path:gmatch("[^" .. separator .. "]+") do
++ table.insert(ytdl.paths_to_search, path)
++ end
++ end
++
++ for _, path in pairs(ytdl.paths_to_search) do
++ -- search for youtube-dl in mpv's config dir
++ local exesuf = platform_is_windows() and ".exe" or ""
++ local ytdl_cmd = mp.find_config_file(path .. exesuf)
++ if ytdl_cmd then
++ msg.verbose("Found youtube-dl at: " .. ytdl_cmd)
++ ytdl.path = ytdl_cmd
++ command[1] = ytdl.path
++ es, json, result, aborted = exec(command)
++ break
++ else
++ msg.verbose("No youtube-dl found with path " .. path .. exesuf .. " in config directories")
++ command[1] = path
++ es, json, result, aborted = exec(command)
++ if result.error_string == "init" then
++ msg.verbose("youtube-dl with path " .. path .. exesuf .. " not found in PATH or not enough permissions")
++ else
++ msg.verbose("Found youtube-dl with path " .. path .. exesuf .. " in PATH")
++ ytdl.path = path
++ break
++ end
++ end
++ end
++
++ ytdl.searched = true
++ end
+
+ if aborted then
+ return
--
2.33.0