blob: 57796f39b99969659271c6fe9cf5152a131a9bd1 (
plain)
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
53
54
|
#!/bin/sh
parse_query() {
sed "s/ /+/g"
}
unquery() {
sed "s/+/ /g"
}
artist() {
artist_name=$(printf "" | dmenu -p "Search Artist" | parse_query)
json=$(wget -qO- "https://musicbrainz.org/ws/2/release-group/?fmt=json&artist=$(search_artist $artist_name)&type=album|ep" 2>/dev/null)
album_name=$(echo "$json" | jq '."release-groups"[] | .title' | sed 's/"//g' | dmenu -p "Select Album")
album_id=$(echo "$json" | jq ".\"release-groups\"[] | select(.title==\"$album_name\") .id" | sed "s/\"//g")
release_id=$(wget -qO- "https://musicbrainz.org/ws/2/release/?fmt=json&release-group=${album_id}" 2>/dev/null | jq '.releases[0] .id' | sed 's/"//g')
recording_names=$(wget -qO- "https://musicbrainz.org/ws/2/recording/?fmt=json&release=${release_id}" 2>/dev/null | jq '.recordings[] | .title' | sed 's/"//g')
recordings_query=$(echo "$recording_names" | parse_query)
mkdir "$album_name"
cd "$album_name"
echo "Download $album_name"
for name in $recordings_query; do
echo "Download $(echo ${name} | unquery)"
download "${artist_name}" "${album_name}" "${name}" &
done
wait
}
download() {
artist_name="$1"
album_name="$2"
name="$3"
query=$(echo "${artist_name} ${album_name} ${name}" | parse_query)
video_url=$(wget -qO- "https://www.youtube.com/results?search_query=${query}" 2>/dev/null | grep -E -o '"/watch\?v=[^"]*"' | sed -e 's/"//g' | sed -e "s/\/watch/https:\/\/www.youtube.com\/watch/g" | head -n1)
youtube-dl -q --extract-audio --audio-format mp3 "${video_url}" -o "${name}.%(ext)s"
mp3info -a "$(echo "$artist_name" | unquery)" -l "$album_name" -t "$(echo $name | sed 's/+/ /g')" "${name}.mp3"
mv "${name}.mp3" "$(echo $name | sed 's/+/ /g').mp3"
}
search_artist() {
json=$(wget -qO- "https://musicbrainz.org/ws/2/artist/?fmt=json&limit=100&query=$1" 2>/dev/null)
artist_name=$(echo "$json" | jq ".artists[] | .name" | sed "s/\"//g" | dmenu -p "Select Artist")
echo "$json" | jq ".artists[] | select(.name==\"$artist_name\") .id" | sed "s/\"//g"
}
artist
|