From 9973ccc5dfaad8b103006b5a9bbad85441526838 Mon Sep 17 00:00:00 2001 From: Medvidek77 Date: Mon, 31 Mar 2025 22:02:33 +0200 Subject: [PATCH 1/9] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 39e85ce..356970f 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ *Tidal music downloader based on the hifi-tui API* -### https://github.com/sachinsenal0x64/Hifi-Tui +### Based on [hifi-tui](https://github.com/sachinsenal0x64/Hifi-Tui) ## Requirements - `bash`, `curl`, `jq`, `awk`, `flac` From 4a60838f93f5d4478a3c3c6e2972e158a556f03a Mon Sep 17 00:00:00 2001 From: Medvidek77 Date: Sun, 20 Apr 2025 11:24:27 +0200 Subject: [PATCH 2/9] Added lyrics downloading --- src/tidler | 93 ++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 65 insertions(+), 28 deletions(-) diff --git a/src/tidler b/src/tidler index e015973..57a198f 100755 --- a/src/tidler +++ b/src/tidler @@ -2,7 +2,7 @@ . tidler.conf # Load ENVs from config file -version="0.3.0" +version="0.3.1" if [ -n "$PROXY_URL" ]; then @@ -50,6 +50,7 @@ else max_attempts="10" # Default value fi + downloadTrack() { if [ "$#" -ge 1 ]; then echo "Downloading track with ID: $1" @@ -59,39 +60,56 @@ downloadTrack() { read -r id fi - if [ "$#" -ge 2 ]; then - album_dir="$2" - else - album_dir="" - fi - attempt_num=1 success=false + lrc_success=false + while [ $attempt_num -le $max_attempts ]; do json_data=$(curl -# "$proxy_url/track/?id=$id&quality=$quality") - + if [ $? -eq 0 ]; then track_name=$(echo "$json_data" | jq -r '.[0].title // empty') - + if [ -n "$track_name" ]; then artist_name=$(echo "$json_data" | jq -r '.[0].artist.name // empty') - + 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') - + if [ -n "$url" ]; then cover_data=$(curl -# "$proxy_url/cover/?id=$id") cover_url=$(echo "$cover_data" | jq -r '.[]["1280"] // empty') - - if [ -n "$cover_url" ]; then - track_number=$(echo "$json_data" | jq -r '.[0].trackNumber') - filename="$track_name.flac" - cover_name="cover.png" - success=true + + + if [ -n "$cover_url" ]; then + date_data=$(echo "$json_data" | jq -r '.[0].streamStartDate // empty' ) + date=$(expr substr "$date_data" 1 10) + year=$(expr substr "$date_data" 1 4) + + + if [ -n "$year" ]; then + track_number=$(echo "$json_data" | jq -r '.[0].trackNumber') + filename="$track_name.flac" + cover_name="tidler_temp_cover_$track_name.png" + success=true + + lyrics_data=$(curl -# "$proxy_url/lyrics/?id=$id") + + if [ $? -eq 0 ]; then + timed_lyrics=$(echo "$lyrics_data" | jq -r '.[0].subtitles') + + if [ -n "$timed_lyrics" ]; then + lrc_success=true + + elif [ "$timed_lyrics" == "null" ]; then + echo "Lyrics not found" + fi + fi + fi break fi fi @@ -100,45 +118,51 @@ downloadTrack() { fi fi + if [ "$success" = false ]; then echo "Attempt $attempt_num failed. Retrying..." ((attempt_num++)) - sleep "1.$(tr -cd 0-9 Date: Sun, 20 Apr 2025 11:25:59 +0200 Subject: [PATCH 3/9] Change MAX_ATTEMPTS default value --- src/tidler | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tidler b/src/tidler index 57a198f..9696694 100755 --- a/src/tidler +++ b/src/tidler @@ -44,10 +44,10 @@ if [ -n "$MAX_ATTEMPTS" ]; then echo "Bad MAX_ATTEMPTS option. Allowed are numbers from 1 to 100." echo "Using default value..." - max_attempts="10" # Default value + max_attempts="15" # Default value fi else - max_attempts="10" # Default value + max_attempts="15" # Default value fi From e0522da25e94c46f0e985af0b2b8ed55c38a7214 Mon Sep 17 00:00:00 2001 From: Medvidek77 Date: Sun, 20 Apr 2025 11:26:13 +0200 Subject: [PATCH 4/9] Change MAX_ATTEMPTS default value --- src/tidler.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tidler.conf b/src/tidler.conf index 676c976..49e42d4 100644 --- a/src/tidler.conf +++ b/src/tidler.conf @@ -12,4 +12,4 @@ QUALITY="LOSSLESS" COVER_RESOLUTION="1280" # If there is any problem with the API, Tidler will attempt to download the track again -> possible values are "1" to "100" -MAX_ATTEMPTS="10" +MAX_ATTEMPTS="15" From 8739fc245a22b52471b6d34d8ea4e271c914e346 Mon Sep 17 00:00:00 2001 From: Medvidek77 Date: Sun, 20 Apr 2025 11:26:39 +0200 Subject: [PATCH 5/9] Update scripts/ArchLinux/PKGBUILD --- scripts/ArchLinux/PKGBUILD | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/ArchLinux/PKGBUILD b/scripts/ArchLinux/PKGBUILD index a5d0a4e..d3eb27a 100644 --- a/scripts/ArchLinux/PKGBUILD +++ b/scripts/ArchLinux/PKGBUILD @@ -1,8 +1,8 @@ # Maintainer: Medvidek77 pkgname=tidler -pkgver=0.3.0 -pkgrel=3 +pkgver=0.3.1 +pkgrel=1 pkgdesc="Tidal music downloader based on the hifi-tui API" arch=('any') url="https://git.medvidek77.tech/Medvidek77/tidler" From f0d59c956c452062c5dcf8e72e1de5a91b236179 Mon Sep 17 00:00:00 2001 From: Medvidek77 Date: Sun, 20 Apr 2025 11:26:56 +0200 Subject: [PATCH 6/9] Update scripts/ArchLinux/PKGBUILD-git --- scripts/ArchLinux/PKGBUILD-git | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/ArchLinux/PKGBUILD-git b/scripts/ArchLinux/PKGBUILD-git index 611a132..a5a92c2 100644 --- a/scripts/ArchLinux/PKGBUILD-git +++ b/scripts/ArchLinux/PKGBUILD-git @@ -1,8 +1,8 @@ # Maintainer: Medvidek77 pkgname=tidler -pkgver=0.3.0 -pkgrel=3 +pkgver=0.3.1 +pkgrel=1 pkgdesc="Tidal music downloader based on the hifi-tui API" arch=('any') url="https://git.medvidek77.tech/Medvidek77/tidler" From 08c8f434b31ad00d4795c1ab4edaba59249fc91d Mon Sep 17 00:00:00 2001 From: Medvidek77 Date: Sun, 20 Apr 2025 11:31:04 +0200 Subject: [PATCH 7/9] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 356970f..511efba 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ - Create install scripts/guides (WIP) - Migrate from Bash to a POSIX-compliant shell - Add Cover, and other metadata to vorbis tag (Almost done) -- Lyrics download (WIP) +- Lyrics download (Almost done) - Implement search & download for playlists, albums, and artists (WIP) - Support downloading multiple search results - Allow users to choose audio quality (currently defaults to LOSSLESS) From 4080cadbc763b4cda9a6f3974a10209d21e2de6b Mon Sep 17 00:00:00 2001 From: Medvidek77 Date: Sun, 20 Apr 2025 11:31:31 +0200 Subject: [PATCH 8/9] Update README.md --- README.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/README.md b/README.md index 511efba..ab9a180 100644 --- a/README.md +++ b/README.md @@ -30,11 +30,6 @@ git clone https://git.medvidek77.tech/Medvidek77/tidler.git && cd tidler git checkout dev ``` -- Add permissions as root: -``` -chmod +x src/tidler -``` - - Run: ``` src/tidler From 3c78296e585389e6f83d08d69aa341c56a53ba2c Mon Sep 17 00:00:00 2001 From: Medvidek77 Date: Mon, 21 Apr 2025 17:51:58 +0200 Subject: [PATCH 9/9] Updated shebang and added multiple album download --- src/tidler | 47 ++++++++++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/src/tidler b/src/tidler index 9696694..b9cfc51 100755 --- a/src/tidler +++ b/src/tidler @@ -1,8 +1,8 @@ -#!/bin/bash +#!/usr/bin/env bash . tidler.conf # Load ENVs from config file -version="0.3.1" +version="0.3.2" if [ -n "$PROXY_URL" ]; then @@ -44,10 +44,10 @@ if [ -n "$MAX_ATTEMPTS" ]; then echo "Bad MAX_ATTEMPTS option. Allowed are numbers from 1 to 100." echo "Using default value..." - max_attempts="15" # Default value + max_attempts="10" # Default value fi else - max_attempts="15" # Default value + max_attempts="10" # Default value fi @@ -108,7 +108,7 @@ downloadTrack() { elif [ "$timed_lyrics" == "null" ]; then echo "Lyrics not found" fi - fi + fi fi break fi @@ -136,6 +136,7 @@ downloadTrack() { if [ -n "$DOWNLOADS_DIR" ]; then download_dir="$DOWNLOADS_DIR" else + echo "Using current path..." download_dir="$(pwd)" fi @@ -268,18 +269,27 @@ searchAlbum() { ((attempt_num++)) sleep "1.$(tr -cd 0-9