Requisitos
- Requisitos para instalação:
- Servidor Linux Slackware, no caso, usei somente em modo texto (opcional), mas fica a seu critério;
- Placa de áudio com recurso de Audio MIX ou Cabo P2 da saída de áudio na entrada de linha ou Microfone;
- Servidor ICECAST-kh, mas tem que ser nesta versão KH, e não na versão normal do Icecast, pois iremos usar o recurso de áudio AAC Plus com o tocador de
plugin Flash gratuito na página;
- Encoder DarkIce compilado com plugin AAC Plus;
- Biblioteca LibAAC-Plus;
- Programa MPG123 para tocar as músicas;
- Conexão com a Internet com boa taxa de Upload;
- Servidor WEB, usei o Apache com suporte a PHP;
- Banco de dados de Músicas MP3.
Instalação
Faça o download dos arquivos:
Arquivos “mus33” e “loopex” atualizados, entre outros:
Bom, o sistema é simples e funcional, ficou mais de 1 mês rodando sem quedas e sem apresentar problemas. Não vou explicar como instalar e configurar o
Icecast, bem como o
Darkice e suas respectivas bibliotecas.
Descompacte o arquivo “.zip” em “/geral/”. Depois de tudo instalado e funcionando, vamos para os scripts (que são 2 principais).
Arquivo “mus33”, segue abaixo:
#!/bin/sh
#Desenvolvido por Alessandro Périgo
#email: alessandroperigo@hotmail.com
#Por Favor - Se repassar o codigo mantenha o nome do autor.
while :;
do
echo "0" > lo
#Procura se existe cantor/musica valido pra interrupcao caso contrario nao
for i in `cat lista2`; do
cantor=`echo $i | cut -d ';' -f 1`
musica=`echo $i | cut -d ';' -f 2`
# Protecao contra eventualmente usuario mantar formulario em branco
if [ $cantor <> " " ]; then
if [ $musica <> " " ]; then
if [ $cantor = "$cantor" ]; then
egrep -i "($cantor.*$musica|$musica.*$cantor)" musicalist > verifica
head -n1 verifica > verifica2
STATUS_ABF=$(egrep -i "($cantor.*$musica|$musica.*$cantor)" verifica2)
if [ -n "$STATUS_ABF" ]
then
#caso encontre um cantor valido executa o codigo abaixo, que eh pra matar processo
for i in `cat lista2`; do
c=1
while [ $c -le 2 ]
do
echo "Welcone $c times"
killall mpg123 && killall mpg123 && killall mpg123 && killall mpg123
(( c++ ))
echo "1" > lo
sleep 1
done
cantor=`echo $i | cut -d ';' -f 1`
if [ $cantor <> " " ]; then
if [ $musica <> " " ]; then
if [ $cantor = "$cantor" ]; then
rm lista && touch lista && chmod 777 lista && cp lista2 lista && chmod 777 lista && rm lista2 && touch lista2 && chmod 777 lista2 && /geral/./mus33
fi
fi
fi
done
fi
fi
fi
fi
done
for i in `cat lista`; do
cantor=`echo $i | cut -d ';' -f 1`
musica=`echo $i | cut -d ';' -f 2`
resposta="$cantor $musica"
if [ $cantor <> " " ]; then
if [ $musica <> " " ]; then
if [ $cantor = "$cantor" ]; then
#
#echo $cantor
#echo $musica
#find /geral/musica -name "*.mp3" -type f -exec ls > musicalist {} \;&&
egrep -i "($cantor.*$musica|$musica.*$cantor)" musicalist > musicalist2
head -n1 musicalist2 > musicalist3
sed -e 's/.*\///g' -e 's/\..\{3\}$//' musicalist3 > aovivo
rm musicaplay3 -f
touch musicaplay3
chmod 777 musicaplay3
conta=0
for i in `cat lista`; do
cantor=`echo $i | cut -d ';' -f 1`
musica=`echo $i | cut -d ';' -f 2`
nome=`echo $i | cut -d ';' -f 3`
if [ $cantor <> " " ]; then
if [ $musica <> " " ]; then
if [ $musica = "$musica" ]; then
#
echo "1" > lo
echo $cantor
echo $musica
echo $nome
egrep -i "($cantor.*$musica|$musica.*$cantor)" musicalist > musicaplay
head -n1 musicaplay > musicaplay2
STATUS_ABD=$(egrep -i "($cantor.*$musica|$musica.*$cantor)" musicaplay2)
if [ -n "$STATUS_ABD" ]
then
conta=$((conta+1))
final=$(sed -e 's/.*\///g' -e 's/\..\{3\}$//' musicaplay2)
echo "$conta - $nome Pediu: $final" >> musicaplay3
fi
fi
fi
fi
done
vinheta1=$(cat vinheta)
if [ "$vinheta1" == "0" ]
then
mpg123 --list vinhetas
fi
echo "1" > vinheta
#"$var1.*$var2|$var2.*$var1" file
mpg123 --list musicalist3
echo "1" > lo
fi
fi
fi
done
rm musicaplay3 -f
touch musicaplay3
chmod 777 musicaplay3
for i in `cat lista`; do
cantor=`echo $i | cut -d ';' -f 1`
if [ $cantor <> " " ]; then
if [ $musica <> " " ]; then
if [ $cantor = "$cantor" ]; then
rm lista && touch lista && chmod 777 lista && cp lista2 lista && chmod 777 lista && rm lista2 && touch lista2 && chmod 777 lista2 && /geral/./mus33
echo "1" > lo
fi
fi
fi
done
sleep 1
done
Arquivo “loopex”, segue abaixo:
#!/bin/sh
#Desenvolvido por Alessandro Périgo
#email: alessandroperigo@hotmail.com
#Por Favor - Se repassar o codigo mantenha o nome do autor.
while :;
do
c=1
while [ $c -le 4 ]
do
echo "Welcone $c times"
#killall mpg123 && killall mpg123 && killall mpg123 && killall mpg123
(( c++ ))
sleep 1
done
lostatus=$(cat lo)
if [ "$lostatus" == "0" ]
then
lostatus=$(cat lo)
if [ "$lostatus" == "0" ]
then
lostatus=$(cat lo)
if [ "$lostatus" == "0" ]
then
lostatus=$(cat lo)
if [ "$lostatus" == "0" ]
then
lostatus=$(cat lo)
if [ "$lostatus" == "0" ]
then
STATUS_ABC=`ps ax | grep mpg123 | grep -v grep | grep -v $0 | awk '{print $1}'`
if [ ! -n "$STATUS_ABC" ]
then
echo "Musicas Variadas" > aovivo
mpg123 -C -z /geral/musica/variados/*.mp3
echo "0" > vinheta
fi
fi
fi
fi
fi
fi
sleep 1
done
Estes dois arquivos trabalham em loop infinito, portando, abra um terminal pra cada um deles, o “mus33” recebe os pedidos do arquivo, lista e os toca. O
arquivo “loopex” fica responsável por tocar as músicas variadas, pois quando não há pedidos, o sistema não pode parar, e a rádio tem que continuar tocando músicas mesmo sem pedidos.
E quando há um pedido de música, e esta música consta no banco de dados, o sistema pára a música que está sendo tocada pelo sistema, e toca uma vinheta, logo depois, toca as músicas que estão na lista de pedidos.
Lembrando que o arquivo “lista” tem sempre prioridade, caso não existir nenhuma música neste arquivo, ele volta a tocar as músicas variadas que estipulei.