https://foro.gambas-es.org/viewtopic.php?f=15&t=7987
-----------------------------------
v3ctor
Viernes, 24 Abril 2020, 16:32

Reto 16(V3ctor) Elimina .png Repetidas
-----------------------------------
buenas,

Tenemos esta situación, una carpeta llena de archivos .png (icono), en ella hay por ejemplo 1000, de las cuales 300 son idénticas, pues bien hace una código que detecte las 300 idénticas y las elimine, usa código propio de gambas, pudiéndote apoyar de comandos externos [b]pero que no tengan una función especifica para esa tarea[/b]. La discriminación no puede ser por tamaño o nombre ya que puede haber imágenes con nombre parecido y tamaño igual, la discriminación debe ser por el análisis interno de la imagen.

yo encontré una forma que la voy a publicar después del reto, tal vez suba un zip con contraseña y la doy después de vencido el plazo del reto. 

la idea es ver como cada uno resuelve este problema, que es la base de la programación resolver problemas y enriquecer así nuestro conocimientos. Cada uno puede resolver el tema de una manera u otra pero que lindo es ver como otro resolvió el mismo problema de una manera totalmente diferente con otro enfoque tal vez.

si tienen alguna duda pregunten, saludos

una semana es suficiente para resolver este reto por tanto el próximo viernes sera el ultimo día para presentar la solución, enviar código con solución a uno.cero@live.com


-----------------------------------
tercoIDE
Viernes, 24 Abril 2020, 19:38

Re: Reto 16(V3ctor) Elimina .png Repetidas
-----------------------------------
Interesante desafio, yo tenia una que hacia eso para distinguir fotos pero usaba otro criterio

Si todo esto era igual a otra, consideraba iguales las fotos y les cambiaba el nombre a xxxxxxx_Revisame.jpg 

1-igual nombre
2-igual tamaño
3-igual fecha de creación
4-igual en tres partes clave del archivo, o sea un string binario de datos de 1kb


Pero estoy demasiado metido en un CAD como para aceptarlo. 

Pero dono un asado y una cerveza de premio al que gane. Eso si, tiene que venir a mi casa de visita.


-----------------------------------
jguardon
Viernes, 24 Abril 2020, 20:04

Re: Reto 16(V3ctor) Elimina .png Repetidas
-----------------------------------
Vale, vale... no des más pistas  :lol:  :lol:  :lol: 

Yo ya tengo el método base, necesito hacer el algoritmo para hacerlo eficientemente.


Saludos


-----------------------------------
v3ctor
Viernes, 24 Abril 2020, 20:13

Re: Reto 16(V3ctor) Elimina .png Repetidas
-----------------------------------
[quote user="tercoIDE" post="48035"]
Pero estoy demasiado metido en un CAD como para aceptarlo. 
[/quote]

"en un CAD" es tu programa 3d o estas colaborando en otro proyecto, o estas en un nuevo proyecto???


-----------------------------------
tercoIDE
Viernes, 24 Abril 2020, 21:11

Re: Reto 16(V3ctor) Elimina .png Repetidas
-----------------------------------
[quote user="v3ctor" post="48037"]
"en un CAD" es tu programa 3d o estas colaborando en otro proyecto, o estas en un nuevo proyecto???[/quote]

Nuevo, pero...no te quiero robar el post. Pronto sera presentado en sociedad. OpenSource, por supuesto. 

Es interesante este desafio pero mas interesante seria un programa comunitario que busque fotos repetidas en todo el disco y las enliste y/o renombre para que un humano decida que hacer. 

Podriamos tomarlo como punto de partida.


-----------------------------------
v3ctor
Viernes, 24 Abril 2020, 21:28

Re: Reto 16(V3ctor) Elimina .png Repetidas
-----------------------------------
[quote user="tercoIDE" post="48038"][quote user="v3ctor" post="48037"]
"en un CAD" es tu programa 3d o estas colaborando en otro proyecto, o estas en un nuevo proyecto???[/quote]

Nuevo, pero...no te quiero robar el post. Pronto sera presentado en sociedad. OpenSource, por supuesto. 

Es interesante este desafio pero mas interesante seria un programa comunitario que busque fotos repetidas en todo el disco y las enliste y/o renombre para que un humano decida que hacer. 

Podríamos tomarlo como punto de partida.[/quote]

eso era lo que quería saber, bueno esperamos el momento en que lo subas para ayudar ya sea por bug o códigos de ideas, saludos.


-----------------------------------
v3ctor
Domingo, 26 Abril 2020, 14:02

Re: Reto 16(V3ctor) Elimina .png Repetidas
-----------------------------------
bueno ya lo tengo casi pronto, falta emprolijarlo.

paso 1: elegir carpeta donde se encuentran las miles de imágenes (podrían ser otro tipo de archivos también)
paso 2:  ?  (no puedo comentar porque sino doy el método que uso.)
paso 3: eliminar archivos idénticos encontrados menos 1



como van ustedes?


-----------------------------------
v3ctor
Viernes, 01 May 2020, 15:29

Re: Reto 16(V3ctor) Elimina .png Repetidas
-----------------------------------
bueno como nadie presento una solución yo subí la mía a la granja.

el método que use es hacer un sha256sum al archivo, si hay otro con el mismo hash incremento el contador de ese hash, después presento la lista de los que tienen repetidos y ahí el usuario elije si eliminar.

saludos.


-----------------------------------
tercoIDE
Viernes, 01 May 2020, 16:45

Re: Reto 16(V3ctor) Elimina .png Repetidas
-----------------------------------
[quote user="v3ctor" post="48237"]bueno como nadie presento una solución yo subí la mía a la granja.

el método que use es hacer un sha256sum al archivo, si hay otro con el mismo hash incremento el contador de ese hash, después presento la lista de los que tienen repetidos y ahí el usuario elije si eliminar.

saludos.[/quote]

porque no lo subes asi lo podemos usar/mejorar entre todos?


-----------------------------------
jguardon
Viernes, 01 May 2020, 18:17

Re: Reto 16(V3ctor) Elimina .png Repetidas
-----------------------------------
Tengo el mío casi acabado, pero creo un hash MD5 después de leer el archivo binario (es más rápido que SHA256). Al recorrer el directorio lo voy cargando en una colección que tiene por valor la ruta del archivo y por clave (que no puede haber duplicados) el hash generado anteriormente. Curiosamente, la intentar añadir duplicados a la colección, ésta lo rechaza silenciosamente, quedando la colección sólo con los ficheros que no están duplicados.

Me he quedado intentando calcular cuáles son los que la colección ha "rechazado", que son los duplicados, para moverlos a un subdirectorio y dar la oportunidad al usuario de borrarlos.

Después de perder un montón de tiempo en un algoritmo para detectar duplicados, me di cuenta de que la colección no los admite (aunque no provoca error visible) y el trabajo se simplifica muchísimo...

Cuando acabe lo subo aquí.

Saludos


-----------------------------------
v3ctor
Viernes, 01 May 2020, 18:22

Re: Reto 16(V3ctor) Elimina .png Repetidas
-----------------------------------
aquí esta:

[code linenumbers=false syntax=gambas]pngs = Dir(DirBox1.Value, "*.png", gb.File)[/code]

yo ahi puse filtro png pero se puede poner y adaptar a cualquiera otra extension incluso usando "*", peligroso ojo no lo he probado, el código esta desprolijo lo se, pero yo quería el objetivo, uf si me faltara para ser programador!!.


-----------------------------------
cogier
Viernes, 01 May 2020, 18:45

Re: Reto 16(V3ctor) Elimina .png Repetidas
-----------------------------------
Me gusta. Es bastante rápido. He añadido algunas características que pueden ser de interés.


-----------------------------------
v3ctor
Viernes, 01 May 2020, 19:17

Re: Reto 16(V3ctor) Elimina .png Repetidas
-----------------------------------
[code linenumbers=false syntax=gambas] 'comando = "sha256sum " & DirBox1.Value &/ png  
    comando = "sha256sum " & Shell$(DirBox1.Value &/ png)[/code]

jaja bien cogier detectaste un error, la primera linea da error si los nombres tienen espacio u otros caracteres, lo que hace shell$ es entregar una linea correcta y depurada para que el shell con el comando no de error. yo lo probé con png que su nombre es numero.png (no hay espacios entre otras cosas) por eso no tiraba error.


-----------------------------------
v3ctor
Viernes, 01 May 2020, 19:20

Re: Reto 16(V3ctor) Elimina .png Repetidas
-----------------------------------
[quote user="jguardon" post="48240"]Tengo el mío casi acabado, pero creo un hash MD5 después de leer el archivo binario (es más rápido que SHA256)...[/quote]

si es mas rápido podemos agregarle al código la opción de hacer con md5 o sha256!!!  va también sha512 (hecho)


-----------------------------------
tercoIDE
Viernes, 01 May 2020, 23:33

Re: Reto 16(V3ctor) Elimina .png Repetidas
-----------------------------------
FUNCIONA!!!

jamas me hubiese imaginado que esas imágenes con nombres tan diferentes eran iguales

[img]https://foro.gambas-es.org/files/images/2399/captura_de_pantalla_de_2020_05_01_19_28_53.png[/img]


