Categories
bash descargas linux megaupload programación proxy script software libre

script: descarga automática de Megaupload

Aprovechando que estoy aprendiendo a programar en bash y que megaupload ahora no requiere llenar ningún captcha para realizar las descargas, decidí rescribir el anterior script (escrito en python) y agregarle nuevas características.

Ahora es posible indicar una URL (con la opcion -c) y el script extrae los links de Megaupload que encuentre, me parece una funcionalidad muy conveniente ya que con el anterior script era necesario copiar a mano todos los links a un archivo de texto, lo cual puede ser muy tedioso.

Otra funcionalidad es la de usar la dirección ip de los servidores para realizar las descargas, esto ayuda a saltarse algunos proxies que están configurados para bloquear paginas por nombres de dominio en lugar de direcciones ip XD.

El script ha sido probado con Ubuntu 10.10 que es el OS que uso actualmente, pero no creo que tengan problemas usándolo en otra distro, siempre y cuando tenga instalado wget que es el programa que usa para realizar las descargas.

Pueden descargarlo del siguiente enlace:

Luego le damos permisos de ejecución y lo copian en el directorio bin:

novatoz@sney2002:~$ chmod +x mget
novatoz@sney2002:~$ sudo cp mget /bin/

Espero les sea de utilidad, y si tienen alguna inquietud o sugerencia no duden en dejarla en los comentarios.

update: corregido error que impedía descargar archivos cuyos nombres contuvieran  caracteres no ascii, los cuales están codificados usando html entities, ejemplo:

# este link no apunta a ningún archivo
http://www465.megaupload.com/files/f4f4ab2163558f1f/Capacitación.mp4
# el link es valido al cambiar ó por ó
http://www465.megaupload.com/files/f4f4ab2163558f1f/Capacitación.mp4

ahora es necesario tener instalado w3m

Categories
bash dividir archivo hjsplit linux script

script bash para dividir archivos

Si usas linux y quieres dividir un archivo grande para luego unirlo en otra maquina usando cat o hjsplit este script puede servirte; para dividir el archivo podemos usar el comando split, pero hjsplit espera que los archivos estén numerados desde el 001 y split genera archivos empezando desde el 000.

solucion?, dividir el archivo y luego renombrar las partes generadas.

1. para saber cuantos archivos se generan, podemos dividir el archivo y ver en cuantas partes se divide usando la opcion verbose y wc:

parts=`split -d -b 50M -a 3 --verbose archivo-entrada archivo-salida | wc -l`

2. conociendo cuantos archivos se crearon, podemos renombrar los archivos empesando desde al ultimo:

while [ $parts -gt 0 ]; do
# sufijo del archivo
old_suf=`printf "%03d" "$(($parts-1))`
# sufijo nuevo
new_suf=`printf "%03d" "$parts"`
#renombramos archivo
mv "$1.$old_suf" "$1.$new_suf"
# disminuimos $parts
parts=$((parts-1))
done

el script completo lo pueden descargar desde el siguiente enlacce:

Solo tienen que dejarlo en la carpeta de nautilus-scripts (~/.gnome2/nautilus-scripts), darle permisos de ejecución y listo 🙂

P.D: este es el segundo script en bash de mas de 3 lineas que hago, así que si encuentran algún error me avisan para ir mejorando u_u

Categories
descargas linux programación python script wallpaper

Fondo de escritorio cambiantes para ubuntu

El otro día convencí a un amigo para que se pasara a linux y entre las muchas preguntas que me empezaron a llegar por parte de él (todo sea por la causa), una era sobre como hacer un fondo de pantalla como esos que trae por defecto Ubuntu que cambian cada cierto tiempo, me dio mucha pena el no poder responder en el momento ya que no tenia ni idea de como funcionaba, así que me puse a la tarea y la verdad no era nada del otro mundo, solo un pequeño archivo xml que describe las transiciones de las imágenes; para ver como se estructura el archivo podemos ojear el que se encuentra en /usr/share/backgrounds/cosmos/background-1.xml.

Ahora que ya sabia como crear mis propios sliders, solo faltaba automatizar el proceso (flojo que soy), y como decidí hacer de python mi lenguaje por defecto XD, pues me puse a trabajar y esto fue lo que me salio, no es el súper programa pero intente hacerlo lo mas pythonista que pude, por favor si alguien lee esto y tiene mas conocimientos de python, se le agradecerán todos las criticas que me ayuden a mejorar u_u

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# Por: Jhonatan sneyder Salguero Villa (sney2002@gmail.com)
# Crear fondos de escritorio cambiantes
import sys, os

FORMAT = """
%(static_time).1f
%(current)s


%(transition_time).1f
%(current)s
%(next)s
"""


class BackgroundSlider():
EXTENSIONS = [".jpg", ".jpeg", ".png"]

def __init__(self, static_time = 1200):
self.xml_parts = [""]
self.static_time = static_time
self.path = os.getcwd()

def get_images(self, ext=EXTENSIONS):
""" Guardar archivos con extencion (jpg, jpeg, png) en self.images """
# Se puede especificar los archivos como argumentos
files = sys.argv[1:] or os.listdir(".")
# Filtrar imágenes
self.images = [os.path.join(os.getcwd(), img) for img in files if os.path.splitext(img)[1].lower() in ext]


def add_image(self, current, next, static_time, transition_time = 5):
""" Adicionar imagen al slider """
self.xml_parts.append( FORMAT % locals() )


def make_slider(self):
""" Crear archivo xml que define el slider """
images = self.images

# Todo termina donde empiesa U_U
images.append( images[0] )

for i in range( len(images)-1 ):
self.add_image(images[i], images[i+1], self.static_time)

self.xml_parts.append("
")


def save(self, filename = "background" ):
""" Guardar el slider """

xml = file(filename + ".xml", 'w')

try:
xml.write( "n".join(self.xml_parts) )

except IOError:
print "Error al Guardar el archivo. Intente de Nuevo"

finally:
xml.close()


if __name__ == "__main__":
slider = BackgroundSlider()

slider.get_images()

slider.make_slider()

slider.save()

Luego puse este archivo con los demás script de nautilus (~/.gnome2/nautilus-scripts) y ahora mi amigo cuando quiera un fondo de escritorio, solo selecciona las imágenes, click derecho crear wallpaper y listo. Si les interesa pueden bajar el script de este enlace: