#!/bin/sh # Settings client="ass" url="" user="" password="" # Checks if the last retrieved album has changed. check_album(){ cache_folder="$HOME/.cache/$client" cache_file="$cache_folder/list" mkdir -p "$cache_folder" && touch "$cache_file" album="$(tail -n 1 "$cache_file")" if [ "$album" = "$1" ]; then exit else printf "%s\n" "$1" | tee -a "$cache_file" printf "%s\n" "$url/library/albums/$latest_albumid" printf "%s\n" "$latest_albumcv" exit fi } # Get album catalog number if it's available (Requires proper tags). get_cn(){ album="$(echo "$@" | tr -d '()[]')" # Try looking up directly. (Should be accurate) curl -sL "https://vgmdb.net/search?" --data-urlencode "q=$album" | \ grep -A1 "Catalog Number" | tail -n1 | \ sed 's/<[^>]*>//g' | sed 's/^[ \t]*//;s/[ \t]*$//' # If multiple albums were found choose the first one. (Not accurate) curl -s "https://vgmdb.net/search?" --data-urlencode "q=$album" | \ grep -o '[^<]*' | \ sed 's/.*>//' | grep -v '^N/A$' | head -n1 } # Get the latest recently added album with curl in "Artist - Album" format. get_album(){ curl -s "$url/rest/getAlbumList2.view?u=$user&p=$password&v=1.16.1&c=$client&f=json&type=newest" | \ jq -r '.["subsonic-response"].albumList2.album[0] | "\(.artist) - \(.name)"' } # Same thing but with album id. get_albumid(){ curl -s "$url/rest/getAlbumList2.view?u=$user&p=$password&v=1.16.1&c=$client&f=json&type=newest" | \ jq -r '.["subsonic-response"].albumList2.album[0].id' } # Get album cover (kinda unsafe for my standards, should work with public instances lmao) get_albumcv(){ echo "$url/rest/getCoverArt.view?id=$latest_albumid&u=$user&p=$password&v=1.16.1&c=$client&f=json" } latest_album="$(get_album)" latest_albumid="$(get_albumid)" latest_albumcv="$(get_albumcv)" album_name="$(echo "$latest_album" | sed 's/^[^-]* - //')" catalog_number=$(get_cn "$album_name" | sed 's/[[:space:]]*$//' | tr -d '\r' | sed 's/[^[:print:]\t]//g') if [ -n "$catalog_number" ]; then check_album "$(printf "%s [%s]\n" "$latest_album" "$catalog_number")" else check_album "$latest_album" fi