|
||
|
|
|
|||||||
| Tasker Para hablar de todo lo relacionado con la aplicación tasker |
![]() |
|
|
Herramientas |
|
#1
|
||||
|
||||
|
Mover imagenes/videos de whatsapp a otra carpeta y ordenarlos
Basicamente hace eso, mueve las imagenes y videos del whatsapp a una carpeta.
Proceso tasker: A1: Listar archivos [ Dir:WhatsApp/Media/WhatsApp Images/ Coincidir: Incluir Archivos Ocultos:Encendido Variable:%fileswhatsappimages ] A2: Listar archivos [ Dir:WhatsApp/Media/WhatsApp Video/ Coincidir: Incluir Archivos Ocultos:Encendido Variable:%fileswhatsappvideos ] A3: JavaScriptlet [ Código:var countfilesimages = fileswhatsappimages.length; var countfilesvideos = fileswhatsappvideos.length; Librerías: Salida Automática:Encendido Cuenta atrás (segundos):45 ] A4: For [ Variable:%fileswhatsappimagess Ítems:%fileswhatsappimages() ] Si (if) [ %countfilesimages > 1 ] A5: Prueba [ Tipo:File Type Datos:%fileswhatsappimagess Almacenar Resultado en:%isfileimage ] A6: Mover [ Desde:%fileswhatsappimagess A: DCIM/Whatsapp/WhatsApp Images Usar Root:Apagado ] Si (if) [ %isfileimage ~ file ] A7: End For A8: Esperar [ MS:0 Segundos:5 Minutos:0 Horas:0 Días:0 ] A9: For [ Variable:%fileswhatsappvideos Ítems:%fileswhatsappvideos() ] Si (if) [ %countfilesvideos > 1 ] A10: Prueba [ Tipo:File Type Datos:%fileswhatsappvideos Almacenar Resultado en:%isfilevideo ] A11: Mover [ Desde:%fileswhatsappvideos A: DCIM/Whatsapp/WhatsApp Video Usar Root:Apagado ] Si (if) [ %isfilevideo ~ file ] A12: End For Y bueno no me quize quedar ahí, y complemente con que se ordenen por año y mes algo así: Carpeta:2013 SubCarpeta:Enero SubCarpeta:Mayo Carpeta:2014 SubCarpeta:Septiembre SubCarpeta:Noviembre Proceso tasker: A1: Listar archivos [ Dir: DCIM/Whatsapp/WhatsApp Images/ Coincidir: Incluir Archivos Ocultos:Encendido Variable:%fileswhatsappimages ] A2: JavaScriptlet [ Código:var countfilesimages = fileswhatsappimages.length; var countfilesvideos = fileswhatsappvideos.length; Librerías: Salida Automática:Encendido Cuenta atrás (segundos):45 ] A3: For [ Variable:%fileswhatsappimagess Ítems:%fileswhatsappimages() ] Si (if) [ %countfilesimages > 1 ] A4: Prueba [ Tipo:File Type Datos:%fileswhatsappimagess Almacenar Resultado en:%isfileimage ] A5: Si (if) [ %isfileimage ~ file ] A6: Separar variable [ Nombre:%fileswhatsappimagess Separador:/ Eliminar base:Apagado ] A7: Establecer variable [ Nombre:%fileswhatsappimagesstemp A:%fileswhatsappimagess(<) Calcular:Apagado Añadir:Apagado ] A8: Separar variable [ Nombre:%fileswhatsappimagesstemp Separador:- Eliminar base:Apagado ] A9: Sección de Variable [ Nombre:%fileswhatsappimagesstemp2 Desde:1 Longitud:4 Encajar:Apagado Almacenar Resultado en:%fileswhatsappimagesstempyear ] A10: Sección de Variable [ Nombre:%fileswhatsappimagesstemp2 Desde:5 Longitud:2 Encajar:Apagado Almacenar Resultado en:%fileswhatsappimagesstempmonth ] A11: Sección de Variable [ Nombre:%fileswhatsappimagesstemp2 Desde:7 Longitud:2 Encajar:Apagado Almacenar Resultado en:%fileswhatsappimagesstempday ] A12: Realizar tarea [ Nombre:Meses Parar:Apagado Prioridad:10 Parámetro 1 (%par1):%fileswhatsappimagesstempmonth Parámetro 2 (%par2): Devolver Valor de Variable:%fileswhatsappimagesstempmonth ] A13: Prueba [ Tipo:File Type Datos: DCIM/Whatsapp/WhatsApp Images/%fileswhatsappimagesstempyear Almacenar Resultado en:%existdiryear Continuar Tarea Tras Error:Encendido ] A14: Prueba [ Tipo:File Type Datos: DCIM/Whatsapp/WhatsApp Images/%fileswhatsappimagesstempyear/%fileswhatsappimagesstempmonth Almacenar Resultado en:%existdirmonth Continuar Tarea Tras Error:Encendido ] A15: Si (if) [ %existdiryear !~ dir ] A16: Crear directorio [ Dir: DCIM/Whatsapp/WhatsApp Images/%fileswhatsappimagesstempyear Crear todos:Apagado Usar Root:Apagado ] Si (if) [ %isfileimage ~ file ] A17: Fin si (End if) A18: Si (if) [ %existdirmonth !~ dir ] A19: Crear directorio [ Dir: DCIM/Whatsapp/WhatsApp Images/%fileswhatsappimagesstempyear/%fileswhatsappimagesstempmonth Crear todos:Apagado Usar Root:Apagado ] Si (if) [ %isfileimage ~ file ] A20: Fin si (End if) A21: Mover [ Desde:%fileswhatsappimagess A: DCIM/Whatsapp/WhatsApp Images/%fileswhatsappimagesstempyear/%fileswhatsappimagesstempmonth/ Usar Root:Apagado ] A22: Fin si (End if) A23: End For Seria lo mismo para los videos solo que cambiando las rutas y variables. Y la tarea mes (que se usa en el de ordenar) A1: Array Push [ Nombre:%month Posición:1 Valor:Enero Rellenar Espacios:Apagado ] A2: Array Push [ Nombre:%month Posición:2 Valor:Febrero Rellenar Espacios:Apagado ] A3: Array Push [ Nombre:%month Posición:3 Valor:Marzo Rellenar Espacios:Apagado ] A4: Array Push [ Nombre:%month Posición:4 Valor:Abril Rellenar Espacios:Apagado ] A5: Array Push [ Nombre:%month Posición:5 Valor:Mayo Rellenar Espacios:Apagado ] A6: Array Push [ Nombre:%month Posición:6 Valor:Junio Rellenar Espacios:Apagado ] A7: Array Push [ Nombre:%month Posición:7 Valor:Julio Rellenar Espacios:Apagado ] A8: Array Push [ Nombre:%month Posición:8 Valor:Agosto Rellenar Espacios:Apagado ] A9: Array Push [ Nombre:%month Posición:9 Valor:Septiembre Rellenar Espacios:Apagado ] A10: Array Push [ Nombre:%month Posición:10 Valor:Octubre Rellenar Espacios:Apagado ] A11: Array Push [ Nombre:%month Posición:11 Valor:Noviembre Rellenar Espacios:Apagado ] A12: Array Push [ Nombre:%month Posición:12 Valor: Diciembre Rellenar Espacios:Apagado A13: Devolver [ Valor:%month(%par1) Parar:Encendido ] Y basicamente es todo. Solo una duda ¿Se podria mejorar el codigo? (Optimizarlo) Última edición por BlackBlex Día 19/01/14 a las 04:15:42. Razón: Corrigo pasando variables globales a locales. |
| Los siguientes 3 usuarios han agradecido a BlackBlex su comentario: | ||
|
|
|
#2
|
||||
|
||||
|
En las dos primeras acciones obtienes la lista de los archivos de las dos clases: imágenes y vídeos respectivamente. A continuación usas una acción JavaScriptlet (no entiendo nada de JS) que parece servir para contar los archivos de cada clase. Y luego haces un bucle FOR para mover cada archivo, pero eso solo lo haces si el contador de archivos es superior a 1. ¿Qué pasa cuando tienes UN único archivo? ¿No te interesa moverlo? ¿Por qué? En la segunda tarea no entiendo para qué sirve la acción A11. Ahí se crea la variable %filesWhatsappImagessTempDay pero luego parece que no se utiliza en ningún lado. ¿? En la tercera tarea (Meses) también hay cosas que me sorprenden. La primera vez que se ejecuta la tarea, las 12 primeras acciones rellenan todas las variables: - %Month(1) = Enero - %Month(2) = Febero etc. Puesto que son variables globales, permanecen tras la ejecución. Y por eso, en las siguientes ejecuciones, esas 12 acciones repiten lo mismo, sin añadir nada nuevo ni modificar nada. Por tanto, creo que sería más eficiente que la tarea saltara directamente a la acción 13 si se cumple la condición %Month(1) ~ Enero (u otra condición que compruebe alguna de esas variables) Por otro lado, si esa subtarea Meses ya se ha ejecuado alguna vez, desde la propia tarea principal se podría utilizar directamente el valor %Month(%filesWhatsappImagessTempMonth), sin necesiad de volver a ejecutar la subtarea. Por contra, el esquema con el que has planteado esa subtarea Meses puede tener su lógica si utilizara variables locales (para no acumular variables globales innecesarias); o sea que puede ser un buen planteamiento si cambias todas las variables %Month a minúsculas. En las otras dos tareas también hay bastantes variables globales que me parecen prescindibles: %filesWhatsappImagess %isFileImage %filesWhatsappVideoss %isFileVideo %filesWhatsappImagessTemp %filesWhatsappImagessTempYear %filesWhatsappImagessTempMonth %filesWhatsappImagessTempDay %existDirYear %existDirMonth Creo que todo funcionaría igual si fueran variables locales y así no se acumularían variables permanentes innecesarias. Para terminar no nos has dicho nada sobre el perfil/contexto que ejecuta estas tareas. ¿Con qué frecuencia se ejecutan? ¿Una vez al día? ¿Al cerrar Whatsapp? ¿Tras recibir cada mensaje? ¿Con un widget?
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
|
| Gracias de parte de: | ||
|
#3
|
||||
|
||||
|
Eso es muy interesante, gracias. Hay algunas cosas que no entiendo bien...
En las dos primeras acciones obtienes la lista de los archivos de las dos clases: imágenes y vídeos respectivamente. A continuación usas una acción JavaScriptlet (no entiendo nada de JS) que parece servir para contar los archivos de cada clase. Y luego haces un bucle FOR para mover cada archivo, pero eso solo lo haces si el contador de archivos es superior a 1. ¿Qué pasa cuando tienes UN único archivo? ¿No te interesa moverlo? ¿Por qué? ![]() En la tercera tarea (Meses) también hay cosas que me sorprenden. La primera vez que se ejecuta la tarea, las 12 primeras acciones rellenan todas las variables:
- %Month(1) = Enero - %Month(2) = Febero etc. Puesto que son variables globales, permanecen tras la ejecución. Y por eso, en las siguientes ejecuciones, esas 12 acciones repiten lo mismo, sin añadir nada nuevo ni modificar nada. Por tanto, creo que sería más eficiente que la tarea saltara directamente a la acción 13 si se cumple la condición %Month(1) ~ Enero (u otra condición que compruebe alguna de esas variables) Por otro lado, si esa subtarea Meses ya se ha ejecuado alguna vez, desde la propia tarea principal se podría utilizar directamente el valor %Month(%filesWhatsappImagessTempMonth), sin necesiad de volver a ejecutar la subtarea. ![]() Por contra, el esquema con el que has planteado esa subtarea Meses puede tener su lógica si utilizara variables locales (para no acumular variables globales innecesarias); o sea que puede ser un buen planteamiento si cambias todas las variables %Month a minúsculas.
![]() En las otras dos tareas también hay bastantes variables globales que me parecen prescindibles:
%filesWhatsappImagess %isFileImage %filesWhatsappVideoss %isFileVideo %filesWhatsappImagessTemp %filesWhatsappImagessTempYear %filesWhatsappImagessTempMonth %filesWhatsappImagessTempDay %existDirYear %existDirMonth Creo que todo funcionaría igual si fueran variables locales y así no se acumularían variables permanentes innecesarias. ![]() Gracias por las observaciones y las correciones, actualizare el tema. |
| Gracias de parte de: | ||
![]() |
Estás aquí
|
||||||
|
||||||