gnu: yt-dlp: Don't inherit from youtube-dl.
yt-dlp has diverged from youtube-dl sufficiently that package inheritance hinders package maintenance. * gnu/packages/video.scm (yt-dlp): Don't inherit from YOUTUBE-DL. [build-system, synopsis, license]: New fields. [arguments]: Adjust accordingly. [inputs]: Add FFMPEG. Change-Id: I14c4cfb6a75ba0421c62eac778072ab3e76c72a1master
parent
ddbbb78786
commit
66e9ce2bae
|
@ -3136,7 +3136,7 @@ YouTube.com and many more sites.")
|
|||
(license license:public-domain)))
|
||||
|
||||
(define-public yt-dlp
|
||||
(package/inherit youtube-dl
|
||||
(package
|
||||
(name "yt-dlp")
|
||||
(version "2023.10.13")
|
||||
(source
|
||||
|
@ -3148,51 +3148,52 @@ YouTube.com and many more sites.")
|
|||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "1cy8cpqwq6yfsbrnln3qqp9lsjckn20m6w7b890ha7jahyir5m1n"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments youtube-dl)
|
||||
((#:tests? _) (not (%current-target-system)))
|
||||
((#:phases phases)
|
||||
#~(modify-phases #$phases
|
||||
;; See the comment for the corresponding phase in youtube-dl.
|
||||
(replace 'default-to-the-ffmpeg-input
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(substitute* "yt_dlp/postprocessor/ffmpeg.py"
|
||||
(("location = self.get_param(.*)$")
|
||||
(string-append
|
||||
"location = '"
|
||||
(dirname (search-input-file inputs "bin/ffmpeg"))
|
||||
"'\n")))))
|
||||
(replace 'build-generated-files
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(if (assoc-ref inputs "pandoc")
|
||||
(invoke "make"
|
||||
"PYTHON=python"
|
||||
"yt-dlp"
|
||||
"yt-dlp.1"
|
||||
"completions")
|
||||
(invoke "make"
|
||||
"PYTHON=python"
|
||||
"yt-dlp"
|
||||
"completions"))))
|
||||
(replace 'fix-the-data-directories
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((prefix (assoc-ref outputs "out")))
|
||||
(substitute* "setup.py"
|
||||
(("'etc/")
|
||||
(string-append "'" prefix "/etc/"))
|
||||
(("'share/")
|
||||
(string-append "'" prefix "/share/"))))))
|
||||
(delete 'install-completion)
|
||||
(replace 'check
|
||||
(lambda* (#:key tests? #:allow-other-keys)
|
||||
(when tests?
|
||||
(invoke "pytest" "-k" "not download"))))))))
|
||||
(inputs (modify-inputs (package-inputs youtube-dl)
|
||||
(append python-brotli
|
||||
python-certifi
|
||||
python-mutagen
|
||||
python-pycryptodomex
|
||||
python-websockets)))
|
||||
`(#:tests? ,(not (%current-target-system))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
;; See <https://issues.guix.gnu.org/43418#5>.
|
||||
;; ffmpeg is big but required to request free formats from, e.g.,
|
||||
;; YouTube so pull it in unconditionally. Continue respecting the
|
||||
;; --ffmpeg-location argument.
|
||||
(add-after 'unpack 'default-to-the-ffmpeg-input
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(substitute* "yt_dlp/postprocessor/ffmpeg.py"
|
||||
(("location = self.get_param(.*)$")
|
||||
(string-append
|
||||
"location = '"
|
||||
(dirname (search-input-file inputs "bin/ffmpeg"))
|
||||
"'\n")))))
|
||||
(add-before 'build 'build-generated-files
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(if (assoc-ref inputs "pandoc")
|
||||
(invoke "make"
|
||||
"PYTHON=python"
|
||||
"yt-dlp"
|
||||
"yt-dlp.1"
|
||||
"completions")
|
||||
(invoke "make"
|
||||
"PYTHON=python"
|
||||
"yt-dlp"
|
||||
"completions"))))
|
||||
(add-before 'install 'fix-the-data-directories
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((prefix (assoc-ref outputs "out")))
|
||||
(substitute* "setup.py"
|
||||
(("'etc/")
|
||||
(string-append "'" prefix "/etc/"))
|
||||
(("'share/")
|
||||
(string-append "'" prefix "/share/"))))))
|
||||
(replace 'check
|
||||
(lambda* (#:key tests? #:allow-other-keys)
|
||||
(when tests?
|
||||
(invoke "pytest" "-k" "not download")))))))
|
||||
(inputs (list ffmpeg python-brotli
|
||||
python-certifi
|
||||
python-mutagen
|
||||
python-pycryptodomex
|
||||
python-websockets))
|
||||
(native-inputs
|
||||
(append
|
||||
;; To generate the manpage.
|
||||
|
@ -3200,13 +3201,15 @@ YouTube.com and many more sites.")
|
|||
(list pandoc)
|
||||
'())
|
||||
(list python-pytest zip)))
|
||||
(synopsis "Download videos from YouTube.com and other sites")
|
||||
(description
|
||||
"yt-dlp is a small command-line program to download videos from
|
||||
YouTube.com and many more sites. It is a fork of youtube-dl with a
|
||||
focus on adding new features while keeping up-to-date with the
|
||||
original project.")
|
||||
(properties '((release-monitoring-url . "https://pypi.org/project/yt-dlp/")))
|
||||
(home-page "https://github.com/yt-dlp/yt-dlp")))
|
||||
(home-page "https://github.com/yt-dlp/yt-dlp")
|
||||
(license license:public-domain)))
|
||||
|
||||
(define-public you-get
|
||||
(package
|
||||
|
|
Reference in New Issue