Added multi-selection for tracks
This commit is contained in:
parent
3c78296e58
commit
e1599f840c
1 changed files with 134 additions and 116 deletions
238
src/tidler
238
src/tidler
|
@ -2,52 +2,52 @@
|
|||
|
||||
. 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
|
||||
|
||||
|
||||
|
@ -105,10 +105,10 @@ 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
|
||||
break
|
||||
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 </dev/urandom | head -c 5)"
|
||||
else
|
||||
i=0
|
||||
while [ "$i" -lt "${#albums_list[@]}" ]; do
|
||||
echo "$((i + 1))) ${albums_list["$i"]}"
|
||||
i=0
|
||||
while [ "$i" -lt "${#albums_list[@]}" ]; do
|
||||
echo "$((i + 1))) ${albums_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 "${#albums_list[@]}" ]; then
|
||||
album_id=$(echo "${albums_list["$inp2"]}" | awk -F ': ' '{print $1}')
|
||||
downloadAlbum "$album_id"
|
||||
else
|
||||
echo "Invalid selection. Please try again."
|
||||
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 "${#albums_list[@]}" ]; then
|
||||
album_id=$(echo "${albums_list["$inp2"]}" | awk -F ': ' '{print $1}')
|
||||
downloadAlbum "$album_id"
|
||||
else
|
||||
echo "Invalid selection. Please try again."
|
||||
|
||||
fi
|
||||
i=$(( i + 1 ))
|
||||
done
|
||||
success=true
|
||||
fi
|
||||
i=$(( i + 1 ))
|
||||
done
|
||||
success=true
|
||||
if [ "$success" = true ]; then
|
||||
break
|
||||
fi
|
||||
|
@ -311,60 +321,68 @@ searchAlbum() {
|
|||
#}
|
||||
|
||||
if [ "$1" = "search" ]; then
|
||||
if [ "$#" -ge 2 ]; then
|
||||
shift
|
||||
jsw="$*"
|
||||
searchTrack "$jsw"
|
||||
else
|
||||
searchTrack
|
||||
fi
|
||||
if [ "$#" -ge 2 ]; then
|
||||
shift
|
||||
jsw="$*"
|
||||
searchTrack "$jsw"
|
||||
else
|
||||
searchTrack
|
||||
fi
|
||||
|
||||
elif [ "$1" = "download" ]; then
|
||||
if [ "$#" -ge 2 ]; then
|
||||
downloadTrack "$2"
|
||||
else
|
||||
downloadTrack
|
||||
fi
|
||||
if [ "$#" -ge 2 ]; then
|
||||
downloadTrack "$2"
|
||||
else
|
||||
downloadTrack
|
||||
fi
|
||||
|
||||
elif [ "$1" = "album" ]; then
|
||||
if [ "$#" -ge 2 ]; then
|
||||
shift
|
||||
jsw="$*"
|
||||
searchAlbum "$jsw"
|
||||
else
|
||||
searchAlbum
|
||||
fi
|
||||
if [ "$#" -ge 2 ]; then
|
||||
shift
|
||||
jsw="$*"
|
||||
searchAlbum "$jsw"
|
||||
else
|
||||
searchAlbum
|
||||
fi
|
||||
|
||||
elif [ "$1" == "version" ]; then
|
||||
echo "TiDLer $version by Medvidek77"
|
||||
echo "TiDLer $version by Medvidek77"
|
||||
|
||||
elif [ "$1" = "help" ]; then
|
||||
echo "<MODE>"
|
||||
echo ""
|
||||
echo "If a valid parameter is provided, the corresponding function executes. Otherwise, TiDLer enters INTERACTIVE mode!"
|
||||
echo ""
|
||||
echo "<COMMANDS>"
|
||||
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 "<MODE>"
|
||||
echo ""
|
||||
echo "If a valid parameter is provided, the corresponding function executes. Otherwise, TiDLer enters INTERACTIVE mode!"
|
||||
echo ""
|
||||
echo "<COMMANDS>"
|
||||
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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue