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

4.13.2007

presql

Desde hace algun tiempo he estado trabajando en un script en Python para crear un catalogo del contenido de mis cds.

Tras varios intentos y versiones tengo una (la b0_0) que trabaja de forma bastante descente.

En windows arroja el mensaje de error:
error al leer directorio
exceptions.OSError

Pero genera el listado (con la extencion .presql). Aun tengo que provarlo en linux (y hacer que quite el path donde se monta)

La forma de uso es presql-b0_0.py unidad nombre_del_cd
presql-b0_0.py e:\ mis-fotos

El archivo presql de salida tiene insert's para MySql


presql-b0_0.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os, sys, re

if len(sys.argv) == 3:
top = sys.argv[1]
archivo = sys.argv[2] + ".presql"
else:
print "error en el numero de parametros"
sys.exit(2)

#::debug::
#print "*"*8
#print sys.argv
#print top
#print "*"*8

#variables globales
patron = "\S:" #patron de exprecion regular
xver = "b0_0" #version

dirs = []
archivos = []

#recorre en forma recursiva el path dado
try:
dirs = [os.path.join(top, f) for f in os.listdir(top) if os.path.isdir(os.path.join(top, f))]
for d in dirs:
dirs += [os.path.join(d, f) for f in os.listdir(d) if os.path.isdir(os.path.join(d, f))]
dirs += [os.path.join(d, f) for f in os.listdir(d) if os.path.isfile(os.path.join(d, f))]
except os.error:#arroja error
print "error al leer directorio"
print os.error

#print dirs
#print "\n" + "- " * 8

fArch = open(os.path.join(top, archivo),"w")
fArch.write(xver + '\n')
print "* " * 5
print "\ncreando lista en " + os.path.join(top, archivo)
#print "* " * 5

for name in dirs:
name = os.path.join(top, name)
if os.path.isfile(os.path.join(top, name)):
#quitar la unidad (ej d:\\)
top = re.split(patron, top)[-1]
#name = re.split(pat, name)[-1]

#cambia los ´ ' y " por ''
for s in "'´\"":
top = top.replace(s, "''")
name = name.replace(s, "''")

#cambia el backslash por slash
for s in "\\":
name = name.replace(s, "/")
top = top.replace(s, "/")

#crea el insert
sql1 = "INSERT INTO 'cd_cat' ('dir', 'archivo', 'nombre' ) VALUES ('" + top + "' ,'" + name + "' ," + "'" + archivo + "' );\n"
fArch.write(sql1)

#cierra el archivo
fArch.close()
print "terminado"


-----------
Banda: The Wolfgang Press
Album: The Legendary Wolfgang Press and Other Tall Stories (1985)
Titulo: Heart Of Stone

6.04.2006

[code] Como cortar una imagen en thumbs (2)

Pues gracias a la ayuda de la gente de cofradia resolvi el prolema.

Era cosa de los ciclos for. Aqui el post completo

5.23.2006

[code] Como cortar una imagen en thumbs

Este script en python corta una imagen cachitos, aun falta mejorarlo, pero funciona

La forma de uso es python img_cut.py imagen 100 100 1
donde:
-imagen es el nombre de la imagen
-100 100 es el alto y ancho de las imagenes resultantes
-1 es un indicador para reconocer la imagen (cuando hay varias)
regresa imagenes con formato png

import Image

import sys

import time



image = Image.open(sys.argv[1])

tile_width = int(sys.argv[2])

tile_height = int(sys.argv[3])

zoom_level = int(sys.argv[4])



currentx = 0

currenty = 0



if image.size[0] % tile_width == 0 and image.size[1] % tile_height ==0 :

print "::::[", sys.argv[1] , "]---------\n width: ", image.size[0], "\n height:", image.size[1]

print "\n thumbnails de: ", tile_width, " x ", tile_height

ww = image.size[0] / tile_width

hh = image.size[1] / tile_height



print " width: ", ww

print " height: ", hh

print "- " * 10, "\n"



currentx = 0

currenty = 0



zw = 0

zh = 0



for zw in range (0, ww):

currentx += tile_width

for zh in range (0,hh):

currenty += 100

#print currentx, currenty

#print currentx,",",currenty ,"\n ->( ", currentx + tile_width, ",", currenty + tile_height,")\n"



thumb = (currentx,currenty,currentx + tile_width, currenty + tile_height)

tile = image.crop(thumb)

print "x" + str(zw) + "y" + str(zh) + "z" + str(zoom_level) + ".png"

time.sleep(.5)

tile.save("x" + str(zw) + "y" + str(zh) + "z" + str(zoom_level) + ".png","PNG")



if currenty <= image.size[1]:

currenty =0



else:

print "sorry your image does not fit neatly into",tile_width,"*",tile_height,"tiles"

1.11.2006

back01.bat

Este archivo bat copia/respalda archivos y directorios a una maquina en una red windows con una carpeta/directorio compartido (\\equipo\directorio), el directorio tiene que poder ser accedido sin nesesidad de password

El origen y destino de los archivos estan indicados en un archivo de configuracion (CFG en este ejemplo)


----------back01.bat-------------
@ECHO OFF

REM BACK v0.1
REM CREADO EL dom ene 08 18:44:21 CST 2006
REM POR STORMBRINGER
REM BAJO UNA LICENCIA CREATIV COMMONS
REM Atribución-NoComercial-CompartirDerivadasIgual 2.50
REM http://creativecommons.org/licenses/by-nc-sa/2.5/
REM http://creativecommons.org/licenses/by-nc-sa/2.5/legalcode

REM -LIMITACION DE RESPONSABILIDADES-
REM EL CREADOR NO SE HACE RESPONSABLE POR UN USO
REM MALINTENCIONADO O DAÑOS CAUSADOS POR EL USO DE ESTE ARCHIVO.


REM COPIA ARCHIVOS DE UN PUNTO A OTRO,
REM DE FORMA QUE SOLO SE COPIEN ARCHIVOS NUEVOS Y
REM SE SOBREESCRIBAN LOS QUE TENGAN UNA FEHA DE CREACION
REM POSTERIOR A LOS EXISTENTES



REM VARIABLES Y CONFIGURACION

REM SE ASUMEN LOS SIGUIENTES DATOS:
REM 1-QUE EL NOMBRE DEL EQUIPO REMOTO ES [REQUIPO] SIN LOS BACKSLASH (\\).
REM 2-EL EQUIPO REMOTO TIENE QUE PODER SER ACCEDIDO POR EL USUARIO
REM SIN NESESIDAD DE PASSWORD (A MODOFOCAR EN VERSIONES POSTERIORES).
REM 3-QUE LA CARPETA/DIRECTORIO ES [%USERNAME%].
REM 4-QUE LA UNIDAD LOGICA DONDE SE VA A VER (MAPEAR) EL EQUIPO ES [Y].
REM 5-QUE EL ARCHIVO CON LOS LOGS ES [LOGS.LOG].
REM 6-QUE EL ARCHIVO CON LOS DIRECTORIOS/CARPETAS A RESPALDAR Y LOS
REM DESTINOS ESTAN EN EL ARCHIVO [CFG].

REM NOMBRE DEL EQUIPO REMOTO
SET EQREMOTO=REQUIPO

REM DIRECTORIO REMOTO
SET DRREMOTO=%USERNAME%

REM UNIDAD A MAPEAR
SET UNIDAD=Y

REM ARCHIVO CON PATHS A RESPALDAR/COPIAR
SET CFG=CFG

REM ARCHIVO CON LOS LOGS
SET LOGS=LOGS.LOG



REM CARGA CAJA DE INICIO
REM TMP CONTIENE LA ETIQUETA DE UN GOTO VARIABLE
SET TMP=PROC
GOTO MSG0

REM **************************
REM PROCESO PRINCIPAL
:PROC

REM CHECA SI EXISTE EL ARCHIVO CON LOS PATHS
REM EN CASO DE NO EXISTIR MUESTRA UNA CAJA DE ERROR Y TERMINA
if NOT exist %CFG% GOTO MSERR

REM AGREGA AL ARCHIVO LOG
ECHO --------------------------------------------[%date% %TIME%]--- >> %LOGS%

REM MAPEA UNIDAD
NET USE %UNIDAD%: \\%EQREMOTO%\%DRREMOTO% >> %LOGS%

GOTO MSGPROC
:PROCESO1

REM COPIA
REM NO SE USA
REM y /d /e /c /f /h /z %ORIGEN% %UNIDAD%:\ >> %LOGS%

ECHO . >> %LOGS%
REM LEE RECURSIVAMENTE EL ARCHIVO CON LOS PATHS Y HACE EL XCOPY
REM for /F "eol=" %%i in (%CFG%) do xcopy /d /e /c /f /h /z %%i %UNIDAD%:\ >> %LOGS%

for /F "eol=; tokens=1,2* delims= " %%i in (%CFG%) do xcopy /I /Y /d /e /c /f /h /K /R /z %%i %UNIDAD%:\%%j >> %LOGS%

REM @echo UNO: (%i) DOS: (%j)

REM QUITA MAPEADO
ECHO . >> %LOGS%
NET USE %UNIDAD%: /DEL >> %LOGS%

REM AGREGA AL ARCHIVO LOG
ECHO --------------------------------------------[TERMINADO]--- >> %LOGS%

SET TMP=FIN
GOTO MSG1


REM ************************************
REM ************************************
REM CAJAS

:MSGPROC
@CLS
ECHO ....RESPALDO DE ARCHIVOS.................................
ECHO . .
ECHO . COPIANDO ARCIVOS, NO CIERRE ESTA VENTANA .
ECHO . .
ECHO .........................................................

GOTO PROCESO1

:MSGERR
@CLS
ECHO ....RESPALDO DE ARCHIVOS.................................
ECHO . ERROR .
ECHO . EL ARCHIVO %CFG% CON LAS RITAS NO EXITE .
ECHO . .
ECHO .........................................................

GOTO FIN

:MSG0
@CLS
ECHO ....RESPALDO DE ARCHIVOS.................................
ECHO . .
ECHO . POR FAVOR CIERRE OUTLOOCK Y LOS DOCUMENTOS .
ECHO . QUE TENGA ABIERTOS (EXCEL, WORD, ETC...) .
ECHO . Y PRECIONE CUALQUIER TECLA PARA EMPEZAR O .
ECHO . [CONTROL+C] PARA CANCELAR ESTE PROCESO .
ECHO . .
ECHO . *** ESTE PROCESO ACTUALIZA (SOBRE-ESCRIBE) *** .
ECHO . *** LOS ARCHIVOS EXISTENTES *** .
ECHO .........................................................
PAUSE

GOTO %TMP%

:MSG1
@CLS
ECHO ....RESPALDO DE ARCHIVOS.................................
ECHO . .
ECHO . PROCESO TERMINADO .
ECHO .........................................................
PAUSE

GOTO %TMP%

:FIN

----------------EOF----------------

Este es el archivo de configuracion.
La forma del archivo es:
origen destino

Donde el origen es obligatorio, mientras que el destino es opcional

------------------CFG-------------
; FORMA DE ARCHIVO:
;
; DONDE ES EL NOMBRE DEL DIRECTORIO RAIZ DONDE SE VAN A
; COPIAR LOS ARCIVOS. SI NO EXISTE LO CREA
;
;EJEMPLO:
;"C:\MIS DOCUMENTS" DOCS1
;COPOIA TODOS LOS ARCHIVOS Y DIRECTORIOS DE "C:\MIS DOCUMENTS" AL DESTINO,
; DENTRO DEL DIRECTORIO "DOCS1"
; SI EL DIRECTORIO-DESTINO SE OMITE, TODO SE COPIA EN LA RAIZ DE LA UNIDAD MAPEADA

;EL ESPACIO ENTRE EL ORIGEN Y EL DESTINO ES OBLIGATORIO, EN EL CASO DE ARCHIVOS
; Y CARPETAS/DIRECTORIOS CON NOMBRES COMPUESTOS (TIPO MIS DOCUMENTOS) TIENEN
; QUE IR ENCERADOS ENTRE COMILLAS ""

;copia el contenido de D:\bar en la raiz de D:\bar
;copia el contenido de D:\foo en \foo\bar
"D:\foo bar" foo\bar

------------EOF----------

7.28.2005

codigo html