Mostrando entradas con la etiqueta Bash. Mostrar todas las entradas
Mostrando entradas con la etiqueta Bash. Mostrar todas las entradas

jueves, 30 de agosto de 2012

Bash - Algoritmo FizzBuzz


Bueno, hace poco coloque una forma de realizar el algoritmo FizzBuzz en Java, como no podía faltar, y siguiendo la misma lógica, ahora lo he realizado en Bash. Creo que en lo único que hay que tener atención es en expr, el cual se ocupa para realizar expresiones aritméticas. Si quieren ver el algoritmo en Java, donde explico en que consiste FizzBuzz, lo pueden encontrar en:  http://ormeno-nicolas.blogspot.com/2012/08/java-algoritmo-fizzbuzz.html


#!/bin/bash
for i in {1..100}; do
        if [ `expr $i % 3` == "0" ] && [ `expr $i % 5` == "0" ]; then
                echo "FizzBuzz "
        elif [ `expr $i % 3` == "0" ]; then
                echo "Fizz "
        elif [ `expr $i % 5` == "0" ]; then
                echo "Buzz "
        else
                echo "$i "
        fi
done

martes, 10 de abril de 2012

DownVideo - Mi script para descargar videos

He fabricado este script basado en youtube-dl para poder automatizar los procesos de descarga, dejaré tanto un link para descargar el script, como el script en si para que lo pudieran ver:
#!/bin/bash
#Author: Nicolás Ormeño
#Date: 2012/04/10
user=`whoami`
echo "Bienvenido " $user
echo "---------------"
read -p "Elija directorio para la descarga: " path
if [ ! -d $path ]; then
        echo "El directorio no existe"
exit
else
        cd $path
fi
read -p "Descargar Video o solo audio (video/audio)? " va
read -p "¿Descargar desde contenedor? (s/n) " container
if [ $container = s ]; then
read -p "Indique contenedor: " pathContainer
elif [ $container = n ]; then
read -p "Indique link a descargar: " link
else
echo "Error al contestar, por favor elija s o n"
fi
if [ $va = video ]; then
read -p "¿Buscar máxima calidad? (s/n) " quality
if [ $container = n ]; then
if [ $quality = n ]; then
echo "`youtube-dl --console-title --title $link`"
exit elif [ $quality = s ]; then
echo "`youtube-dl --console-title --title --max-quality=FMT $link`"
exit
fi
elif [ $container = s ]; then
if [ $quality = n ]; then
echo "`youtube-dl --console-title --title -a $pathContainer`"
exit
elif [ $quality = s ]; then
echo "`youtube-dl --console-title --title --max-quality=FMT -a $pathContainer`"
exit
fi
fi
elif [ $va = audio ]; then
read -p "Elija formato de audio: (acc, mp3, best): " format
if [ $container = n ]; then
if [ $format = acc ]; then
echo "`youtube-dl --console-title --title --extract-audio --audio-format=acc $link`"
exit
elif [ $format = mp3 ]; then
echo "`youtube-dl --console-title --title --extract-audio --audio-format=mp3 $link`"
exit
elif [ $format = best]; then
echo "`youtube-dl --console-title --title --extract-audio --audio-format=best $link`"
fi
elif [ $container = s ]; then
if [ $format = acc ]; then
echo "`youtube-dl --console-title --title --extract-audio -a $pathContainer`"
exit
elif [ $format = mp3 ]; then
echo "`youtube-dl --console-title --title --extract-audio --audio-format=mp3 -a $pathContainer`"
exit
elif [ $format = best ]; then
echo "`youtube-dl --console-title --title --extract-audio --audio-format=best -a $pathContainer`"
exit
fi
fi
fi
También pueden descargarlo desde:
http://www.4shared.com/file/XCwytq9W/DownVideo.html?
Luego de descargarlo de damos permiso de ejecución:
$ chmod +x DownVideo.sh
Ahora simplemente lo ejecutamos
 $ sh DownVideo.sh
El método de ejecución del Script es sumamente sencillo, en primer lugar deben tener instalado youtube-dl para poder ejecutar dicho script, al menos en Debian la instalación es:
$ sudo aptitude install youtube-dl
Luego simplemente siguen los pasos que va pidiendo el Script, en primera instancia preguntará la ruta donde queramos dejar el fichero descargado, por ejemplo seleccionamos:
/home/usuario
Despues preguntará si queremos descargar el video o solamente el audio de este, debemos seleccionar “video” o “audio” según corresponda.

Luego nos preguntará si lo descargamos de un contenedor o no. Un contenedor es un archivo que contiene todos los link, por ejemplo:
$touch videos
$echo "http://www.youtube.com/watch?v=v0SrkOzo0kQ&feature=player_embedded" >>videos
Por lo que ven, es un archivo que simplemente tiene los link de todos los videos que queremos descargar. En el caso que no que queramos solo descargar 1 link, le decimos que no queremos descargar desde contenedor, así nos dira que ingresemos el link e ingresamos la url del video.

Después vienen opciones de video o audio.

El porcentaje de progreso y el tiempo estimado de la descarga la pueden ver en la barra de titulo de la terminal.

Espero les sirva de utilidad, cualquier pregunta la pueden realizar y responderé sin ningún problema.