From 5ae4146460f7897298809dab1ec6adf3b0be368c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Kr=C3=BCger?= Date: Tue, 10 Aug 2021 06:49:34 +0200 Subject: [PATCH 1/9] yt-dlp: init at 2021.07.21 (cherry picked from commit e40ceba3fc172b6610eb0da96384636e08a510e2) --- pkgs/tools/misc/yt-dlp/default.nix | 62 ++++++++++++++++++++++++++++++ pkgs/top-level/all-packages.nix | 4 ++ pkgs/top-level/python-packages.nix | 7 ++++ 3 files changed, 73 insertions(+) create mode 100644 pkgs/tools/misc/yt-dlp/default.nix diff --git a/pkgs/tools/misc/yt-dlp/default.nix b/pkgs/tools/misc/yt-dlp/default.nix new file mode 100644 index 00000000000..1deaef5eac4 --- /dev/null +++ b/pkgs/tools/misc/yt-dlp/default.nix @@ -0,0 +1,62 @@ +{ lib, fetchurl, buildPythonPackage +, zip, ffmpeg, rtmpdump, phantomjs2, atomicparsley, pycryptodome, pandoc +, fetchFromGitHub +, websockets, mutagen +, ffmpegSupport ? true +, rtmpSupport ? true +, phantomjsSupport ? false +, hlsEncryptedSupport ? true +, installShellFiles, makeWrapper }: + +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.07.21"; + + src = fetchFromGitHub { + owner = "yt-dlp"; + repo = "yt-dlp"; + rev = version; + sha256 = "ziOW52LJUBe0j7ru8GYgiUCE6YJeBTTjm+H6W8EZjuY="; + }; + + nativeBuildInputs = [ installShellFiles makeWrapper ]; + buildInputs = [ zip pandoc ]; + 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)"; + 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.publicDomain; + maintainers = with maintainers; [ mkg20001 ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 94dc6acf06a..e9d36c5a406 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -27796,6 +27796,10 @@ in youtube-dl-light = with python3Packages; toPythonApplication youtube-dl-light; + yt-dlp = with python3Packages; toPythonApplication yt-dlp; + + yt-dlp-light = with python3Packages; toPythonApplication yt-dlp-light; + youtube-viewer = perlPackages.WWWYoutubeViewer; ytalk = callPackage ../applications/networking/instant-messengers/ytalk { }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 6b9878b363d..648de7f8e88 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -9029,6 +9029,13 @@ in { phantomjsSupport = false; }; + yt-dlp = callPackage ../tools/misc/yt-dlp { }; + + yt-dlp-light = callPackage ../tools/misc/yt-dlp { + ffmpegSupport = false; + phantomjsSupport = false; + }; + yowsup = callPackage ../development/python-modules/yowsup { }; yq = callPackage ../development/python-modules/yq { From 035e4a2462f54d23a5c81a4ce50f2642dc078a90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Kr=C3=BCger?= Date: Tue, 10 Aug 2021 12:16:35 +0200 Subject: [PATCH 2/9] yt-dlp: 2021.07.21 -> 2021.08.02 --- pkgs/tools/misc/yt-dlp/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/misc/yt-dlp/default.nix b/pkgs/tools/misc/yt-dlp/default.nix index 1deaef5eac4..8f5e14a2403 100644 --- a/pkgs/tools/misc/yt-dlp/default.nix +++ b/pkgs/tools/misc/yt-dlp/default.nix @@ -13,13 +13,13 @@ buildPythonPackage rec { # 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.07.21"; + version = "2021.08.02"; src = fetchFromGitHub { owner = "yt-dlp"; repo = "yt-dlp"; rev = version; - sha256 = "ziOW52LJUBe0j7ru8GYgiUCE6YJeBTTjm+H6W8EZjuY="; + sha256 = "QEJKOZGVQNXLU8GfTbwBx2Zv3KO++ozTJcXLWxXA4hI="; }; nativeBuildInputs = [ installShellFiles makeWrapper ]; From 8cc518e2a1586684d1c19b7a1f90d35eeda24402 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandro=20J=C3=A4ckel?= Date: Tue, 24 Aug 2021 11:10:27 +0200 Subject: [PATCH 3/9] yt-dlp: 2021.08.02 -> 2021.08.10 --- pkgs/tools/misc/yt-dlp/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/tools/misc/yt-dlp/default.nix b/pkgs/tools/misc/yt-dlp/default.nix index 8f5e14a2403..17d75fa4935 100644 --- a/pkgs/tools/misc/yt-dlp/default.nix +++ b/pkgs/tools/misc/yt-dlp/default.nix @@ -1,4 +1,4 @@ -{ lib, fetchurl, buildPythonPackage +{ lib, buildPythonPackage , zip, ffmpeg, rtmpdump, phantomjs2, atomicparsley, pycryptodome, pandoc , fetchFromGitHub , websockets, mutagen @@ -13,13 +13,13 @@ buildPythonPackage rec { # 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.08.02"; + version = "2021.08.10"; src = fetchFromGitHub { owner = "yt-dlp"; repo = "yt-dlp"; rev = version; - sha256 = "QEJKOZGVQNXLU8GfTbwBx2Zv3KO++ozTJcXLWxXA4hI="; + sha256 = "sha256-8mOjIvbC3AFHCXKV5G66cFy7SM7sULzM8czXcqQKbms="; }; nativeBuildInputs = [ installShellFiles makeWrapper ]; From 1f2818d65d4793896059a081793f88591b5616ea Mon Sep 17 00:00:00 2001 From: Mario Rodas Date: Sat, 28 Aug 2021 00:04:20 +0000 Subject: [PATCH 4/9] yt-dlp: use PyPI tarball --- pkgs/tools/misc/yt-dlp/default.nix | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/pkgs/tools/misc/yt-dlp/default.nix b/pkgs/tools/misc/yt-dlp/default.nix index 17d75fa4935..ac6d841c725 100644 --- a/pkgs/tools/misc/yt-dlp/default.nix +++ b/pkgs/tools/misc/yt-dlp/default.nix @@ -1,12 +1,11 @@ -{ lib, buildPythonPackage -, zip, ffmpeg, rtmpdump, phantomjs2, atomicparsley, pycryptodome, pandoc -, fetchFromGitHub +{ lib, buildPythonPackage, fetchPypi +, ffmpeg, rtmpdump, phantomjs2, atomicparsley, pycryptodome , websockets, mutagen , ffmpegSupport ? true , rtmpSupport ? true , phantomjsSupport ? false , hlsEncryptedSupport ? true -, installShellFiles, makeWrapper }: +}: buildPythonPackage rec { pname = "yt-dlp"; @@ -15,15 +14,18 @@ buildPythonPackage rec { # to the latest stable release. version = "2021.08.10"; - src = fetchFromGitHub { - owner = "yt-dlp"; - repo = "yt-dlp"; - rev = version; - sha256 = "sha256-8mOjIvbC3AFHCXKV5G66cFy7SM7sULzM8czXcqQKbms="; + src = fetchPypi { + inherit pname; + version = builtins.replaceStrings [ ".0" ] [ "." ] version; + sha256 = "8da1bf4dc4641d37d137443c4783109ee8393caad5e0d270d9d1d534e8f25240"; }; - nativeBuildInputs = [ installShellFiles makeWrapper ]; - buildInputs = [ zip pandoc ]; + # 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; @@ -48,6 +50,7 @@ buildPythonPackage rec { 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. @@ -56,7 +59,7 @@ buildPythonPackage rec { youtube-dl is released to the public domain, which means you can modify it, redistribute it or use it however you like. ''; - license = licenses.publicDomain; + license = licenses.unlicense; maintainers = with maintainers; [ mkg20001 ]; }; } From bb5e5bf09adc88e23772cdfb776eb57a06265aa0 Mon Sep 17 00:00:00 2001 From: Ilan Joselevich Date: Thu, 2 Sep 2021 23:49:03 +0300 Subject: [PATCH 5/9] yt-dlp: 2021.08.10 -> 2021.9.2 --- pkgs/tools/misc/yt-dlp/default.nix | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/pkgs/tools/misc/yt-dlp/default.nix b/pkgs/tools/misc/yt-dlp/default.nix index ac6d841c725..9cb2d1dea0d 100644 --- a/pkgs/tools/misc/yt-dlp/default.nix +++ b/pkgs/tools/misc/yt-dlp/default.nix @@ -1,6 +1,13 @@ -{ lib, buildPythonPackage, fetchPypi -, ffmpeg, rtmpdump, phantomjs2, atomicparsley, pycryptodome -, websockets, mutagen +{ lib +, buildPythonPackage +, fetchPypi +, ffmpeg +, rtmpdump +, phantomjs2 +, atomicparsley +, pycryptodome +, websockets +, mutagen , ffmpegSupport ? true , rtmpSupport ? true , phantomjsSupport ? false @@ -12,12 +19,12 @@ buildPythonPackage rec { # 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.08.10"; + version = "2021.9.2"; src = fetchPypi { inherit pname; version = builtins.replaceStrings [ ".0" ] [ "." ] version; - sha256 = "8da1bf4dc4641d37d137443c4783109ee8393caad5e0d270d9d1d534e8f25240"; + sha256 = "sha256-yn53zbBVuiaD31sIB6qxweEgy+AsjzXZ0yk9lNva6mM="; }; # build_lazy_extractors assumes this directory exists but it is not present in @@ -33,12 +40,14 @@ buildPythonPackage rec { # - ffmpeg: post-processing & transcoding support # - rtmpdump: download files over RTMP # - atomicparsley: embedding thumbnails - makeWrapperArgs = let + makeWrapperArgs = + let packagesToBinPath = [ atomicparsley ] ++ lib.optional ffmpegSupport ffmpeg ++ lib.optional rtmpSupport rtmpdump ++ lib.optional phantomjsSupport phantomjs2; - in [ ''--prefix PATH : "${lib.makeBinPath packagesToBinPath}"'' ]; + in + [ ''--prefix PATH : "${lib.makeBinPath packagesToBinPath}"'' ]; setupPyBuildFlags = [ "build_lazy_extractors" From 12973b2af507fb05b5d3b83041117580924a7a43 Mon Sep 17 00:00:00 2001 From: Kid <44045911+kidonng@users.noreply.github.com> Date: Sat, 18 Sep 2021 09:18:59 +0800 Subject: [PATCH 6/9] yt-dlp: remove obsolete `postPatch` --- pkgs/tools/misc/yt-dlp/default.nix | 6 ------ 1 file changed, 6 deletions(-) diff --git a/pkgs/tools/misc/yt-dlp/default.nix b/pkgs/tools/misc/yt-dlp/default.nix index 9cb2d1dea0d..e2c90ef0530 100644 --- a/pkgs/tools/misc/yt-dlp/default.nix +++ b/pkgs/tools/misc/yt-dlp/default.nix @@ -27,12 +27,6 @@ buildPythonPackage rec { 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; From af706fce731e5667e91d313cbd95c3bdb5e9f906 Mon Sep 17 00:00:00 2001 From: Atemu Date: Mon, 20 Sep 2021 10:50:53 +0200 Subject: [PATCH 7/9] yt-dlp: add option to install a youtube-dl alias youtube-dl development seems to have stalled and yt-dlp is the de-facto upstream nowadays. This provides an easy way to use yt-dlp as a drop-in replacement: youtube-dl = yt-dlp.override { withAlias = true; }; --- pkgs/tools/misc/yt-dlp/default.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkgs/tools/misc/yt-dlp/default.nix b/pkgs/tools/misc/yt-dlp/default.nix index e2c90ef0530..40af80a4606 100644 --- a/pkgs/tools/misc/yt-dlp/default.nix +++ b/pkgs/tools/misc/yt-dlp/default.nix @@ -12,6 +12,7 @@ , rtmpSupport ? true , phantomjsSupport ? false , hlsEncryptedSupport ? true +, withAlias ? false # Provides bin/youtube-dl for backcompat }: buildPythonPackage rec { @@ -50,6 +51,10 @@ buildPythonPackage rec { # Requires network doCheck = false; + postInstall = lib.optionalString withAlias '' + ln -s "$out/bin/yt-dlp" "$out/bin/youtube-dl" + ''; + 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)"; From 6d31c97d24359f839ac4d3022d24f97dd6f31375 Mon Sep 17 00:00:00 2001 From: "R. RyanTM" Date: Sat, 25 Sep 2021 15:49:57 +0000 Subject: [PATCH 8/9] python38Packages.yt-dlp: 2021.9.2 -> 2021.9.25 --- pkgs/tools/misc/yt-dlp/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/misc/yt-dlp/default.nix b/pkgs/tools/misc/yt-dlp/default.nix index 40af80a4606..581e36ecd74 100644 --- a/pkgs/tools/misc/yt-dlp/default.nix +++ b/pkgs/tools/misc/yt-dlp/default.nix @@ -20,12 +20,12 @@ buildPythonPackage rec { # 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"; + version = "2021.9.25"; src = fetchPypi { inherit pname; version = builtins.replaceStrings [ ".0" ] [ "." ] version; - sha256 = "sha256-yn53zbBVuiaD31sIB6qxweEgy+AsjzXZ0yk9lNva6mM="; + sha256 = "e7b8dd0ee9498abbd80eb38d9753696d6ca3d02f64980322ab3bf39ba1bc31ee"; }; propagatedBuildInputs = [ websockets mutagen ] From 98a3003e2abf4af62b5610b7792dc6b2ea5025f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandro=20J=C3=A4ckel?= Date: Sun, 10 Oct 2021 20:06:35 +0200 Subject: [PATCH 9/9] yt-dlp: 2021.9.25 -> 2021.10.10 --- pkgs/tools/misc/yt-dlp/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/tools/misc/yt-dlp/default.nix b/pkgs/tools/misc/yt-dlp/default.nix index 581e36ecd74..c5ae6352725 100644 --- a/pkgs/tools/misc/yt-dlp/default.nix +++ b/pkgs/tools/misc/yt-dlp/default.nix @@ -5,7 +5,7 @@ , rtmpdump , phantomjs2 , atomicparsley -, pycryptodome +, pycryptodomex , websockets , mutagen , ffmpegSupport ? true @@ -20,16 +20,16 @@ buildPythonPackage rec { # 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.25"; + version = "2021.10.10"; src = fetchPypi { inherit pname; version = builtins.replaceStrings [ ".0" ] [ "." ] version; - sha256 = "e7b8dd0ee9498abbd80eb38d9753696d6ca3d02f64980322ab3bf39ba1bc31ee"; + sha256 = "sha256-zJYhHo5V67tI0uZgnA0JQlB+tUcbLOdOOPe5X41wpOc="; }; propagatedBuildInputs = [ websockets mutagen ] - ++ lib.optional hlsEncryptedSupport pycryptodome; + ++ lib.optional hlsEncryptedSupport pycryptodomex; # Ensure these utilities are available in $PATH: # - ffmpeg: post-processing & transcoding support