about summary refs log tree commit diff
path: root/nixpkgs/pkgs/tools/misc/yt-dlp/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/tools/misc/yt-dlp/default.nix')
-rw-r--r--nixpkgs/pkgs/tools/misc/yt-dlp/default.nix74
1 files changed, 74 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/tools/misc/yt-dlp/default.nix b/nixpkgs/pkgs/tools/misc/yt-dlp/default.nix
new file mode 100644
index 000000000000..9cb2d1dea0da
--- /dev/null
+++ b/nixpkgs/pkgs/tools/misc/yt-dlp/default.nix
@@ -0,0 +1,74 @@
+{ lib
+, buildPythonPackage
+, fetchPypi
+, ffmpeg
+, rtmpdump
+, phantomjs2
+, atomicparsley
+, pycryptodome
+, websockets
+, mutagen
+, ffmpegSupport ? true
+, rtmpSupport ? true
+, phantomjsSupport ? false
+, hlsEncryptedSupport ? true
+}:
+
+buildPythonPackage rec {
+  pname = "yt-dlp";
+  # The websites yt-dlp deals with are a very moving target. That means that
+  # downloads break constantly. Because of that, updates should always be backported
+  # to the latest stable release.
+  version = "2021.9.2";
+
+  src = fetchPypi {
+    inherit pname;
+    version = builtins.replaceStrings [ ".0" ] [ "." ] version;
+    sha256 = "sha256-yn53zbBVuiaD31sIB6qxweEgy+AsjzXZ0yk9lNva6mM=";
+  };
+
+  # build_lazy_extractors assumes this directory exists but it is not present in
+  # the PyPI package
+  postPatch = ''
+    mkdir -p ytdlp_plugins/extractor
+  '';
+
+  propagatedBuildInputs = [ websockets mutagen ]
+    ++ lib.optional hlsEncryptedSupport pycryptodome;
+
+  # Ensure these utilities are available in $PATH:
+  # - ffmpeg: post-processing & transcoding support
+  # - rtmpdump: download files over RTMP
+  # - atomicparsley: embedding thumbnails
+  makeWrapperArgs =
+    let
+      packagesToBinPath = [ atomicparsley ]
+        ++ lib.optional ffmpegSupport ffmpeg
+        ++ lib.optional rtmpSupport rtmpdump
+        ++ lib.optional phantomjsSupport phantomjs2;
+    in
+    [ ''--prefix PATH : "${lib.makeBinPath packagesToBinPath}"'' ];
+
+  setupPyBuildFlags = [
+    "build_lazy_extractors"
+  ];
+
+  # Requires network
+  doCheck = false;
+
+  meta = with lib; {
+    homepage = "https://github.com/yt-dlp/yt-dlp/";
+    description = "Command-line tool to download videos from YouTube.com and other sites (youtube-dl fork)";
+    changelog = "https://github.com/yt-dlp/yt-dlp/raw/${version}/Changelog.md";
+    longDescription = ''
+      yt-dlp is a youtube-dl fork based on the now inactive youtube-dlc.
+
+      youtube-dl is a small, Python-based command-line program
+      to download videos from YouTube.com and a few more sites.
+      youtube-dl is released to the public domain, which means
+      you can modify it, redistribute it or use it however you like.
+    '';
+    license = licenses.unlicense;
+    maintainers = with maintainers; [ mkg20001 ];
+  };
+}