about summary refs log tree commit diff stats
path: root/hm/soispha/pkgs/scripts/wrappers/spodi.sh
diff options
context:
space:
mode:
Diffstat (limited to 'hm/soispha/pkgs/scripts/wrappers/spodi.sh')
-rwxr-xr-xhm/soispha/pkgs/scripts/wrappers/spodi.sh58
1 files changed, 58 insertions, 0 deletions
diff --git a/hm/soispha/pkgs/scripts/wrappers/spodi.sh b/hm/soispha/pkgs/scripts/wrappers/spodi.sh
new file mode 100755
index 00000000..f8bc5337
--- /dev/null
+++ b/hm/soispha/pkgs/scripts/wrappers/spodi.sh
@@ -0,0 +1,58 @@
+#!/usr/bin/env dash
+
+# shellcheck source=/dev/null
+SHELL_LIBRARY_VERSION="2.0.13" . %SHELL_LIBRARY_PATH
+
+# This path must not contain spaces
+DOWN_DIR="/home/soispha/media/music/down/spotify";
+
+download_url="$1";
+
+
+
+already_downloaded_files="$(mktmp)"
+fd . "$DOWN_DIR" --exclude spotdl.log --exclude spotdl-errors.log > "$already_downloaded_files";
+
+config="$(mktmp)"
+cat << EOF | clean > "$config"
+# Main options
+--audio slider-kz bandcamp youtube-music piped youtube soundcloud
+--lyrics genius musixmatch azlyrics synced
+
+# FFmpeg options
+--ffmpeg ffmpeg
+--threads 16
+--bitrate 256k
+
+# Spotify options
+--cache-path /home/soispha/.cache/spotdl/.spotipy
+
+# Output options
+--preload
+--format opus
+--output {artists}_-_{title}
+--print-errors
+--save-errors $DOWN_DIR/spotdl-errors.log
+# TODO: Reactive whence spotdl support for these has improved <2023-12-19>
+# --generate-lrc
+--overwrite skip
+
+# Misc options
+--log-level INFO
+EOF
+
+if [ -z "$NO_CHECK" ] && [ "$(wc -l < "$already_downloaded_files" )" -ne 0 ];then
+    die "something is already downloaded"
+fi
+
+rm "$DOWN_DIR/spotdl.log"
+cd "$DOWN_DIR" || die "BUG: no $DOWN_DIR"
+touch "$DOWN_DIR/spotdl-errors.log"
+
+
+# The sub shell needs to be unquoted, as the arguments may not be treated as one.
+# shellcheck disable=2046
+unbuffer spotdl $(cat "$config") download "$download_url" | tee "$DOWN_DIR/spotdl.log"
+
+[ -d ~/.spotdl ] && rm -r ~/.spotdl
+# vim: ft=sh