diff --git a/src/tidler b/src/tidler index b9cfc51..7736873 100755 --- a/src/tidler +++ b/src/tidler @@ -2,54 +2,54 @@ . tidler.conf # Load ENVs from config file -version="0.3.2" +version="0.3.2-beta2" if [ -n "$PROXY_URL" ]; then - proxy_url="$PROXY_URL" + proxy_url="$PROXY_URL" else - proxy_url="https://hifi-04ed2aaea09a.herokuapp.com" # Default value + proxy_url="https://hifi-04ed2aaea09a.herokuapp.com" # Default value fi if [ -n "$QUALITY" ]; then - if [ "$QUALITY" = "LOSSLESS" -o "$QUALITY" = "HI_RES" ]; then - quality="$QUALITY" - else - echo "Bad QUALITY option. Only allowed are \"LOSSLESS\", \"HI_RES\"." - echo "Using default value..." + if [ "$QUALITY" = "LOSSLESS" -o "$QUALITY" = "HI_RES" ]; then + quality="$QUALITY" + else + echo "Bad QUALITY option. Only allowed are \"LOSSLESS\", \"HI_RES\"." + echo "Using default value..." - quality="LOSSLESS" # Default value - fi + quality="LOSSLESS" # Default value + fi else - quality="LOSSLESS" # Default value + quality="LOSSLESS" # Default value fi if [ -n "$COVER_RESOLUTION" ]; then - if [ "$COVER_RESOLUTION" = "1280" -o "$COVER_RESOLUTION" = "640" -o "$COVER_RESOLUTION" = "80" ]; then - cover_resolution="$COVER_RESOLUTION" - else - echo "Bad COVER_RESOLUTION option. Only allowed are \"1280\", \"640\", \"80\"." - echo "Using default value..." + if [ "$COVER_RESOLUTION" = "1280" -o "$COVER_RESOLUTION" = "640" -o "$COVER_RESOLUTION" = "80" ]; then + cover_resolution="$COVER_RESOLUTION" + else + echo "Bad COVER_RESOLUTION option. Only allowed are \"1280\", \"640\", \"80\"." + echo "Using default value..." - cover_resolution="1280" # Default value - fi + cover_resolution="1280" # Default value + fi else - cover_resolution="1280" # Default value + cover_resolution="1280" # Default value fi if [ -n "$MAX_ATTEMPTS" ]; then - if [ "$MAX_ATTEMPTS" -ge 1 -a "$MAX_ATTEMPTS" -le 100 ]; then - max_attempts="$MAX_ATTEMPTS" - else - echo "Bad MAX_ATTEMPTS option. Allowed are numbers from 1 to 100." - echo "Using default value..." + if [ "$MAX_ATTEMPTS" -ge 1 -a "$MAX_ATTEMPTS" -le 100 ]; then + max_attempts="$MAX_ATTEMPTS" + else + echo "Bad MAX_ATTEMPTS option. Allowed are numbers from 1 to 100." + echo "Using default value..." - max_attempts="10" # Default value - fi + max_attempts="10" # Default value + fi else - max_attempts="10" # Default value + max_attempts="10" # Default value fi - + downloadTrack() { if [ "$#" -ge 1 ]; then @@ -76,7 +76,7 @@ downloadTrack() { if [ -n "$artist_name" ]; then album_name=$(echo "$json_data" | jq -r '.[0].album.title // empty') - + if [ -n "$album_name" ]; then url=$(echo "$json_data" | jq -r '.[-1].OriginalTrackUrl // empty') @@ -104,12 +104,12 @@ downloadTrack() { if [ -n "$timed_lyrics" ]; then lrc_success=true - - elif [ "$timed_lyrics" == "null" ]; then - echo "Lyrics not found" + + elif [ "$timed_lyrics" == "null" ]; then + echo "Lyrics not found" fi - fi - fi + fi + fi break fi fi @@ -136,7 +136,7 @@ downloadTrack() { if [ -n "$DOWNLOADS_DIR" ]; then download_dir="$DOWNLOADS_DIR" else - echo "Using current path..." + echo "Using current path..." download_dir="$(pwd)" fi @@ -154,8 +154,8 @@ downloadTrack() { --set-tag="ALBUM=$album_name" \ --set-tag="TRACKNUMBER=$track_number" \ ${lrc_success:+--set-tag="LYRICS=$timed_lyrics"} \ - --set-tag="DATE=$date" \ - --set-tag="YEAR=$year" \ + --set-tag="DATE=$date" \ + --set-tag="YEAR=$year" \ --import-picture-from="/tmp/$cover_name" \ "$final_path/$filename" @@ -166,10 +166,10 @@ downloadTrack() { searchTrack() { if [ "$#" -ge 1 ]; then - track_name="$1" + track_name="$1" else - echo "Enter track name:" - read -r track_name + echo "Enter track name:" + read -r track_name fi track_name=$(echo "$track_name" | sed 's/ /%20/g') tracks=$(curl -# "$proxy_url/search/?s=$track_name" | jq -r '.items[] | "\(.id) - \(.title) by \(.artist.name)"') @@ -182,19 +182,29 @@ searchTrack() { if [ "${#tracks_list[@]}" -eq 1 ]; then echo "No tracks found :(" exit 1 - fi + else - PS3="Please select a track: " - select t in "${tracks_list[@]}"; do - if [ -n "$t" ]; then - track_id=$(echo "$t" | awk -F ' - ' '{print $1}') - echo "You selected: $t" - downloadTrack "$track_id" - break - else - echo "Invalid selection. Please try again." - fi - done + i=0 + while [ "$i" -lt "${#tracks_list[@]}" ]; do + echo "$((i + 1))) ${tracks_list["$i"]}" + + i=$(( i + 1 )) + done + read -a inp + echo "${inp[0]}" + i=0 + while [ "$i" -lt "${#inp[@]}" ]; do + inp2=$(("${inp[i]}" - 1)) + if [ "$inp2" -ge 0 ] && [ "$inp2" -lt "${#tracks_list[@]}" ]; then + track_id=$(echo "${tracks_list["$inp2"]}" | awk -F ' - ' '{print $1}') + downloadTrack "$track_id" + else + echo "Invalid selection. Please try again." + + fi + i=$(( i + 1 )) + done + fi } @@ -269,27 +279,27 @@ searchAlbum() { ((attempt_num++)) sleep "1.$(tr -cd 0-9 " - echo "" - echo "If a valid parameter is provided, the corresponding function executes. Otherwise, TiDLer enters INTERACTIVE mode!" - echo "" - echo "" - echo "" - echo "search {track_name}-optional -> search any song" - echo "" - echo "download {song_id}-optional -> download any song" - echo "" - echo "album {album_name}-optional -> search and download any album" - echo "" - echo "version -> print TiDLer version" - echo "" - echo "help -> print this message and exit" + echo "" + echo "" + echo "If a valid parameter is provided, the corresponding function executes. Otherwise, TiDLer enters INTERACTIVE mode!" + echo "" + echo "" + echo "" + echo "search {track_name}-optional -> search any song" + echo "" + echo "download {song_id}-optional -> download any song" + echo "" + echo "album {album_name}-optional -> search and download any album" + echo "" + echo "version -> print TiDLer version" + echo "" + echo "help -> print this message and exit" else - echo "### Choose function! (Enter number) ###" - echo "" - echo "1. Download single track with ID" - echo "" - echo "2. Search single track with text" - echo "" - echo "3. Search and download whole album with text" + echo "### Choose function! (Enter number) ###" + echo "" + echo "1. Download single track with ID" + echo "" + echo "2. Search single track with text" + echo "" + echo "3. Search and download whole album with text" - read option + read option + if [ "$option" -eq 1 ]; then + downloadTrack + elif [ "$option" -eq 2 ]; then + searchTrack + elif [ "$option" -eq 3 ]; then + searchAlbum + fi +fi if [ "$option" -eq 1 ]; then downloadTrack elif [ "$option" -eq 2 ]; then