Fotos de Soho v0.2
Después de un tiempo, he realizado la versión 0.2 de un script para descargar las imagenes de soho que busca ser multiplataforma, hecho en python, depende de la libreria PIL.
Para usarlo hay que crear una carpeta y alli poner el script, luego ejecutarlo como:
python2.5 soho.py
o
chmod a+x soho.py
./soho.py
Este es el código:
#! /usr/bin/env python2.5
import os, sys
from urllib2 import Request, urlopen, URLError
from PIL import ImageFile
URL = 'http://www.soho.com.co/galerias_new/mod_'
MODELO_INICIO = 205
MODELO_FINAL = 577
flag_descargar = True
def make_request(full_url):
print 'Obteniendo imagen de %s ' % full_url
req = Request(full_url)
try:
response = urlopen(req)
except URLError, e:
if hasattr(e, 'reason'):
print 'We failed to reach a server.'
print 'Reason: ', e.reason
elif hasattr(e, 'code'):
print 'The server couldn\'t fulfill the request.'
print 'Error code: ', e.code
else:
return response
def save_image(response, name):
"La imagen"
parser = ImageFile.Parser()
parser.feed(response.read())
image = parser.close()
image.save(name)
while flag_descargar:
"""
TODO: mejorar los nombres de las carpetas y de los archivos
"""
NOMBRE_CARPETA = 'soho'
if 1 <= MODELO_INICIO < 10:
NOMBRE_CARPETA+='000'
elif 10 <= MODELO_INICIO < 100:
NOMBRE_CARPETA+='00'
elif 100 <= MODELO_INICIO < 1000:
NOMBRE_CARPETA+='0'
NOMBRE_CARPETA+=str(MODELO_INICIO)
if not os.path.exists(NOMBRE_CARPETA):
full_url = URL+str(MODELO_INICIO)+'/f1.jpg'
response = make_request(full_url)
if response:
"Esto se ejecuta si encuentra la primera foto"
"Crea la carpeta"
os.mkdir(NOMBRE_CARPETA)
save_image(response, NOMBRE_CARPETA+'/f1.jpg')
"Guarda el resto de imagenes"
contador = 2
while True:
full_url = "%s%s/f%s.jpg" % (URL,str(MODELO_INICIO),str(contador))
response = make_request(full_url)
if response:
nombre_foto = '%s/f%s.jpg' % (NOMBRE_CARPETA, contador)
save_image(response, nombre_foto)
contador += 1
else:
break
else:
MODELO_INICIO += 1
else:
print "YA EXISTE LA CARPETA %s" % NOMBRE_CARPETA
if MODELO_INICIO <= MODELO_FINAL:
MODELO_INICIO += 1
else:
flag_descargar = False
No hay comentarios.:
Publicar un comentario