When youtube-dl is not available in PATH, use yt-dlp instead
authorJoey Hess <joeyh@joeyh.name>
Mon, 21 Nov 2022 18:39:26 +0000 (14:39 -0400)
committerJoey Hess <joeyh@joeyh.name>
Mon, 21 Nov 2022 18:40:33 +0000 (14:40 -0400)
Debian is going to drop youtube-dl which is not active upstream, and yt-dlp
is the replacement. This will make it be used if youtube-dl gets removed.

If an old version of youtube-dl remains installed, git-annex will still use
it. That might not be desirable, but changing git-annex to use yt-dlp in
preference to youtube-dl when both are installed risks breaking when
the user has annex.youtube-dl-options set to something that is supported
by youtube-dl, but not by yt-dlp.

Sponsored-by: Boyd Stephen Smith Jr. on Patreon
Annex/YoutubeDl.hs
CHANGELOG
debian/control
doc/git-annex.mdwn

index e466f01eba2b171761891bb52ab4f3a600df3165..ba050d4024dcefd45b1cc9f31953bd64a12fc9f1 100644 (file)
@@ -249,8 +249,9 @@ youtubeDlOpts addopts = do
        return (opts ++ addopts)
 
 youtubeDlCommand :: Annex String
-youtubeDlCommand = fromMaybe "youtube-dl" . annexYoutubeDlCommand 
-       <$> Annex.getGitConfig
+youtubeDlCommand = annexYoutubeDlCommand <$> Annex.getGitConfig >>= \case
+       Just c -> pure c
+       Nothing -> fromMaybe "yt-dlp" <$> liftIO (searchPath "youtube-dl")
 
 supportedScheme :: UrlOptions -> URLString -> Bool
 supportedScheme uo url = case parseURIRelaxed url of
index d193ceca8590b04d3ace2bd51dfe048d534a2ae2..78fa628e4f0ae904905aaece3e4eabd46d296090 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -4,6 +4,7 @@ git-annex (10.20221105) UNRELEASED; urgency=medium
   * Sped up the initial scan for annexed files by 21%.
   * init: Avoid scanning for annexed files, which can be lengthy in a
     large repository. Instead that scan is done on demand.
+  * When youtube-dl is not available in PATH, use yt-dlp instead.
 
  -- Joey Hess <id@joeyh.name>  Fri, 18 Nov 2022 12:58:06 -0400
 
index 762052186a3672630927a91c7e3344a4490f174f..ac28ca029c5a73351c0adc50af455d9fb767fdd5 100644 (file)
@@ -111,7 +111,7 @@ Recommends:
        lsof,
        gnupg,
        bind9-host,
-       youtube-dl,
+       yt-dlp,
        git-remote-gcrypt (>= 0.20130908-6),
        nocache,
        aria2,
index 5eca6600c8de4c4b62908a67572d858125a0715c..60811dce06ff31e0eeb50e521473a81d8fe517b8 100644 (file)
@@ -1719,8 +1719,8 @@ Remotes are configured using these settings in `.git/config`.
 
 * `annex.youtube-dl-options`
 
-  Options to pass to youtube-dl when using it to find the url to download
-  for a video.
+  Options to pass to youtube-dl (or yt-dlp) when using it to find the url
+  to download for a video.
 
   Some options may break git-annex's integration with youtube-dl. For
   example, the --output option could cause it to store files somewhere
@@ -1730,7 +1730,8 @@ Remotes are configured using these settings in `.git/config`.
 
 * `annex.youtube-dl-command`
 
-  Command to run for youtube-dl. Default is "youtube-dl".
+  Command to run for youtube-dl. Default is to use "youtube-dl" or 
+  if that is not available in the PATH, to use "yt-dlp".
 
 * `annex.aria-torrent-options`