Sathariel creó el siguiente script para escuchar cualquier estación de radio, para ello se requiere crear el archivo ~ / .radio, allí debe de guardar todas sus estaciones en una lista utilizando la siguiente sintaxis:
TITLE | URL
Puede editar este script y reemplazar audacious por su reproductor de audio favorito, si usa un reproductor de audio de terminal puede eliminar el comando nohup y la última parte también (&> /dev/null &)
#!/bin/sh
[[ ! -f ~/.radio ]] && echo "Configuration file not found" && exit 1
opts=$(awk -F'|' '
BEGIN {
n = 0
s = "on"
}
{
n += 1
printf("%s \"%s\" %s ", n, $1, s)
s = "off"
}
' ~/.radio)
[[ -z $opts ]] && echo "Error reading configuration" && exit 1
stream=$(echo $opts | xargs dialog --output-fd 1 --radiolist "Select a source" 10 50 10)
[[ $? -eq 0 ]] && nohup audacious $(sed -n ${stream}p ~/.radio | cut -d '|' -f 2) &> /dev/null &
Script para actualizar los registros A por estaciones de shoutcast
Varias estaciones de radio cambian su ip, esa es la razón por la que cree este script, no es interactivo así que debe editarlo, remplace http://yp.shoutcast.com/sbin/tunein-station.m3u?id=1177763 con el archivo m3u que puede encontrar en http://directory.shoutcast.com dándole click en descargar con el botón derecho del mouse.
Entonces remplace xxxxxxxxxxxxxxxxxxxxxxxxx con la llave de la api de Cloudflare api key, y admin@example.com con su email de Cloudflare.
Remplace aaaaaaaaaaaaaaaaaaaaaa con el id de la zona y bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb con el id de registro dns (subdominio).
a=$(curl -s http://yp.shoutcast.com/sbin/tunein-station.m3u?id=1177763 | tail -1 | cut -d "/" -f 3 | sed -e 's/:.*//g')
curl -X PUT "https://api.cloudflare.com/client/v4/zones/aaaaaaaaaaaaaaaaaaaaaa/dns_records/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" \
-H "X-Auth-Email: admin@example.com" \
-H "X-Auth-Key: xxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
--data $( echo '{"type":"A","name":"example.com","content":"$a","ttl":120,"proxied":false}' | sed -e "s/\$a/$a/g" )
Puede ejecutar este script como un cronjob para que se ejecute todos los días:
0 0 * * * bash /home/example/script.sh
Puede obtener el ID de la zona ejecutando este comando:
curl -X GET "https://api.cloudflare.com/client/v4/zones" \
-H "X-Auth-Email: admin@example.com" \
-H "X-Auth-Key: xxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json"
Y puede obtener el ID del registro DNS con el siguiente comando:
curl -X GET "https://api.cloudflare.com/client/v4/zones/aaaaaaaaaaaaaaaaaaaaaa/dns_records" \
-H "X-Auth-Email: admin@example.com" \
-H "X-Auth-Key: xxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json"