diff --git a/src/tidler b/src/tidler index f4947fb..1e789f2 100755 --- a/src/tidler +++ b/src/tidler @@ -1,5 +1,6 @@ #!/bin/bash + downloadTrack() { if [ "$#" -ge 1 ]; then echo "Downloading track with ID: $1" @@ -20,7 +21,6 @@ downloadTrack() { # Metadata metaflac --set-tag="NAME=$track_name" --set-tag="ARTIST=$artist_name" --set-tag="ALBUM=$album_name" $filename - } @@ -57,6 +57,59 @@ searchTrack() { done } + +downloadAlbum() { + id="$1" + album_tracks_ids=$(curl -s "https://tidal.401658.xyz/album/?id=$id" | jq -r '.[1].items[] | .item.id') + + tracks_ids_list=() + while IFS= read -r list; do + tracks_ids_list+=("$list") + done <<< "$album_tracks_ids" + + for i in "${tracks_ids_list[@]}" + do + downloadTrack "$i" + done + +} + + +searchAlbum() { + if [ "$#" -ge 1 ]; then + album_name="$1" + else + echo "Enter album name:" + read -r album_name + fi + + album_name=$(echo "$album_name" | sed 's/ /%20/g') + albums=$(curl -s "https://tidal.401658.xyz/search/?al=$album_name" | jq -r '.albums.items[] | "\(.id): \(.title)"') + + albums_list=() + while IFS= read -r list; do + albums_list+=("$list") + done <<< "$albums" + + if [ "${#albums_list[@]}" -eq 1 ]; then + echo "No albums found :(" + exit 1 + fi + + PS3="Please select an album: " + select t in "${albums_list[@]}"; do + if [ -n "$t" ]; then + album_id=$(echo "$t" | awk -F ': ' '{print $1}') + echo "You selected: $t" + downloadAlbum "$album_id" + break + else + echo "Invalid selection. Please try again." + fi + done +} + + echo "Welcome to TiDLer -> Tidal music downloader" && echo "" if [ "$1" = "search" ]; then @@ -73,6 +126,8 @@ elif [ "$1" = "download" ]; then else downloadTrack fi +elif [ "$1" = "album" ]; then + searchAlbum else echo "Choose 1 for download track or 2 for search track and download" read option @@ -83,3 +138,4 @@ else fi fi +