diff options
author | Soispha <soispha@vhack.eu> | 2024-03-23 20:48:36 +0100 |
---|---|---|
committer | Soispha <soispha@vhack.eu> | 2024-03-23 20:48:36 +0100 |
commit | 73cb8c56c72de9dc4e3cc69ea82bde3964632564 (patch) | |
tree | 89bde6999b26afd4a4ae62bc4be2f3ac2f5a2c59 /sys/nixpkgs/pkgs/scripts/source/specific/spodi/sh/update.sh | |
parent | feat(pkgs/scripts/fupdate): Add support for updating without running the script (diff) | |
download | nixos-config-73cb8c56c72de9dc4e3cc69ea82bde3964632564.tar.gz nixos-config-73cb8c56c72de9dc4e3cc69ea82bde3964632564.zip |
feat(pkgs/scripts/spodi): Rewrite to support artist `update`
Diffstat (limited to 'sys/nixpkgs/pkgs/scripts/source/specific/spodi/sh/update.sh')
-rwxr-xr-x | sys/nixpkgs/pkgs/scripts/source/specific/spodi/sh/update.sh | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/sys/nixpkgs/pkgs/scripts/source/specific/spodi/sh/update.sh b/sys/nixpkgs/pkgs/scripts/source/specific/spodi/sh/update.sh new file mode 100755 index 00000000..a289cf58 --- /dev/null +++ b/sys/nixpkgs/pkgs/scripts/source/specific/spodi/sh/update.sh @@ -0,0 +1,52 @@ +#!/usr/bin/env dash + +update() { + UPDATE_DIRECTORY="%XDG_MUSIC_DIR/artists" + UPDATE_CONFIG_FILE="%XDG_MUSIC_DIR/artists/update.conf" + + if ! [ -f "$UPDATE_CONFIG_FILE" ]; then + error="$( + cat <<EOF +Please provide an update config file at: '$UPDATE_CONFIG_FILE'. + +The 'update.conf' file should follow this pattern: +<path_to_artist>/<artist_name>|<spotify_url> + +All comments and empty lines are ignored +EOF + )" + die "$error" + fi + + config_file="$(mktmp)" + clean "$UPDATE_CONFIG_FILE" >"$config_file" + + while IFS="|" read -r artist url; do + full_artist="$UPDATE_DIRECTORY/$artist" + [ -d "$full_artist" ] || mkdir --parents "$full_artist" + [ -d "$full_artist/update" ] || mkdir --parents "$full_artist/update" + [ -d "$full_artist/all" ] || mkdir --parents "$full_artist/all" + [ -d "$full_artist/filtered" ] || mkdir --parents "$full_artist/filtered" + + while read -r file; do + ln --symbolic --relative "$file" "$full_artist/update/$(basename "$file")" + done <"$(tmp fd --type file --extension opus . "$full_artist/all")" + + msg2 "Updating $artist with url: '$url'" + download "$url" "$full_artist/update" + + while read -r file; do + mv "$file" "$full_artist/all" + ln --symbolic --relative "$full_artist/all/$(basename "$file")" "$full_artist/filtered/$(basename "$file")" + done <"$(tmp fd --type file --extension opus . "$full_artist/update")" + + while read -r file; do + rm "$file" + done <"$(tmp fd --type symlink --extension opus . "$full_artist/update")" + + cp "$full_artist/update/spotdl.log" "$full_artist/all/spotdl.$(date +%Y_%m_%d).log" + cp "$full_artist/update/spotdl-errors.log" "$full_artist/all/spotdl-errors.$(date +%Y_%m_%d).log" + done <"$config_file" +} + +# vim: ft=sh |