Diferències
Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.
Ambdós costats versió prèvia Revisió prèvia Següent revisió | Revisió prèvia | ||
misproyectos:automatizacion10minutos [07/12/2017 16:37] – [2] mate | misproyectos:automatizacion10minutos [04/09/2018 01:48] (actual) – suprimit mate | ||
---|---|---|---|
Línia 1: | Línia 1: | ||
- | = Automatizar 10 minutos al día | ||
- | == objetivo | ||
- | a partir de las imágenes en local (descartado el sistema a través de FEEDLY, que da muchos "image not found" | ||
- | == método | ||
- | el proceso está dividido en dos partes: | ||
- | - subida imágenes, importación a la BDD, eliminado imágenes subidas (en caso de no mostrar errores) | ||
- | - proceso de sincronización, | ||
- | - [[misproyectos: | ||
- | |||
- | == 0 | ||
- | '' | ||
- | |||
- | == 1 | ||
- | <code bash 10minutos-upload.sh> | ||
- | # | ||
- | | ||
- | # | ||
- | # | ||
- | # | ||
- | | ||
- | # | ||
- | # | ||
- | # | ||
- | | ||
- | L1_PATH="/ | ||
- | R1_PATH="/ | ||
- | LOG_FILE=" | ||
- | | ||
- | | ||
- | # | ||
- | # | ||
- | # | ||
- | | ||
- | | ||
- | # | ||
- | echo -e " | ||
- | scp -r -i $HOME/ | ||
- | | ||
- | # | ||
- | echo -e " | ||
- | / | ||
- | STATUS=$? | ||
- | |||
- | # | ||
- | # | ||
- | if [ $STATUS -eq 0 ]; then | ||
- | echo -e " | ||
- | ssh -v -i / | ||
- | STATUS=$? | ||
- | else | ||
- | echo -e "ERROR wget!\n" | ||
- | exit 1 | ||
- | fi | ||
- | |||
- | |||
- | # | ||
- | # | ||
- | if [ $STATUS -eq 0 ]; then | ||
- | echo -e " | ||
- | find $L1_PATH/ -type f -delete; | ||
- | STATUS=$? | ||
- | else | ||
- | echo -e "ERROR SSH!\n" | ||
- | exit 1 | ||
- | fi | ||
- | |||
- | if [ $STATUS -eq 0 ]; then | ||
- | echo -e " | ||
- | else | ||
- | echo -e " | ||
- | exit 1 | ||
- | fi | ||
- | </ | ||
- | |||
- | == 2 | ||
- | === tecnologías usadas | ||
- | * findimagedupes | ||
- | * bash | ||
- | * mustache | ||
- | * [[https:// | ||
- | * bootstrap | ||
- | * CodeIgniter | ||
- | |||
- | === objetivo y método | ||
- | se pretende buscar las imágenes iguales o muy iguales de todas las disponibles en la plataforma 10 minutos al día para eliminar esos duplicados. | ||
- | |||
- | al no poder instalar el programa '' | ||
- | |||
- | * hacer una copia de todas las fotos en local con la herramienta '' | ||
- | * buscar duplicados (o similares muy similares) con la herramienta '' | ||
- | * del fichero TXT generado por '' | ||
- | * usar '' | ||
- | * para la eliminación, | ||
- | * queda por desarrollar la parte AJAX del proyecto, para que la eliminación sea asíncrona y así poder ir eliminado diferentes imágenes sin perder la situación. | ||
- | |||
- | === uso | ||
- | * al hacer un UPLOAD de imágenes, habrá que hacer un RSYNC con el respositorio local | ||
- | * las imágenes borradas de otras cribas desaparecerán con el RSYNC | ||
- | * ejecutar el procedimiento de búsqueda de duplicados | ||
- | * hay que hacer que las imágenes que han sido borradas desaparezcan de la BDD de '' | ||
- | * http:// | ||
- | * '' | ||
- | * hacer la comprobación y eliminar para que no se envíen los duplicados detectados | ||
- | |||
- | === implementación | ||
- | * petición AJAX con JQuery + Bootstrap: | ||
- | * problemas para recoger los datos de la plataforma 10 minutos: | ||
- | * tips: | ||
- | * petición desde HTML:< | ||
- | var posting = $.post( { | ||
- | url: URL10M+sha, | ||
- | data: '', | ||
- | dataType: ' | ||
- | }) ...</ | ||
- | * devolución del server:< | ||
- | $retorno = json_encode($retorno); | ||
- | header(' | ||
- | echo $callback." | ||
- | exit(); | ||
- | </ | ||
- | * [[https:// | ||
- | |||
- | === mejoras/ | ||
- | * < | ||
- | * subida sensibilidad de FINDIMAGEDUPES al 95% | ||
- | * ¿qué pasa con las fotos existentes pero que no constan en la BDD? | ||
- | * automatizar eliminado ¿cómo? | ||
- | * reinsertar en la BDD si necesario? | ||
- | * < | ||
- | * < | ||
- | * < | ||
- | * < | ||
- | * < | ||
- | |||
- | === código | ||
- | <code bash 10minutos-dupes.sh> | ||
- | #!/bin/bash | ||
- | |||
- | # | ||
- | # | ||
- | # | ||
- | |||
- | # | ||
- | # variables | ||
- | # | ||
- | |||
- | PATH1="/ | ||
- | MAX_IMAGENES=100 # | ||
- | OTHER_BIN="/ | ||
- | |||
- | |||
- | # | ||
- | # variables rsync | ||
- | # | ||
- | |||
- | R_PATH=" | ||
- | L_PATH="/ | ||
- | L2_PATH=" | ||
- | LOG_FILE=" | ||
- | BROWSER_PATH="/ | ||
- | |||
- | # | ||
- | # MAIN | ||
- | # | ||
- | |||
- | |||
- | # | ||
- | echo -e " | ||
- | rsync -vrt --delete --exclude-from " | ||
- | |||
- | # busca duplicados | ||
- | echo -e "Dupes Searching...\n" | ||
- | findimagedupes -t=95% --prune -f=$L_PATH/ | ||
- | |||
- | # generar fichero .yuml a partir de duplicados | ||
- | echo -e " | ||
- | LINEAS=$(cat $L_PATH/ | ||
- | FICHEROS=$(($LINEAS/ | ||
- | |||
- | if (( $FICHEROS > 0 )); then | ||
- | echo -e " | ||
- | split -d --lines=$MAX_IMAGENES $L_PATH/ | ||
- | for i in `seq 0 $FICHEROS` ; | ||
- | do | ||
- | if (( $i <= 9 )); then | ||
- | SUFIJO=" | ||
- | else | ||
- | SUFIJO=" | ||
- | fi | ||
- | $OTHER_BIN/ | ||
- | done | ||
- | else | ||
- | $OTHER_BIN/ | ||
- | fi | ||
- | |||
- | # generar HTML con .yuml y .mustache | ||
- | echo -e " | ||
- | |||
- | if (( $FICHEROS > 0 )); then | ||
- | split -d --lines=100 $L_PATH/ | ||
- | for i in `seq 0 $FICHEROS` ; | ||
- | do | ||
- | if (( $i <= 9 )); then | ||
- | SUFIJO=" | ||
- | else | ||
- | SUFIJO=" | ||
- | fi | ||
- | mustache $L_PATH/ | ||
- | done | ||
- | else | ||
- | mustache $L_PATH/ | ||
- | fi | ||
- | |||
- | |||
- | # ejecutar Chrome con resultados | ||
- | $BROWSER_PATH --private-window file:/// | ||
- | |||
- | # eliminar ficheros temporales | ||
- | if (( $FICHEROS > 0 )); then | ||
- | rm $L_PATH/ | ||
- | fi | ||
- | </ | ||
- | |||
- | <code bash findimagedupes-YML-generator.sh> | ||
- | #!/bin/bash | ||
- | |||
- | # | ||
- | # Genera fichero YML a partir del TXT generado por findimagedupes | ||
- | # Necesita un argumento: nombre_fichero.txt | ||
- | # | ||
- | |||
- | |||
- | # | ||
- | # FUNCIONES | ||
- | # | ||
- | |||
- | cabecera() { | ||
- | cat > $OUTPUT << EOF | ||
- | --- | ||
- | images: [ | ||
- | EOF | ||
- | |||
- | } | ||
- | |||
- | footer() { | ||
- | cat >> $OUTPUT << EOF | ||
- | ] | ||
- | --- | ||
- | EOF | ||
- | } | ||
- | |||
- | # | ||
- | # MAIN | ||
- | # | ||
- | |||
- | |||
- | filename=" | ||
- | base_filename=${filename%%.*} | ||
- | OUTPUT=" | ||
- | LINEAS=0 | ||
- | IMAGENES=0 | ||
- | |||
- | # llamada función cabecera | ||
- | cabecera | ||
- | |||
- | while read -r linea | ||
- | do | ||
- | LINEAS=$(($LINEAS+1)) | ||
- | # deseamos: part: [ [ url: " | ||
- | # inicio cadena | ||
- | echo "part: [ " >> $OUTPUT | ||
- | | ||
- | #genera un item por cada imagen, tantos como sean necesarios, en la cadena | ||
- | for i in ${linea[@]} | ||
- | do | ||
- | CRC=${i## | ||
- | CRC=${CRC: | ||
- | echo "[ url: ' | ||
- | IMAGENES=$((IMAGENES+1)) | ||
- | done | ||
- | |||
- | # final cadena | ||
- | echo " ]," >> $OUTPUT | ||
- | |||
- | done < " | ||
- | |||
- | # llamada función footer | ||
- | footer | ||
- | |||
- | echo -e " | ||
- | echo -e " | ||
- | <code bash> | ||
- | |||
- | </ |