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> | ||
| - | |||
| - | </ | ||