From 4bdb997e48ae014b1c078d9ccfd2229714dd05f3 Mon Sep 17 00:00:00 2001 From: Pavel Sobolev Date: Sat, 13 Jan 2024 13:06:22 +0000 Subject: [PATCH] streamrip: init at 2.0.5 --- pkgs/by-name/st/streamrip/package.nix | 77 +++++++++++++++++++ ...-the-default-config-file-is-writable.patch | 26 +++++++ 2 files changed, 103 insertions(+) create mode 100644 pkgs/by-name/st/streamrip/package.nix create mode 100644 pkgs/by-name/st/streamrip/patches/ensure-the-default-config-file-is-writable.patch diff --git a/pkgs/by-name/st/streamrip/package.nix b/pkgs/by-name/st/streamrip/package.nix new file mode 100644 index 000000000000..68f1a7e85121 --- /dev/null +++ b/pkgs/by-name/st/streamrip/package.nix @@ -0,0 +1,77 @@ +{ lib +, python3Packages +, fetchFromGitHub + +, ffmpeg +}: + +python3Packages.buildPythonApplication rec { + pname = "streamrip"; + version = "2.0.5"; + pyproject = true; + + src = fetchFromGitHub { + owner = "nathom"; + repo = "streamrip"; + rev = "v${version}"; + hash = "sha256-KwMt89lOPGt6nX7ywliG/iAJ1WnG0CRPwhAVlPR85q0="; + }; + + patches = [ + ./patches/ensure-the-default-config-file-is-writable.patch + ]; + + nativeBuildInputs = with python3Packages; [ + poetry-core + ]; + + propagatedBuildInputs = with python3Packages; [ + aiodns + aiofiles + aiohttp + aiolimiter + appdirs + cleo + click-help-colors + deezer-py + m3u8 + mutagen + pathvalidate + pillow + pycryptodomex + pytest-asyncio + pytest-mock + rich + simple-term-menu + tomlkit + tqdm + ]; + + nativeCheckInputs = with python3Packages; [ + pytestCheckHook + ]; + + prePatch = '' + sed -i 's#aiofiles = ".*"#aiofiles = "*"#' pyproject.toml + sed -i 's#deezer-py = ".*"#deezer-py = "*"#' pyproject.toml + sed -i 's#m3u8 = ".*"#m3u8 = "*"#' pyproject.toml + sed -i 's#pathvalidate = ".*"#pathvalidate = "*"#' pyproject.toml + sed -i 's#Pillow = ".*"#Pillow = "*"#' pyproject.toml + sed -i 's#pytest-asyncio = ".*"#pytest-asyncio = "*"#' pyproject.toml + sed -i 's#tomlkit = ".*"#tomlkit = "*"#' pyproject.toml + + sed -i 's#"ffmpeg"#"${lib.getBin ffmpeg}/bin/ffmpeg"#g' streamrip/client/downloadable.py + ''; + + preCheck = '' + export HOME=$(mktemp -d) + ''; + + meta = with lib; { + description = "A scriptable music downloader for Qobuz, Tidal, SoundCloud, and Deezer"; + homepage = "https://github.com/nathom/streamrip"; + license = licenses.gpl3Only; + maintainers = with maintainers; [ paveloom ]; + mainProgram = "rip"; + }; +} diff --git a/pkgs/by-name/st/streamrip/patches/ensure-the-default-config-file-is-writable.patch b/pkgs/by-name/st/streamrip/patches/ensure-the-default-config-file-is-writable.patch new file mode 100644 index 000000000000..5bd47195dcbf --- /dev/null +++ b/pkgs/by-name/st/streamrip/patches/ensure-the-default-config-file-is-writable.patch @@ -0,0 +1,26 @@ +From 18efb9b5c8e562b169425f6ba79977e52e8b91b9 Mon Sep 17 00:00:00 2001 +From: Pavel Sobolev +Date: Sat, 13 Jan 2024 12:49:45 +0000 +Subject: [PATCH] Ensure the default config file is writable. + +--- + streamrip/config.py | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/streamrip/config.py b/streamrip/config.py +index 7ee2f57..88a5fef 100644 +--- a/streamrip/config.py ++++ b/streamrip/config.py +@@ -378,6 +378,9 @@ def set_user_defaults(path: str, /): + """Update the TOML file at the path with user-specific default values.""" + shutil.copy(BLANK_CONFIG_PATH, path) + ++ # Ensure the default config file is writable ++ os.chmod(path, 0o644) ++ + with open(path) as f: + toml = parse(f.read()) + toml["downloads"]["folder"] = DEFAULT_DOWNLOADS_FOLDER # type: ignore +-- +2.42.0 +