diff options
Diffstat (limited to 'ar/.config/rmpc/scripts/on_song_change')
| -rwxr-xr-x | ar/.config/rmpc/scripts/on_song_change | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/ar/.config/rmpc/scripts/on_song_change b/ar/.config/rmpc/scripts/on_song_change index 64e9047..2899ab8 100755 --- a/ar/.config/rmpc/scripts/on_song_change +++ b/ar/.config/rmpc/scripts/on_song_change @@ -75,19 +75,33 @@ LRCLIB_INSTANCE="https://lrclib.net" if [ "$HAS_LRC" = "false" ]; then mkdir -p "$(dirname "$LRC_FILE")" + # 1) /api/get with artist + title + album (exact match) LYRICS="$(curl -X GET -sG \ -H "Lrclib-Client: rmpc-$VERSION" \ --data-urlencode "artist_name=$ARTIST" \ --data-urlencode "track_name=$TITLE" \ --data-urlencode "album_name=$ALBUM" \ - "$LRCLIB_INSTANCE/api/get" | jq -r '.syncedLyrics')" + "$LRCLIB_INSTANCE/api/get" | jq -r '.syncedLyrics // empty')" + # 2) /api/get without album if [ -z "$LYRICS" ]; then - rmpc remote --pid "$PID" status "Failed to download lyrics for $ARTIST - $TITLE" --level error - exit + LYRICS="$(curl -X GET -sG \ + -H "Lrclib-Client: rmpc-$VERSION" \ + --data-urlencode "artist_name=$ARTIST" \ + --data-urlencode "track_name=$TITLE" \ + "$LRCLIB_INSTANCE/api/get" | jq -r '.syncedLyrics // empty')" fi - if [ "$LYRICS" = "null" ]; then + # 3) /api/search (fuzzy fallback) + if [ -z "$LYRICS" ]; then + LYRICS="$(curl -X GET -sG \ + -H "Lrclib-Client: rmpc-$VERSION" \ + --data-urlencode "artist_name=$ARTIST" \ + --data-urlencode "track_name=$TITLE" \ + "$LRCLIB_INSTANCE/api/search" | jq -r '.[0].syncedLyrics // empty')" + fi + + if [ -z "$LYRICS" ]; then rmpc remote --pid "$PID" status "Lyrics for $ARTIST - $TITLE not found" --level warn exit fi |
