Creando pequeñas apps para solucionar pequeños problemas

Una idea muy conocida en todo el ambiente del Software Libre era la de pequeños programas creados para resolver casos de uso muy específicos, algunos de nicho, otros generales.

Tomando esto decidí adaptar el uso de AI para desarrollar mini apps para pequeñas cosas repetitivas que hago y luego liberar el código. Y justo llegó esa etapa del año en que debo seleccionar unas mil fotos, ajustar tamaños, nombres y preparar para subir a un sitio.

Decidí que esta vez lo iba a hacer sin tanta ayuda de terceros...

El escenario

Primero que nada lo que necesito, de unas mil fotos debo separarlas en tres carpetas y organizarlas al azar, normalmente esto lo hacía a mano.

Las imágenes son para el sitio de Madame Voyeur que todos los días muestra tres fotos de señoritas con poca ropa. Son 365 fotos por set, tres sets, hasta ahí suena fácil.

El "problema" es que, si bien hay una gran variedad de fotos, muchas provienen de un mismo photoset. Si tenemos tres fotos de una misma persona, mismo fotógrafo, si ordenamos aflabéticamente quedarían una tras otra.

Así que necesitaba ordenarlas al azar.

Pero no sólo eso, además necesito numerarlas 26001.jpg, 26002.jpg y así, por lo que pensé que esto se podía hacer todo a la vez. 

Luego tengo otro problema, hay fotos que he conseguido en resoluciones bestiales como 14.000x10.000 pixeles en los que le podés diferenciar los poros de la piel a la modelo, algo absurdo y que en la mayoría de los browsers provoca algunos problemitas.

Hasta ahora procesaba las fotos con Photoshop realizando un proceso batch (Secuencia de Comandos - Procesador de Imágenes) que es bastante lento e impreciso y el renombre de archivos usando BulkRenameUtility, pero ésta no me permite ordenar al azar los archivos que voy a renombrar (igual es una app genial).

El Renombrador

La selección de fotos la hago a mano, 1095 fotografías, buscar las mejores, las de mejor resolución, que no estén repetidas, que no sean vulgares, que no sean de la misma persona sino de una variedad notable, etc. Es un proceso fácil, pero mejor un humano para realizarlo.

Luego viene lo interesante, renombrar y reordenar, para eso creé esta linda app en Python:

Es una copia de un subset de opciones que tiene la mencionada BulkRenameUtility, pero con el agregado del botón de azar. Imprescindible para mi escenario personal.

Obviamente apelé a Claude Sonnet 4.5 porque lo que importa aquí es que el script sea simple, el prompt claro y que le indiques exactamente todo lo necesario. El resultado me dejó super conforme.

Le pedí además que me agregara lo necesario para crear el ejecutable y me armó la documentación y el build.bat para poder crear el .exe que funcione de una. No es que sea necesario, es un script pequeño, pero ¿Por qué no?

Github: Renombrador

Prompt utilizado:

Necesito crear un programa para Windows que me sirva para:

Seleccionar un directorio, elegir archivos, ordenarlos a mi gusto y renombrarlos secuencialmente, usaré este programa para tomar un gran listado de archivos de imágenes y darles un orden secuencial, pero necesito poder cambiar el nombre actual y desordernarlos a gusto.

* mostrar los archivos de la carpeta 
* al seleccionar uno mostrar en una columna contigua cómo quedaría el nombre luego del proceso
* permitir ordenar de forma aleatoria (checkbox en opciones, reordena el directorio de forma aleatoria)
* que permita seleccionar el criterio de nombre nuevo
* opción numerado (de X a Y)
* opción completando el número con ceros (de 001 a 999 o la cantidad deseada por el usuario)
* opción agregando un sufijo (string)
* opción agregando un prefijo (string)
* un botón de aplicar que renombra los archivos 
* un botón de recargar que resetea las opciones 

Completarlo en Python + Tkinter y crear el .exe para usarlo de forma independiente

El Resizeador

Luego el segundo problema a resolver, la variedad de tamaños es muy molesta, algunos JPG están guardados en calidad 12, otros en calidad 8, los primeros son pesadísimos aunque su resolución sea la misma.

Otros, en cambio, son gigantes en pixeles y tal resolución es absolutamente innecesaria en el 99% de los casos (el sitio es de entretenimiento, no es una clase de dermatología).

Entonces mi app considera ambos escenarios, por un lado limitar el máximo de alto o de ancho en pixeles, ejemplo: 3000px. Que no se pase en ninguna dimensión y que conserve la proporción original.

Esto incluye un selector de algoritmo de ajuste de tamaño para todos los gustos, y además, al guardar, la calidad que pretendemos para cada archivo.

Lo genial es cómo quedó, aun si no hace falta ajuste de tamaño igual escribe el archivo, pero con el ajuste de compresión que le definamos.

En este caso, como es un proceso destructivo, le pedí que me permitiera seleccionar la carpeta origen y definir una carpeta destino.

Github: ExpertResizer

Prompt utilizado:

Necesito crear un programa para Windows que me sirva para:

Tomar archivos de una carpeta y ajustar las dimensiones máximas en acho o alto, y guardar automáticamente como si fuese un proceso batch. En detalle:

* seleccionar una carpeta donde se va a trabajar
* seleccionar una carpeta destino donde se guardarán los archivos (para no sobreescribir originales)
* listar los archivos de la carpeta y sus dimensiones y tamaño
* permitir seleccionar qué archivos procesar
* ajustar el tamaño máximo de alto y de ancho
* el resize debe ser proporcional
* permitir elegir entre las distintas opciones de proceso/cálculo de resize
* operar con archivos jpg, png y webp
* permitir elegir el nivel de compresión en los formatos que posean la característica.

Completarlo en Python + Tkinter y crear el .exe para usarlo de forma independiente

Soluciones pequeñas

Una de las ventajas de desarrollar con AI estas cosas es que suelen ser herramientas que funcionan muy buen con prompts específicos y bien claros.

Los problemas se dan cuando queremos abarcar mucho más de lo que podemos, pero al ser conciso va al grano y con mucha eficiencia tanto en el código como su funcionamiento final.

En otra época, me refiero hace muchos, muchos años, hacíamos programitas en BASIC para cosas similares, ahora podemos ir mucho más allá en complejidad y seguir solucionando cosas. Para esto están las computadoras! Sí, ya se que muchos se olvidaron de su uso principal, pero algunos todavía las usamos para hacer cosas :D

Si te gustó esta nota podés...
Invitame un café en cafecito.app


Otros posts que podrían llegar a gustarte...

Comentarios

Deje su comentario:

Tranquilo, su email nunca será revelado.
La gente de bien tiene URL, no se olvide del http/https
Comentarios ofensivos o que no hagan al enriquecimiento del post serán borrados/editados por el administrador. Los comentarios son filtrados por ReCaptcha V3.