dotfiles/.bin/subsonic
2023-02-22 08:31:38 +01:00

82 lines
2.2 KiB
Bash
Executable File

#!/bin/sh
# subsonic
alias subsonic-cli="\subsonic-cli -c $HOME/.subsonic-cli.conf"
subsonic-play() {
# $1 songId
for song in $@
do
echo $song > /tmp/.playing
subsonic-cli stream -p id $song \
| mpv --loop=no -
done
}
subsonic-random() {
while true;
do
echo "Fetching moar dataaa.."
subsonic-play $(subsonic-cli getRandomSongs \
| jq -r '.randomSongs[][].id')
done
}
subsonic-favorites() {
while true;
do
echo "Fetching moar dataaa.."
subsonic-play $(subsonic-cli getStarred \
| jq -r '.starred[][].id' \
| sort -r)
done
}
subsonic-search() {
{
echo "|ALBUMID|ID|ALBUM|ARTIST|TITLE|GENRE|"
printf "|%s|%s|%s|%s|%s|%s|\n" "--------------------------------"\
"--------------------------------"\
"--------" "--------" "--------" "--------"
subsonic-cli search3 \
-p songcount 200 \
-p query "$@" \
| jq -r '.searchResult3[][]|select(.contentType!=null)|[.albumId,.id,.album,.title,.artist,.genre]' \
| tr -d '", ' \
| awk '/^\[/ { S++ } \
/^\]/ { S-- } \
S==0 { NR=0 } \
NR==2 { AID=$0 } \
NR==3 { ID=$0 } \
NR==4 { ALBUM=$0 } \
NR==5 { TITLE=$0 } \
NR==6 { ARTIST=$0 } \
NR==7 { GENRE=$0 } \
NR==0 { printf("|%s|%s|%s|%s|%s|%s|\n", AID, ID, ALBUM, ARTIST, TITLE, GENRE) }'
} | column -s'|' -t
}
subsonic-star() {
[ -f /tmp/.playing ] \
&& subsonic-cli star -p id $(cat /tmp/.playing | tail -1) \
|| echo bruh.
}
subsonic-unstar() {
[ -f /tmp/.playing ] \
&& subsonic-cli unstar -p id $(cat /tmp/.playing | tail -1) \
|| echo bruh.
}
subsonic-download() {
# $1 albumId
NAME=$(subsonic-cli getAlbum -p id $1 \
| jq -r '.album.artist,.album.name' | xargs | tr ' ' '-')
printf "Downloading to %s/subsonic-download/%s.zip\n" "$HOME" "$NAME"
mkdir -p "$HOME/subsonic-download"
subsonic-cli download -p id $1 | pv > "$HOME/subsonic-download/$NAME.zip"
}
subsonic-$1