From caca9fea924e0372411d4970a1cd8f0e9fa300e1 Mon Sep 17 00:00:00 2001 From: ydreniv Date: Wed, 25 Jan 2023 10:14:10 +0000 Subject: [PATCH] feat(init): Initial config --- README.md | 5 ++++- random-somafm.sh | 25 +++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 1 deletion(-) create mode 100755 random-somafm.sh diff --git a/README.md b/README.md index e3e4759..45a8646 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,6 @@ # somafm-scripts -A collection of scripts about SomaFM \ No newline at end of file +A collection of scripts about SomaFM + +* `random-somafm.sh` : Picks up a random SomaFM station + Unfortunately, it requires xmllint, which is not installed on Tilde Town. diff --git a/random-somafm.sh b/random-somafm.sh new file mode 100755 index 0000000..2d0209c --- /dev/null +++ b/random-somafm.sh @@ -0,0 +1,25 @@ +# This script aims at getting a random SomaFM channel +# I may make it a "SOMAFM channel library" if I feel like it. +# +# 2023 - ydreniv + +XML_URL="https://somafm.com/channels.xml" +XML_DOC="/tmp/somafm_channels.xml" + +curl "$XML_URL" -o $XML_DOC -s + +# get the number of channels + +channel_count=$(xmllint --xpath 'count(/channels/channel)' "$XML_DOC") +echo "There are $channel_count channels." + +# print all channels ID +# xmllint --xpath '/channels/channel/@id' "$XML_DOC" + +# get random channel +rdnum=$(( ( RANDOM % $channel_count ) + 1 )) +chan_name=$(xmllint --xpath "/channels/channel[$rdnum]/title/text()" "$XML_DOC" --nocdata) +chan_pls=$(xmllint --xpath "/channels/channel[$rdnum]/highestpls/text()" "$XML_DOC") +chan_id=$(xmllint --xpath "string(/channels/channel[$rdnum]/@id)" "$XML_DOC") +chan_url="https://somafm.com/$chan_id" +echo "$chan_name - $chan_url : $chan_pls"