martes, 12 de julio de 2011

Scripts útiles

Scripts útiles

Hace mucho no publicaba nada en mi Bitacora.. pues bien, el presente trabajo fue realizado originalmente como un post en Taringa.

El contenido del presente post es a su vez un recopilatorio de trabajos realizados, al final del mismo agregare las respectivas fuentes disponibles.

Antes de empezar aclaro que estos scripts trabajan sobre BASH, interprete de ordenes basado en Unix. En este caso se trabaja con wget, mplayer y mpg123. Para aquellos que no estén muy empapados en el tema, wget es una herramienta libre que permite descargar contenido de la web, mplayer y mpg123 son reproductores con singulares características, de las cuales encontraran mayor información en la web.

Básicamente podrían usarse en una terminal como:
* Para escuchar canciones de una carpeta "mpg123 -C -Z *.mp3" ( toca todas las canciones de una carpeta, de manera aleatorea y con los controles respectivos de mpg123, para mayor información digitar en terminal "man mpg123" (ogg123 puede usarse de manera similar)
* Escuchar una emisora "mplayer http://stream01.noisefm.pl:8000" (Igual que para ver canales de video, toca tener la url)
* Descargar de una pagina web " wget urldescarga" (no tengo una url de descarga de momento, pero de hecho con esto pueden descargar toda una secuencia de imágenes de una pagina, por ejemplo con el comando "wget -r -l1 -H -t1 -nd -N -np -A.jpg -erobots=off ", para mayor información consultar aca mismo en Taringa sobre este comando)

Recordemos que para hacer scripts, utilizarlos y demas, debemos abrir nuestro editor de texto favorito, darle los permisos adecuados (puede ser simplemente con chmod 755) y para ejecutarlo se debe anteponer "./". Para mayor información aca mismo en Taringa se encuentran los tutoriales.


Photobucket


El primer script, hago la aclaración, lo saque de aca mismo en Taringa en el siguiente post, otros también lo tienen:
http://www.taringa.net/posts/linux/1009809/_Linux_-Algunos-_4_-scripts-de-bash.html
El script es lo mismo, lo unico es que les explicare como agregarle emisoras, para hacerlo mas personalizado.

En primer lugar tenemos el script, al cual de hecho no le he quitado el nombre del autor

http://www.taringa.net/posts/linux/1009809/_Linux_-Algunos-_4_-scripts-de-bash.html

###############################################################################

!/bin/bash
# Modificada
# llama a mplayer, segun la radio indicada
#
# Fixes en etapa de ejecucion por Arturo 'Buanzo' Busleiman
# - 20070104

case "$1" in
#
# Radios
#

mb) # Music box de videos
URII="mms://81.89.49.210/musicbox?MSWMExt=.asf"
;;
mega) # Mega 98.3 Puro Rock Nacional
URII='http://mega.telecomdatacenter.com.ar/mega'
;;
977) # .977 The 80s Channel
URII="http://scfire-ntc-aa01.stream.aol.com:80/stream/1040"
;;
tly) # CRIK FM - The Lynx is your link to the 60s, 70s, 80s, 90s and today!
URII="http://91.121.6.109:8016"
;;
Noise) # Rock Niezalzne
URII="http://stream01.noisefm.pl:8000"
;;
R98) # Rock 98.8 emisora yanki
URII="http://188.165.37.109:9699"
;;
525) # 525 power tracks rock
URII="http://fastcast4u.com:9256"
;;
nr) # netrock 101
URII="http://netrock101.servebeer.com:8418"
;;
classic) # Musica barroco
URII="http://baroque.kizugawa.coop:8004"
;;
unad) # Radio unad virtual
URII="http://190.66.14.209:80/"
;;
Rr1) # Rock Radio 1
URII="http://94.23.16.167:8000/"
;;
jav) # Universidad Javeriana
URII="mms://streaming.javeriana.edu.co/emisora?MSWMExt=.asf"
;;
jazz) # Sky fm musica jazz
URII="http://u14b.sky.fm:80/sky_smoothjazz_aacplus"
;;
#
# television
#
une) # Tellevision une
URII="mms://streaming1.vcb.com.co/unemedellin"
;;
tn24) # TN 24 Horas
URII="mms://wmedia01.uigc.net/TN"
;;
Rr1) # Rock Radio 1
URII="http://94.23.16.167:8000/"
;;
jav) # Universidad Javeriana
URII="mms://streaming.javeriana.edu.co/emisora?MSWMExt=.asf"
;;
#
# Webcams
#

tl) # Trafico luxenburgo
URII="http://streaming.newmedia.lu/cita"
;;


*)
echo "
Uso: radio.sh opci

**Emisoras**

Rr1 (Rock radio 1)
Noise (Rock Noise.fm)
R98 (Rock 98.9)
525 (525 power tracks rock)
nr (netrock 101)
mega ( Mega 98.3 Rock Argentino)
977 (Musica de los 80s)
classic (Clasica Barroco)(En ocaciones se debe intentar mas de una vez)
jav (Universidad Javeriana)
unad (Universidad de la unad)
jazz (Sky fm emisora de jazz)


**Videoclips**

mb (Music Box Videos)

**Webcams**

tl (Trafico en Luxenburgo)

"
exit 1
;;
esac

mplayer -af lavcresample=44100 -cache 64 "$URII"

################################################################################

Con este script podremos escuchar emisoras de radio y algunas canales por streaming. Para cambiar la emisora, solo tendrán que agregar la constante, por ejemplo yo agregue "jazz) # Sky fm musica jazz" donde esta ejecuta la variable URII que contiene la url y que llama al programa en cuestión que nos permitirá oír la emisora, en este caso mplayer.

De donde descargar la URL??

Pueden optar por la pagina de radio de winamp "http://www.shoutcast.com/", donde encontraran muchas emisoras disponibles, casi cualquier tipo. En esta pagina tendrán acceso a la pagina de la emisora en cuestión, por ejemplo:

http://www.noisefm.pl/

De esta pagina lo que me sirve es el archivo de descarga de la emisora para winamp o cualquier reproductor mencionado el cual me de el acceso a la url, en muchos de los casos en un archivo con formato .m3u .pls. o etc... Como la siguiente imagen


Photobucket

Ahora lo unico es cojer el archivo .m3u y abrirlo con su editor de texto favorito, en mi caso emacs. Les arrojara lo siguiente:

#EXTM3U
#EXTINF:-1,Serwer G³owny NOISEfm.pl - Niezale¿ne Radio Rock ! (96kbps 44 kHz)
http://stream01.noisefm.pl:8000/

Por regla general, lo que va en almohadilla # no vale.. no cuenta. justamente nos arroja el dato que necesitamos: http://stream01.noisefm.pl:8000/
Este es el dato que necesitamos para agregarlo a la emisora, para mayor ejemplo se pueden guiar en la plantilla del código.
Photobucket

En el segundo script me disculparan, pero no recuerdo la fuente, ya que los scripts que les traigo los tengo desde hace ya un tiempo.

Para el siguiente se trabajara con wget. tenemos que:

############################################################################

#bin/bash
#Si el usuario no pone lo que busca en la linea de comandos, se lo pedimos.
if [ $1 ]; then
TITULO="$@"
else
echo "Introduce el ti­tulo de la cancion del artista:"
read TITULO
fi

#Descargamos el PHP correspondiente al título.
wget http://goear.com/search.php?q="$TITULO"

#La línea 130 contiene todos los enlaces a goear... de risa pero bueno.
head -130 search.php?q="$TITULO" | tail -1 > canciones.txt

#Mediante ER, obtenemos una lista de canciones y una lista de enlaces.
egrep -o 'listen/......./[^"]*' canciones.txt > enlaces.txt
egrep -o '"Escuchar[^"]*' canciones.txt > titulos.txt

#Mostramos al usuario los que ha encontrado en la primera página.
Linea=1
cat titulos.txt | while read line;
do {
echo $Linea: ${line:9}
let 'Linea += 1'
}
done

#Si no encuentra nada, sale.
CONDICION=`wc -l titulos.txt | awk '{print $1}'`
if [ $CONDICION == 0 ]; then
echo "No hay resultados. Prueba buscando otra cosa."
rm search.php?q="$TITULO" canciones.txt enlaces.txt titulos.txt
exit
fi

#Leemos qué canción quiere el usuario bajarse.
echo "¿Cuál te quieres bajar? Indica el número: (0 para Cancelar)"
read NUMERO

#Cero para Cancelar
if [ $NUMERO = 0 ]; then
rm search.php?q="$TITULO" canciones.txt enlaces.txt titulos.txt
echo "Hasta pronto."
exit
fi

#Concatenamos http://www.goear.com con el contenido de aBajar.txt.
#PD: Alguien sabe hacerlo de manera más sencilla?
GOEAR=http://www.goear.com/
head -$NUMERO enlaces.txt | tail -1 > aBajar.txt
for LISTEN in `cat aBajar.txt`
do
ENLACE=${GOEAR}${LISTEN}
done
echo $ENLACE

#A partir de aquí el script no es mío, pero es muy sencillo de leer.
fileid=`echo $ENLACE | cut -d '/' -f 5`
xmlurl="http://www.goear.com/tracker758.php?f="$fileid
infoline=`wget -qO- $xmlurl | grep ".mp3"`
mp3url=`echo $infoline | cut -d '"' -f6`
artist=`echo $infoline | cut -d '"' -f10`
title=`echo $infoline | cut -d '"' -f12`
cd /media/hd/Musica/Descarga
wget $mp3url -O "$artist-$title.mp3"
rm search.php?q="$TITULO" canciones.txt enlaces.txt titulos.txt aBajar.txt

##############################################################################

Este script nos facilitara descargar de la pagina "http://www.goear.com/" la musca que queramos, algo asi como un grooveshark. Simplemente escribimos el scritp seguido de la canción que queramos descargar, aquella que en su momento se nos ocurra. Un ejemplo "./goear.sh Manowar" y nos arrojara una serie de resultados correspondientes a la búsqueda. Escojamos y listo.. comienza a descargar como solo wget lo sabe hacer. OJO, en la linea "cd /media/hd/Musica/Descarga" casi al final, es el directorio de descarga donde yo guardo todo... ustedes lo pueden cambiar a su gusto para que descargue en el directorio que ustedes deseen.


Photobucket

El ultimo script que doy a exponer, nos facilita escoger una canción de mucha que tengamos con mpg123. a continuación:

##############################################################################

#!/bin/bash
if [ ! -e mp3list.txt ]; then
echo "Listing all mp3 on your / "
find / -name *.mp3 > mp3list.txt
fi

echo -n > tpl.tmp
i=1
while true; do
l=`echo $1, | cut -d"," -f$i`
let i=i+1
if [[ -z "$l" ]]; then
break
fi
`cat mp3list.txt | grep -i $l >> tpl.tmp`
done



sed = tpl.tmp | sed 'N;s/\n/\t/;s/\/.*\///g;s/.mp3//' | more # number lines and strip of directories and extensions.
line=1;
max=`wc -l tpl.tmp | cut -s -d" " -f1`
if [ ! "$max" -eq 0 ] && [ ! "$max" -eq 1 ]
then
echo -n "Enter song number [MAX $max]: ";
read line
elif [ "$max" -eq 0 ]; then
exit 0
fi

for i in `seq 1 10`;
do
l=`echo "$line 0" | cut -s -d" " -f$i`
echo "Playin : $l";
if [ -z "$l" ] || [ "$l" -le 0 ]; then
exit 0 #Exit here
fi

filename=`more +$l tpl.tmp | head -n 1`
#echo "$filename"
if [ "$l" -gt "$max" ]; then
echo "Out of bounds $max "
else echo "Playing $filename"
mpg123 -Cv "$filename"
fi

done

echo "OveR"; #doesnt reach

##############################################################################

Que hace este script?

Sencillo, la primera vez que es ejecutado escanea el equipo por música y crea un listado, para que cada vez que nosotros lo utilicemos, pueda acceder rápidamente a nuestra solicitud. A modo de ejemplo, yo llame a este script mpg123.sh. Lo ejecutamos así "./mpg123.sh Archenemy". Tengo los álbumes de Archenemy en x directorio, el scritp me trae todas las canciones del directorio y las enumera, de tal manera que me da a elegir que canciones escuchar de acuerdo a la enumeración. Solo debo ponerle 05, y me ejecutara la canción listada numero 05 en el orden expuesto. Si yo quiero escuchar determinado numero de canciones, solo hay que indicarlas dando un carácter de espacio, es decir, 01 02 03 21 22 23 .......
La fuente del ultimo código la encuentran en
http://digitalpbk.blogspot.com/2008/05/bash-mp3-player-mpg123-sed-playlist.html



Definitivamente este es uno de los motivos por los cuales me quedo con linux, y es que soy dueño de mi propia información y del manejo, no es sencillo, pero con consultar y estudiar un poco el tema se pueden hacer cosas incluso mejores que estas, adecuadas a nuestras necesidades reales.

Cualquier comentario es motivación para trabajar mas a menudo en este tipo de exposiciones.

Photobucket

No hay comentarios:

Publicar un comentario