summaryrefslogtreecommitdiff
path: root/ar/.local
diff options
context:
space:
mode:
Diffstat (limited to 'ar/.local')
-rwxr-xr-xar/.local/bin/qndl-artist14
-rw-r--r--ar/.local/bin/tests/test-qndl-artist.sh7
2 files changed, 21 insertions, 0 deletions
diff --git a/ar/.local/bin/qndl-artist b/ar/.local/bin/qndl-artist
index 1be0939..f5828a0 100755
--- a/ar/.local/bin/qndl-artist
+++ b/ar/.local/bin/qndl-artist
@@ -20,6 +20,19 @@ cmd_normalize() {
printf '%s\n' "$_name"
}
+# 후크용: 파일의 현재 아티스트 폴더명을 표준명으로 해석해 apply.
+cmd_apply_download() {
+ _fp="$1"
+ case "$_fp" in
+ "$MUSIC"/*) : ;;
+ *) return 0 ;; # Music 밖이면 무시
+ esac
+ _rel="${_fp#"$MUSIC"/}"
+ _seg="${_rel%%/*}"
+ _canon="$(cmd_normalize "$_seg")"
+ cmd_apply "$_fp" "$_canon"
+}
+
# mp3 1개를 표준 폴더로 이동(필요시) + album_artist 설정.
cmd_apply() {
_fp="$1"; _canon="$2"
@@ -60,5 +73,6 @@ _sub="${1:-}"
case "$_sub" in
normalize) cmd_normalize "$@" ;;
apply) cmd_apply "$@" ;;
+apply-download) cmd_apply_download "$@" ;;
*) printf 'usage: qndl-artist {normalize|apply|apply-download|merge} ...\n' >&2; exit 2 ;;
esac
diff --git a/ar/.local/bin/tests/test-qndl-artist.sh b/ar/.local/bin/tests/test-qndl-artist.sh
index 327e3fb..6f2c925 100644
--- a/ar/.local/bin/tests/test-qndl-artist.sh
+++ b/ar/.local/bin/tests/test-qndl-artist.sh
@@ -44,4 +44,11 @@ SOLO="$(mktemp -d)/Music"; mkdir -p "$SOLO"
( export XDG_MUSIC_DIR="$SOLO"; mkmp3 "$SOLO/Solo/Al/s.mp3"; "$BIN" apply "$SOLO/Solo/Al/s.mp3" "SoloCanon" )
eq "apply: prune keeps MUSIC root" "yes" "$([ -d "$SOLO" ] && echo yes || echo no)"
+# --- apply-download ---
+# 맵에 4MEN→4Men 이 있으므로 다운로드가 4MEN 폴더에 떨어지면 4Men으로 통일돼야 함
+mkmp3 "$XDG_MUSIC_DIR/4MEN/Later/y.mp3"
+"$BIN" apply-download "$XDG_MUSIC_DIR/4MEN/Later/y.mp3"
+eq "apply-download: unified via map" "yes" "$([ -f "$XDG_MUSIC_DIR/4Men/Later/y.mp3" ] && echo yes || echo no)"
+eq "apply-download: album_artist" "4Men" "$(tag_of "$XDG_MUSIC_DIR/4Men/Later/y.mp3" album_artist)"
+
exit $FAIL