aboutsummaryrefslogtreecommitdiff
path: root/.local/bin/brainmassage
diff options
context:
space:
mode:
Diffstat (limited to '.local/bin/brainmassage')
-rwxr-xr-x.local/bin/brainmassage54
1 files changed, 54 insertions, 0 deletions
diff --git a/.local/bin/brainmassage b/.local/bin/brainmassage
new file mode 100755
index 0000000..57796f3
--- /dev/null
+++ b/.local/bin/brainmassage
@@ -0,0 +1,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