![]() |
|
Tasker Para hablar de todo lo relacionado con la aplicación tasker |
«
Tema Anterior
|
Siguiente tema
»
|
Herramientas |
#1
|
Cómo borrar fotos duplicadas (Consulta)
Hola Amigos Taskerianos!
Aquí ando tratando de crear un perfil para borrar fotos duplicadas. La idea nace de este tuto: http://www.htcmania.com/showthread.php?p=9377579 Pues nada, más o menos, es fácil. Ejecutar consola/comando: rm/storage/sdcard1/GBWhatsapp/Media/GBWhatsapp Images/Sent/*.jpg (sí, soy usuario de GBWhatsapp ![]() El caso es que este comando me da error todo el rato. Al final me quedo con la mosca atrás y pruebo a ejecutar el mismo comando pero acabado en .nomedia para hacer "visibles" los archivos .jpg para luego ¡zas! ejecutar el comando rm/storage/sdcard1/GBWhatsapp/Media/GBWhatsapp Images/Sent/*.jpg Pero nada, ni a tiros! Entonces, he pensado que para qué limitarme a una carpeta, si lo puedo hacer de forma global.... Así que como juntamos programación y variables, esto se pone divertido! Una caña de pescar, plis? Estoy muy muy perdido y ni siquiera sé por dónde empezar! ![]() SOLUCIONADO: La solucion aquí: http://www.htcmania.com/showthread.p...6#post22207586 ![]() Última edición por Mitrhandir Día 26/02/16 a las 19:37:25 |
Gracias de parte de: | ||
|
#2
|
Voy a exponer lo que he hecho:
He establecido una variable %Duplicados A ON y que te calcule tanto en el perfil de pantalla apagada como encendida. Luego he creado un perfil nuevo en el que he puesto condición valor de variable %Duplicados coincide ON y la tarea es lo que me tira para atrás: ejecutar consola- rm/storage/sdcard1/*jpg si if %Duplicados coincide on Más o menos está todo apuntalado, pero me faltan las pinceladas maestras! Cómo lo véis? |
#3
|
|
Cita:
![]() Supongo que eres consciente de que ese comando borra sin contemplaciones todos los archivos jpg de la carpeta indicada sin tener en cuenta si son duplicados o no, que es la esencia de tu planteamiento. ![]() ¿Eso te vale o realmente quieres crear una tarea para eliminar las fotos duplicadas? |
#4
|
Realmente, quiero y deseo hacer un perfil para borrar fotos duplicadas. Como habrás visto, he creado los perfiles, pero está todo cogido con pinzas... He establecido variable %Duplicados y más o menos he hecho lo mismo que me habéis enseñado. Lo que ocurre es que no me atrevo con la tarea por si borro las fotos (el backup está hecho, porsiaca). Me falta la pieza del puzzle que indique que sólo borre las fotos duplicadas.
Edito: He probado rm /storage/sdcard1/GBWhatsapp/Media/GBWhatsapp Images/Sent/*.jpg Pero tampoco funciona... Incluso he copiado la ruta desde ES File Explorer para evitar errores. He probado de muchas maneras, pero nada! Un saludo! Última edición por Mitrhandir Día 20/02/16 a las 20:48:41 Razón: Añadir explicación |
#5
|
Entiendo que descartas utilizar aplicaciones específicas para estos menesteres...
https://play.google.com/store/apps/d...niApp.WCleaner https://play.google.com/store/apps/d...droid.wcleaner No lo he comentado antes porque supongo que te lo quieres currar por tus medios. ![]() |
#6
|
|
Cita:
![]() De momento olvida los perfiles y las variables. Antes tienes que pensar en otra cosa. ¿Cómo puede saber tu tarea de Tasker que una foto es duplicada? ![]() Recuerda que la tarea, como cualquier programa en realidad, no puede ver la foto como tú lo haces. ¿En qué se tiene que fijar la tarea para determinar que "esa" foto que está analizando ya existe? ![]() |
#7
|
Me parece que ya se hizo un proyecto parecido. De hecho estoy casi seguro que se hizo por lo menos para whatsapp. No se si estara en el recopilatorio. A ver si alguien se acuerda.
Enviado desde mi T1-701u mediante Tapatalk |
#8
|
Hola Mr. Mlesir! Sí, tu memoria no falla: el tuto del que haces mención está arriba.
![]() Ha sido la inspiración para abrir este tema! ![]() Te mando saludos! |
#9
|
![]() No, no tengo ni idea y eso que he buscado y buscado. Incluso estoy tratando de hacer un recopilatorio de comandos para tenerlo a mano, y pero me va a costar! Este perfil lo tengo en mente, pero has acertado de pleno con tu pregunta. Uf. Ilumíname! ![]() |
#10
|
|
Cita:
Puesto que la idea inicial era usar comandos de consola sigamos por esa vía... El comando de consola de Android que hace esa comparación binaria es "cmp" (https://es.wikipedia.org/wiki/Cmp) pero le veo una pega importante. Repetir ese proceso con un centenar de fotos me temo que se fundiría la batería en un plis-plas. Otra opción es calcular el hash MD5 (https://es.wikipedia.org/wiki/MD5) de cada archivo. Dos archivos idénticos tendrán idénticos hash. El comando de consola de Android es "md5". Seguramente es menos costoso en términos de proceso, y se podría optimizar guardando los MD5 en un archivo y evitando calcular los hash que ya estén calculados. Localizando los MD5 iguales tendrás localizados los archivos duplicados. Si quieres hacer experimentos con esos dos comandos puedes usar este emulador de terminal... https://play.google.com/store/apps/d...al.androidterm Esos dos sistemas son precisos al 100% a costa de consumir mucha máquina. Se podría hacer una aproximación mucho menos costosa en máquina, y mucho menos precisa, comprando los tamaños de los archivos y tomando por buena la afirmación de "dos fotos con el mismo tamaño de archivo tienen que ser de la misma foto". Dale vueltas y me cuentas ![]() |
#11
|
Ummm.... El tema de los duplicados lo puedo solventar fácilmente por ejemplo con SdMaid Pro, que, dicho sea de paso, es de mis aplicaciones de cabecera. Ocurre que yo, mente inquieta donde las hayan, siempre ando buscando tres pies al gato. No soy muy amigo de tener tropecientas mil aplicaciones: soy muy sobrio y prefiero tenerlo todo centralizado en una, que es Tasker. Incluso estoy valorando seriamente convertirla en app de sistema, porque para mí,y corregidme si exagero, es el segundo SO incluido en nuestros smartphones.
Me queda mucho recorrido y muchas ideas en el tintero para ir dando forma dentro de esta grandísima aplicación. Un saludo! ![]() |
#12
|
||||
|
||||
Hola, Albalatvs.
Me da la impresión de que estás dando palos de ciego, que quizá no sabes muy bien lo que quieres hacer. Yo no suelo tener fotos duplicadas en mi smartphone. Alguna vez puede que tenga alguna duplicada, pero no me parece un problema relevante para pensar en hacer una tarea Tasker que lo resuelva. De todas formas, como taskero vocacional puede ser un buen ejercicio (A) tratar de hacer esa tarea, solo por el aprendizaje / divertimento / reto que ello supone. Desde este punto de vista, quizá fuera interesante no solo buscar duplicados en fotos, sino con cualquier tipo de archivo. Pero hay personas que sí suelen tener fotos duplicadas. Por ejemplo, los usuarios de Whatsapp que reciben una foto y con cierta frecuencia la reenvían a otros. Whatsapp genera un archivo duplicado, e incluso es posible (no estoy seguro) de que haga duplicados adicionales si le envías la imagen a varias personas. Pero en este caso (B) ya tienes unas pistas muy claras para buscar fotos duplicados, y me refiero a los directorios o carpetas de Whatsapp que alojan las imágenes. Por otro lado, hay que tratar de encontrar indicios que faciliten la identificación de los archivos duplicados. Yo creo que los indicios evidentes son el tipo de archivo y su tamaño. Si los dos archivos tienen tipos distintos o tamaños diferentes ya es evidente que no hay similitud, y damos el tema por zanjado. Si ambos datos coinciden en los dos ficheros... seguramente convenga una comparación más detallada como la que propone Willy con el método MD5 (muy buen apunte). También hay que plantear cómo proceder cuando encontremos dos (o más) archivos idénticos. ¿Cuál quedará y cuál (o cuáles) hay que borrar? Es una decisión importante, que no debe tomarse a la ligera y que depende del planteamiento del problema [caso (A) o caso (B)]. Finalmente, me parece "suicida" utilizar un comando RM que borraría todas las fotos de una carpeta, porque lo hace sin discriminar las que puedan estar duplicadas o las que no lo están. Quizá convendría reiniciar el problema con un planteamiento claro y concreto. En mi opinión, seguramente merezca la pena partir de la tarea que hizo jmajenjo (julio 2013), pues sospecho que es fácil modificarla para que afecte a distintos directorios, y tiene varias ventajas importantes, como el procesamiento en bucle, o que maneja los nombres de archivo en variables y también que hace un borrado selectivo, de un archivo cada vez. http://www.htcmania.com/showthread.php?p=9377579 |
#13
|
Hola Caravantes! Sin duda mi opción es la "A". Porque se me ocurre una idea, la planteo sobre papel y luego trato de plasmarla en Tasker. Y aquí es donde viene lo divertido: te rompes la cabeza y estrujas las neuronas tratando de conseguir, máxime cuando soy irremediablemente cabezón por naturaleza. Prefiero estar "trasteando" y tratar de hacer mi teléfono un poco más "inteligente".
![]() Pero en parte tienes razón: estoy muy perdido y no me duele prendas reconocerlo, pero ello no significa que no quiera aprender, au contraire, lo deseo fervientemente. Por eso, la mejor manera de aprender es practicar y equivocarte. Sin más, quiero hacer presente mi admiración por todos vosotros, ![]() ![]() ![]() Un saludo! |
Gracias de parte de: | ||
#14
|
||||||
Cita:
![]() Tal y como pensaba enfocarlo la tarea final podría eliminar cualquier archivo duplicado (fotos/vídeos/audios) de WhatsApp. Cita:
![]() Cita:
Cita:
![]() Cita:
![]() Cita:
![]() ![]() Ahora mismo te pones a comprobar cuánto tiempo cuesta comparar dos fotos con "cmp" y cuánto tiempo cuesta calcular sus hash md5. Estoy esperando ![]() |
Gracias de parte de: | ||
#15
|
WillyWeb, tengo las ideas en mi cabeza, pero no sé plasmarlo aquí. Pero tampoco me lo des hecho. Estímulame! Tengo clara la condición que sería a las 4 de la mañana y sólo cargando. Entonces habría que crear/establecer la variable %Condición y darle valor on. Pero el comando md5 no tengo ni idea de cómo ejecutarlo ni cómo sería el texto. Aún así, voy a buscar u trataré de hacer el comando yo. A ver si te sorprendo!
![]() |
#16
|
||
Cita:
![]() Cita:
![]() Antes te he recomendado una app de terminal para que hagas pruebas... https://play.google.com/store/apps/d...al.androidterm Te creas una carpeta en la memoria del teléfono... /sdcard/pruebas Y metes en ella media docena de archivos (fotos o lo que quieras) con nombres cortos para que sean fáciles de escribir. Luego, usando esa aplicación de terminal, te vas a esa carpeta... cd /sdcard/pruebas Y estando ya en ella haces esas comprobaciones que te he propuesto... cmp foto1.jpg foto2.jpg md5 foto1.jpg Y miras qué sale, cuánto tarda, qué pegas te encuentras. En las comparaciones es interesante que hagas la prueba con archivos de diferentes tamaños, con archivos que sean totalmente diferentes y con archivos iguales. Me he encontrado con algo en lo que no había pensado y que abre una nueva opción para verificar si una foto está duplicada. ![]() Por cierto, esos comandos son los mismos que luego tendrás que poner en la acción de consola de Tasker. Si aprendes/entiendes su manejo en el terminal sabrás como tratarlos en Tasker. |
#17
|
127|u0_a187@hwG7-L01:/ $ cd /storage/sdcard1/pruebas
mp leo.jpg ay.jpg < leo.jpg ay.jpg differ byte 164 d5 leo.jpg ay.jpg < 0908755127c01746b4745812e5085fb6 leo.jpg eb3abe9c7ca3d8ae4b34fb6bb45f7333 ay.jpg u0_a187@hwG7-L01:/storage/sdcard1/pruebas $ WillyWeb, aquí tienes lo que me has pedido. La conclusión de a la que llego es que el primer comando digamos "resta" la suma de las 2 fotos, es decir, te dice la diferencia de bytes. Y el segundo comando, tengo la intuición de que nos "dice" digamos el número de serie de las 2 fotos, que claramente son distintas. Bien, ése es el estímulo! Está empezando a parpadear la bombillita! ![]() |
#18
|
||
Cita:
differ byte 164 ...que es el primer byte en el que ambos archivos ya no coinciden. Cita:
Si te fijas verás que el resultado de procesar el archivo leo.jpg es "0908755127c01746b4745812e5085fb6" que es la representación en 32 bytes (conforme al sistema MD5) de los miles de bytes que seguro tenía ese archivo. La gracia del sistema MD5 es que es casi imposible que dos archivos diferentes tengan el mismo hash. Y comparar dos cadenas de texto de 32 bytes es una chorrada. Bien comparando los archivos directamente o bien comparando sus hash podemos saber con total certeza si dos archivos son iguales. De lo que se trata de es averiguar con qué sistema tardaremos menos en comparar 100 fotos. ¿Tú qué dices? ![]() Última edición por WillyWeb Día 21/02/16 a las 18:36:37 |
Gracias de parte de: | ||
#19
|
Bien, me ha quedado claro que el método con md5 es mucho más rápido.
Manos a la obra: Perfil: Duplicated Pics Condición: cargando cargador Condición: a las 4 a.m. Tarea: A1: ejecutar consola Comando: md5 /storage/sdcard1/pruebas Almacenar resultado A2: Ejecutar consola Comando: rm /storage/sdcard1/pruebas/*.jpg si if %Duplicados coincide on Aunque sé que el perfil está mal sé que me estoy acercando. Faltaría darle el valor a %Duplicados y hacer algo más que se me escapa. Así es como uno aprende! Mola! ![]() |
|
#20
|
|
Cita:
![]() Código:
Prueba1 (666) A1: Establecer variable [ Nombre:%archivo1 A:/sdcard/temp/foto1.jpeg Calcular:Apagado Añadir:Apagado ] A2: Establecer variable [ Nombre:%archivo2 A:/sdcard/temp/foto2.jpeg Calcular:Apagado Añadir:Apagado ] A3: Establecer variable [ Nombre:%archivo3 A:/sdcard/temp/foto3.jpeg Calcular:Apagado Añadir:Apagado ] A4: Establecer variable [ Nombre:%tictac A:%TIMEMS Calcular:Apagado Añadir:Apagado ] A5: For [ Variable:%num Ítems:1:50 ] A6: Ejecutar consola [ Comando:md5 %archivo1 Cuenta atrás (segundos):0 Usar Root:Apagado Almacenar Salida En:%salida ] A7: Ejecutar consola [ Comando:cmp %archivo1 %archivo2 Cuenta atrás (segundos):0 Usar Root:Apagado Almacenar Salida En:%salida Continuar Tarea Tras Error:Encendido ] A8: End For A9: Establecer variable [ Nombre:%tictac A:%TIMEMS-%tictac Calcular:Encendido Añadir:Apagado ] A10: Flash [ Texto:%tictac Largo:Apagado ] -Comenta la acción A7 (te quedas pulsando y luego tocas el botón de apagado de la barra superior). Ejecuta la tarea un par de veces tomando nota del valor que sale al final en el flash. Es el tiempo de ejecución en milisegundos de calcular 50 veces el hash del archivo que pongas (procura usar el mayor). -Ahora comenta la acción A6 y descomenta la A7. Ejecuta la tarea un par de veces y toma nota del valor del flash. Repite esa ejecución con los archivos diferentes y con los archivos iguales. Eso es el tiempo en milisegundos que se tarda en comparar 50 veces el par de archivos que pongas (iguales y diferentes). Al final deberías tener los tiempos de... calcular md5 comparar archivos diferentes comparar archivos iguales Te espero ![]() PD: La prueba no es del todo correcta porque se usan siempre los mismos archivos y eso desvirtúa los resultados al ignorar el tiempo de lectura, pero creo puede valer como aproximación. Lo importante no es el valor que salga, sino la diferencia entre los distintos valores. |
Respuesta |
![]() |
||||||
|
«
Tema Anterior
|
Siguiente tema
»
|
|
Hora actual: 05:47:55 (GMT +2)
HTCMania: líderes desde el 2007