Categorías
hoy aprendí ...

… a ordenar archivos en carpetas según el patrón de nombre

Descargando un montón de referencias desde Instagram usando esta maravillosa extensión, Instagram Download Button, me llené de archivos JPG y MP4 y se hacía necesario ordenarlos en carpetas.

El patrón es que todos los archivos tienen en la primer parte del nombre la perfil de Instagram y luego la fecha y hora original del posteo seguidos de un choclazo de números, así que tendría que ser «relativamente» sencillo poder encarpetarlos identificando el perfil.

nombre_perfil-YYYYMMDD_HHMMSS-XXXXXXXXX….. [jpg|mp4]

Buscando en encontré varias propuestas aproximadas para hacer algo como lo que quería

Y la opción ganadora

Extract part of a file name in bash

Específicamente esta respuesta que utiliza el comando SED. La única condición es que la primera parte no sean numeros.

El escenario

I have a folder with lots of files having a pattern, which is some string followed by a date and time:

BOS_CRM_SUS_20130101_10-00-10.csv (3 strings before date)
SEL_DMD_20141224_10-00-11.csv (2 strings before date)
SEL_DMD_SOUS_20141224_10-00-10.csv (3 strings before date)

I want to loop through the folder and extract only the part before the date and output into a file.

Output
BOS_CRM_SUS_
SEL_DMD_
SEL_DMD_SOUS_

La propuesta

Assuming you wont have numbers in the first part, you could use:

$ for i in *csv;do  str=$(echo $i|sed -r 's/[0-9]+.*//'); echo $str; done
BOS_CRM_SUS_
SEL_DMD_
SEL_DMD_SOUS_

Prueba

Cuando hice la prueba, solo mostrando el resultado del SED, funcionaba casi como lo deseaba, con el único tema que era que procesaba algunos archivos con otros patrón de nombre (que no eran necesarios) y los que si debía procesar dejaba el guión del medio.

Ejemplo:

almendromaestro-20220602_195749-285312905_1062446314350240_327302066906487345_n.jpeg

> almendromaestro-

Mi modificación a la RegExp

Agregar un guión que aparece antes de la regla para la fecha, así sólo busca los archivos que se aproximan al patrón.

sed -r 's/-[0-9]+.*//'

y pasó el testeo!

Script terminado

Básicamente hace un loop en todos los archivos que haya en la carpeta, separa el nombre y la almacena en STR (y lo mostramos para ir viendo el progreso), usa eso para verificar que si no existe una carpeta la crea, y luego mueve el archivo a la carpeta.

#!/bin/sh

for i in *.*
do
  str=$(echo $i|sed -r 's/-[0-9]+.*//'); 
  echo $str;
  if [ ! -d $str ]; then
      mkdir $str
  fi
  mv $i $str
done

Y chau!

Categorías
hoy aprendí ...

… a redimensionar varias imágenes con un script bash

Y tenía que procesar varias imágenes escaneadas para bajarles el tamaño de las dimensiones y archivo.

Con ImageMagick en Linux esto se logra con un script bash que recorra los archivos en una carpeta. Me topé con esta solución que me pareció bastante sencilla, hay que hacer algunas cosas previas de manera ‘manual’ pero funciona.

El script trabaja y busca las imágenes sobre una carpeta que se indica dentro del script, con lo que hay que personalizarlo. Tener la precaución de que las imágenes sean copias, porque las reemplaza.

#!/usr/bin/env bash
# Purpose: batch image resizer
# Source: https://guides.wp-bullet.com
# Author: Mike

# absolute path to image folder
FOLDER="/var/www/wp-bullet.com/wp-content/uploads"

# max width
WIDTH=540

# max height
HEIGHT=300

#resize png or jpg to either height or width, keeps proportions using imagemagick
#find ${FOLDER} -iname '*.jpg' -o -iname '*.png' -exec convert \{} -verbose -resize $WIDTHx$HEIGHT\> \{} \;

#resize png to either height or width, keeps proportions using imagemagick
#find ${FOLDER} -iname '*.png' -exec convert \{} -verbose -resize $WIDTHx$HEIGHT\> \{} \;

#resize jpg only to either height or width, keeps proportions using imagemagick
find ${FOLDER} -iname '*.jpg' -exec convert \{} -verbose -resize $WIDTHx$HEIGHT\> \{} \;

# alternative
#mogrify -path ${FOLDER} -resize ${WIDTH}x${HEIGHT}% *.png -verbose

Gracias:

https://guides.wp-bullet.com/batch-resize-images-using-linux-command-line-and-imagemagick/

Y chau.

Categorías
hoy aprendí ...

… a sincronizar datos entre GNUCash version android y desktop (linux y windows)

Llevando la contabilidad hogareña por años con excel, luego de decidirme a dar un paso más allá llegué en algún momento a GNU Cash

Probá la versión de escritorio en linux y luego de leer algunos tutoriales (tengo que buscas los links) empezé a llevar el registro en la computadora de escritorio.

Pero el registro del día a día lo anotaba en el celu en notas sueltas, hasta que encontré la versión móvil para android, y la verdad es que para las entradas (o transacciones) sencillos resulta fácil.

La clave está en usar archivos QIF. Y el flujo debe ser del móvil al escritorio. Luego vaciar el móvil.

Una funcionalidad interesante desde el escritorio al momento de importar es que si por alguna razón creo cuentas nuevas en el móvil o duplico una transacción hay posibilidad de revisar los cotejos y decidir si emparejar o crear nuevas cuentas.

El importador de QIF de la versión 3.5 de MS Windows tiene varios pasos muy bien explicados.

Un detalle importante es que los archivos QIF no son multimonedas, así que hay que estar atentos a la moneda utilizada. Todavía no tuve la oportunidad de probar esto último.

Categorías
hoy aprendí ...

…a «mejorar» una imagen sin photoshop

Necesito ampliar una imagen sin que se degrade tanto.

Había usado hace un tiempo el servicio de Let’s Enhance, pero sólo deja 5 pruebas gratis, luego hay que pagar.

Buscando algo alternativo caigo en esta entrada de Shivani Srivastava con varias opciones.

Necesitaba que fuera un servicio en línea para no tener que instalar ningún software, me quedé con este que tiene además tiene repo en GitHub

waifu2x.udp.jp

Gracias.

Categorías
hoy aprendí ...

… a preparar un WordPress para editar contenidos en HTML simplón ¡chau Dreamweaver!

La idea es tener un editor para formatear textos en HTML desde un editor visual, que los editores se puedan ingresar con clave y trabajar con una herramienta conocida, que se conserve el formato HTML, además que haga coloreado (highlight) de la sintaxis por si hay que tocar el código, y que puedan aplicar estilos CSS a los elementos desde un menú visual.

No interesa (por ahora) la opción de bloques que propone el Editor Gutenberg, pero no desecharlo, por lo que la instalación se hizo con WP 5.0.

Los plugins específicamente instalados:

Además están: WP Cerber Security de Gregory, el Resctric User Access de Joachim Jensen , Members de Justin Tadlock, WP2Static de Leon Stafford.

En el TinyMCE Advanced hay que habilitar en Configuración Avanzada la opción que mantenga los párrafos y saltos de línea, es decir, desactivar el autoformato que hace WordPress, y por otro lado, para agregar las class personalizadas como estilos de formatos hay que agregar en el archivo functions.php del theme activo el archivo editor-style.css que se debe crear a mano en el directorio, y luego tildar la opción en la configuración avanzada (mejorar esta explicación con un paso a paso)

Ideas a futuro:

Como el asunto es utilizar esta sola instalación para editar contenidos de muchos sitios una forma de separar es editar entradas y que cada sitio sea una categoría.

También se podría utilizar algún tipo de plugin que permita definir diferentes cabeceras y pie, o layout para las diferentes categorías y hojas de estilo personalizadas, ya que de esta manera se podría previsualizar «casi» cómo quedaría el contenido con el aspecto del sitio al que pertence.