43 行
1.3 KiB
Bash
実行ファイル
43 行
1.3 KiB
Bash
実行ファイル
#!/bin/sh
|
|
|
|
# Return a stream URL from a Subsonic server
|
|
|
|
#SUBSONIC_SERVER="https://example.com"
|
|
#SUBSONIC_USER="user"
|
|
#SUBSONIC_PASSWORD="password"
|
|
|
|
tmp=$(mktemp -p /tmp/)
|
|
|
|
printf "Enter your query\n-> "
|
|
read -r query
|
|
|
|
curl -sG --data-urlencode "query=$query" \
|
|
"$SUBSONIC_SERVER/rest/search3?u=$SUBSONIC_USER&p=$SUBSONIC_PASSWORD&v=1.16.1&c=bash&f=json" |
|
|
jq -s '[.[] | ."subsonic-response".searchResult3.song[] | {id:.id, title:.title, artist:.artist}] | [limit(5;.[])]' > "$tmp"
|
|
|
|
[ -z "$(cat "$tmp")" ] && printf "\n\e[1;31m[!] \e[107;mNo result\n\n" && rm "$tmp" && exit 1
|
|
|
|
length=$(( "$(jq '. | length' "$tmp")" - 1))
|
|
i=0
|
|
printf "\n"
|
|
while [ "$i" -le "$length" ]; do
|
|
title=$(jq -s '.[] | .['"$i"'].title' "$tmp" | sed 's/\"//g')
|
|
artist=$(jq -s '.[] | .['"$i"'].artist' "$tmp" | sed 's/\"//g')
|
|
printf "\e[1;32m[%s] \e[107;m%s by %s\n" $(("$i"+1)) "$title" "$artist"
|
|
i=$((i + 1))
|
|
done
|
|
|
|
printf "\nSelect track number\n-> " && read -r number
|
|
number=$(( "$number" - 1 ))
|
|
|
|
title=$(jq -r '.['"$number"'].title' "$tmp")
|
|
artist=$(jq -r '.['"$number"'].artist' "$tmp")
|
|
id=$(jq -r '.['$number'].id' "$tmp")
|
|
|
|
url="$SUBSONIC_SERVER/rest/download?u=$SUBSONIC_USER&p=$SUBSONIC_PASSWORD&v=1.16.1&c=curl&f=json&id=$id"
|
|
|
|
printf "%s" "$url" | xclip -sel c
|
|
printf "Copying the URL for \e[1;32m%s \e[107;mby %s to clipboard.\n" "$title" "$artist"
|
|
|
|
rm "$tmp"
|