blob: a289cf5816f0df7f1b0d37ab8e76fe9b0201f388 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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
|