Received: from out2.migadu.com (out2.migadu.com [188.165.223.204]) by nld3-dev1.alpinelinux.org (Postfix) with ESMTPS id 35FF67807A0 for <~alpine/aports@lists.alpinelinux.org>; Thu, 7 Oct 2021 10:59:33 +0000 (UTC) X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cmpwn.com; s=key1; t=1633603902; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=HVMipTay4J1Vx2DV7EK19ozSbZdItg16GIKY7A9xKCE=; b=ZZRZVqpg2Ubokp7iyWN6nhrHt8ohrX1VaJKs/qmnZ3p3lIpDRCZFpo2YV9mwrTdJMOPS3w S0EOKJbLM/wxdeOP5VVk59FKpSzxZi9kweykxc0K1xbV4n/zF7LfUYcRpr4mTCIOkoaDRf ci6aErSooYiYWVkuPn/pcv9UZtQvJoq1V90hksE9cKhDgt7G+lSuHtSdAYdn2PO2zTwgUT i0fYfIBwDeVr+srLS+I4S3OkYiqSTS6c3GRy4Jj8Soha0mlMdXEaZG0M1NEdsaWKgoFjQd rV7WKJ4Ybm7W/DDvDopCUt5uAqqH4KjlhciQdgl1146KYb7K7ixtgs2wlW6XZw== From: Drew DeVault To: ~alpine/aports@lists.alpinelinux.org Cc: Drew DeVault Subject: [PATCH] community/mpv: add yt-dlp patch Date: Thu, 7 Oct 2021 12:51:38 +0200 Message-Id: <20211007105138.21407-1-sir@cmpwn.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Migadu-Flow: FLOW_OUT X-Migadu-Auth-User: sir@cmpwn.com --- 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 +++ b/community/mpv/APKBUILD @@ -5,7 +5,7 @@ # Maintainer: Natanael Copa 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 +++ b/community/mpv/yt-dlp.patch @@ -0,0 +1,139 @@ +From d1c92bfd79ef81ac804fcc20aee2ed24e8d587aa Mon Sep 17 00:00:00 2001 +From: Guido Cella +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