YaMusicDownload : Implement.

This commit is contained in:
Dmitry Voronin 2024-06-27 02:14:33 +03:00 committed by Dmitry Voronin
parent 5f8d6907f2
commit 0ccbd5c756
Signed by: voronind
SSH key fingerprint: SHA256:3kBb4iV2ahufEBNq+vFbUe4QYfHt98DHQjN7QaptY9k
5 changed files with 65 additions and 2 deletions

View file

@ -27,7 +27,7 @@
# Manual: https://danth.github.io/stylix # Manual: https://danth.github.io/stylix
stylix.url = "github:danth/stylix"; stylix.url = "github:danth/stylix";
# I use this for a single container called jobber. # I use this for a single container called jobber. WARN: Do not update.
# You likely won't need this one, so just skip it for now. # You likely won't need this one, so just skip it for now.
poetry2nixJobber.url = "github:nix-community/poetry2nix/304f8235fb0729fd48567af34fcd1b58d18f9b95"; poetry2nixJobber.url = "github:nix-community/poetry2nix/304f8235fb0729fd48567af34fcd1b58d18f9b95";
nixpkgsJobber.url = "github:nixos/nixpkgs/051f920625ab5aabe37c920346e3e69d7d34400e"; nixpkgsJobber.url = "github:nixos/nixpkgs/051f920625ab5aabe37c920346e3e69d7d34400e";

View file

@ -43,7 +43,7 @@
download = [ "/storage/hot/download" ]; download = [ "/storage/hot/download" ];
manga = [ "/storage/cold_1/media/manga" "/storage/cold_2/media/manga" ]; manga = [ "/storage/cold_1/media/manga" "/storage/cold_2/media/manga" ];
movie = [ "/storage/cold_1/media/movie" "/storage/cold_2/media/movie" ]; movie = [ "/storage/cold_1/media/movie" "/storage/cold_2/media/movie" ];
music = [ "/storage/cold_2/media/music" ]; music = [ "/storage/cold_2/media/music" "/storage/hot/media/music" ];
paper = [ "/storage/hot/media/paper" ]; paper = [ "/storage/hot/media/paper" ];
porn = [ "/storage/cold_2/media/porn" ]; porn = [ "/storage/cold_2/media/porn" ];
photo = [ "/storage/hot/container/cloud/data/data/cakee/files/media/photo" "/storage/cold_1/backup/tmp/photo" ]; photo = [ "/storage/hot/container/cloud/data/data/cakee/files/media/photo" "/storage/cold_1/backup/tmp/photo" ];

View file

@ -0,0 +1,42 @@
{ pkgs, util, lib, ... }: let
storage = "/storage/hot/media/music";
package = import ./yamusicdownload { inherit pkgs; };
pattern = "#album-artist/#year_#album/#number_#title";
in {
systemd.user = {
services.yamusicdownload = let
script = pkgs.writeText "YaMusicDownloadScript" (util.trimTabs ''
[[ $UID = 0 ]] && exit 0
function notify_silent() {
curl -X POST -H 'Content-Type: Application/json' -d "{\"chat_id\":\"155897358\",\"text\":\"$1\",\"disable_notification\":\"true\"}" https://api.telegram.org/bot2046849441:AAHQpjRK4xpL8tEUyN4JTSDUUze4J0wSIy4/sendMessage &> /dev/null
}
cd ${storage}
${package}/bin/yandex-music-downloader --browser "firefox" --hq --add-lyrics --embed-cover --skip-existing --stick-to-artist --only-music --path-pattern "${pattern}" --url https://music.yandex.ru/users/cakee.ru/playlists/3 && notify_silent "Music download complete." || notify_silent "Failed to download music!"
'');
in util.mkStaticSystemdService {
enable = true;
description = "Yandex Music Download.";
serviceConfig = {
Type = "oneshot";
ExecStart = "-${lib.getExe pkgs.bashInteractive} ${script}";
Restart = "on-failure";
};
path = with pkgs; [
python313
firefox-esr
];
};
timers.yamusicdownload = {
timerConfig = {
OnCalendar = "daily";
Persistent = true;
Unit = "yamusicdownload.service";
};
wantedBy = [ "timers.target" ];
};
};
}

View file

@ -5,6 +5,7 @@
./Filesystem.nix ./Filesystem.nix
./Network.nix ./Network.nix
./Photoprocess.nix ./Photoprocess.nix
./YaMusicDownload.nix
]; ];
user.voronind.enable = true; user.voronind.enable = true;

View file

@ -0,0 +1,20 @@
{ pkgs, ... }: with pkgs.python3Packages; buildPythonPackage {
version = "1.0.0";
pname = "yandex-music-downloader";
format = "pyproject";
propagatedBuildInputs = [
setuptools
setuptools-git
requests
eyed3
browser-cookie3
];
src = pkgs.fetchFromGitHub {
owner = "llistochek";
repo = "yandex-music-downloader";
rev = "184d1d1aeb056d6b90df03437b2edde88661b19d";
hash = "sha256-7ll1sMTE/fosgTRtaF6vHBsnDNiqxjFXaRG21JV7wo4=";
};
}