Tasker Para hablar de todo lo relacionado con la aplicación tasker

Respuesta
 
Herramientas
  #1  
Viejo 25/09/16, 19:09:27
Array

[xs_avatar]
SmartPhoneLover SmartPhoneLover no está en línea
Usuario muy activo
 
Fecha de registro: jun 2016
Mensajes: 542
Tu operador: Movistar

interrogacion Tarea para consultar eventos de calendario (no http)

Aquí os traigo una tarea de un usuario de XDA, la cual sirve para consultar eventos de calendario.
Quizas tenga elementos o partes que pueden no hacernos falta, por lo que la comparto para que la veamos y estudiemos como podemos mejorarla o adaptarla.

Código:
A1: Convertir Variable [ Nombre:%DATE Función:Fecha Hora a Segundos Almacenar Resultado en:%date ]
<GET TIME SINCE JAN 1. 1970 THROUGH 6AM TODAY>
A2: Establecer variable [ Nombre:%schedstart A:%date + (60*60*6) Calcular:Encendido Añadir:Apagado ] 
<GET TIME SINCE JAN 1. 1970 THROUGH MIDNIGHT TODAY>
A3: Establecer variable [ Nombre:%schedend A:%date + (60*60*24) Calcular:Encendido Añadir:Apagado ] 
<TEST NEXT EVENT>
A4: Probar App [ Tipo:Título Calendario Datos:%schedstart Almacenar Resultado en:%event ] 
<DETERMINE WHICH CALENDAR I'M TESTING>
A5: Probar App [ Tipo:Calendario Calendario Datos:%schedstart Almacenar Resultado en:%calendar ] 
<EVENT TITLE SHOULD NOT MATCH PREVIOUS CHECK AND CALENDAR SHOULD BE MY MAIN CALENDAR>
A6: Si (if) [ %event(#) nig 0 & %event1 !~ %doubleevent & %calendar1 ~ *Phone* ]
<RETURN DATE OF EVENT THAT I FOUND IN CALENDAR>
A7: Convertir Variable [ Nombre:%schedstart Función:Segundos a Fecha Hora larga Almacenar Resultado en:%time ] 
A8: Separar variable [ Nombre:%time Separador:2016 Eliminar base:Apagado ] 
<PUSH CALENDAR EVENT TITLE AND TIME TO END OF ARBITRARILY LONG ARRAY>
A9: Array Push [ Nombre:%calevents Posición:999 Valor:%event1, at %time2 Rellenar Espacios:Apagado ] 
<SAVE EVENT TITLE SO I DON'T MATCH IT AGAIN>
A10: Establecer variable [ Nombre:%doubleevent A:%event1 Calcular:Apagado Añadir:Apagado ] 
A11: Fin si (End if) 
<ADD 15 MINUTES TO NEXT CHECK>
A12: Sumar a variable [ Nombre:%schedstart Valor:900 Módulo (wrap around):0 ] 
<LOOP BACK AND TEST NEXT EVENT IF WITHIN SAME DAY STILL>
A13: Ir a acción [ Tipo:Etiqueta Acción Número:4 Etiqueta:TEST NEXT EVENT ] Si (if) [ %schedstart < %schedend ]
A14: Decir [ Texto:You have no events today. Motor: Voz:com.ivona.tts:eng-USA Stream:3 Tono:5 Velocidad:4 Respetar Foco Audio:Encendido Red:Encendido Continuar tarea inmediatamente:Apagado ] Si (if) [ %calevents(#) ig 0 ]
A15: Decir [ Texto:You have one event today. Motor: Voz:com.ivona.tts:eng-USA Stream:3 Tono:5 Velocidad:4 Respetar Foco Audio:Encendido Red:Encendido Continuar tarea inmediatamente:Apagado ] Si (if) [ %calevents(#) ig 1 ]
A16: Decir [ Texto:You have %calevents(#) events today. Motor: Voz:com.ivona.tts:eng-USA Stream:3 Tono:5 Velocidad:4 Respetar Foco Audio:Encendido Red:Encendido Continuar tarea inmediatamente:Apagado ] Si (if) [ %calevents(#) > 1 ]
A17: For [ Variable:%eventtosay Ítems:%calevents(:) ] 
A18: Decir [ Texto:%eventtosay Motor: Voz:com.google.android.tts:eng-usa Stream:3 Tono:5 Velocidad:4 Respetar Foco Audio:Encendido Red:Encendido Continuar tarea inmediatamente:Apagado ] 
A19: End For 
A20: Flash [ Texto:%CALS Largo:Encendido ]
------------------------------------------------------------------------------

Fuente: http://forum.xda-developers.com/u/ta...s-day-t3332783

Última edición por SmartPhoneLover Día 25/09/16 a las 19:11:53.
Responder Con Cita
Los siguientes 3 usuarios han agradecido a SmartPhoneLover su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]


  #2  
Viejo 25/09/16, 19:22:36
Array

[xs_avatar]
SmartPhoneLover SmartPhoneLover no está en línea
Usuario muy activo
 
Fecha de registro: jun 2016
Mensajes: 542
Tu operador: Movistar

He agregado el "no http" en el título, en principio porque no sería para consultar el calendario (ONLINE=xml), sino el local.
Responder Con Cita
  #3  
Viejo 26/09/16, 15:54:17
Array

[xs_avatar]
danko9696 danko9696 no está en línea
Usuario muy activo
 
Fecha de registro: ago 2012
Mensajes: 2,371
Modelo de smartphone: Mate 8
Tu operador: Yoigo
Otra forma sería usar sqlite para acceder a la base de datos del calendario, lo que te permitiría mucho más control.
Responder Con Cita
  #4  
Viejo 26/09/16, 16:41:02
Array

[xs_avatar]
SmartPhoneLover SmartPhoneLover no está en línea
Usuario muy activo
 
Fecha de registro: jun 2016
Mensajes: 542
Tu operador: Movistar

Podrías describir el código a utilizar?
Responder Con Cita
  #5  
Viejo 26/09/16, 17:07:05
Array

[xs_avatar]
danko9696 danko9696 no está en línea
Usuario muy activo
 
Fecha de registro: ago 2012
Mensajes: 2,371
Modelo de smartphone: Mate 8
Tu operador: Yoigo
No hay un código concreto ya que depende de cada caso, sobre todo con las bases de datos de apps nativas. Se trataría de aprender a usar sqlite y a partir de ahí puedes extraer información de la base de datos de cualquier aplicación (siendo root, claro), para lo cual se examinaría con sqlite debugger la estructura de la base de datos en cuestión (que puede ser de calendario, correo, contactos, rss, whatsapp, etc...) y con esa información construiríamos consultas sqlite, que testearíamos primero en el mismo sqlite debugger y una vez visto que funcionan como queremos las trasladaríamos a Tasker.

O sea, hacerlo con sqlite te llevaría bastante mas tiempo (empleado en aprenderlo, después ya no) pero te permitiría mucho más control y te serviría para muchas más cosas.
Responder Con Cita
Gracias de parte de:
  #6  
Viejo 26/09/16, 21:50:31
Array

[xs_avatar]
cace0353 cace0353 está en línea ahora
Usuario muy activo
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 504
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Tu operador: Jazztel
Hola @SmartPhoneLover,

Hace tiempo me hice una tarea a partir de una consulta a las BD de mi cuenta Google para que me leyera cada dia los eventos del calendario. El código de la consulta lo saqué del foro pero no he podido encontrar de donde… creo que lo posteó en un hilo maid450, pero no puedo asegurarlo.

La consulta se hace así (copiando y pegando directamente de mi tarea) :

sqlite3 -list /data/data/com.android.providers.calendar/databases/calendar.db "SELECT Instances.begin, Events.title FROM Instances JOIN Events ON Instances.event_id = Events._id WHERE begin > %TIMEMS ORDER BY Instances.begin ASC LIMIT 5;" | awk -F "|" '{printf strftime("%a %H:%M",$1/1000)}{print " -",$2}'

Esto te devuelve en una variable los 5 próximos eventos del dia (uno por línea). Puedes ampliar el n° corrigiendo el valor que tienes después del parametro LIMIT.

Tuve que corregir la salida porqué me devolvia los días de la semana en inglés y las horas sin corregir (horarios de verano e invierno) pero seguro que también lo haras facilmente…

Enviat des del meu SM-T550 usant Tapatalk
__________________
Me apasiona volar, pero con los pies en el suelo...
Responder Con Cita
  #7  
Viejo 26/09/16, 22:08:41
Array

[xs_avatar]
Caravantes Caravantes no está en línea
Usuario muy activo
· Votos compra/venta: (1)
 
Fecha de registro: feb 2011
Mensajes: 2,200
Modelo de smartphone: Samsung Galaxy S9
Tu operador: Lowi
 Cita: Originalmente Escrito por cace0353 Ver Mensaje
Hace tiempo me hice una tarea a partir de una consulta a las BD de mi cuenta Google para que me leyera cada dia los eventos del calendario. El código de la consulta lo saqué del foro pero no he podido encontrar de donde… creo que lo posteó en un hilo maid450, pero no puedo asegurarlo.
Creo que lo encontré.
Maid450 lo explicó en el mensaje número 11 del hilo titulado "Consultar si hay un evento en el calendario en X tiempo"
http://www.htcmania.com/showthread.php?t=802260
__________________
Firmado: Caravantes, miembro del equipo que promueve el Subforo de Tasker
Responder Con Cita
Gracias de parte de:
  #8  
Viejo 26/09/16, 22:30:55
Array

[xs_avatar]
cace0353 cace0353 está en línea ahora
Usuario muy activo
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 504
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Tu operador: Jazztel
 Cita: Originalmente Escrito por Caravantes Ver Mensaje
Creo que lo encontré.
Maid450 lo explicó en el mensaje número 11 del hilo titulado "Consultar si hay un evento en el calendario en X tiempo"
http://www.htcmania.com/showthread.php?t=802260
Correcto, gracias @Caravantes. Además se ve el formato de salida del ejemplo que es con las abreviaturas de los días en inglés. No hace falta más que convertir los nombres mon, thu, wed, fri… el lunes, martes, miércoles, jueves creando dos matrices lineales con los nombres y substituyendo la abreviatura encontrada por el nombre completo en español que ocupa el mismo lugar en la segunda…

Evidentemente aquí puede incluirse la tarea que se discutía días atrás sobre la lectura a voz de las horas para redondear el trabajo (yo la tengo montada así pero en catalán)

Lo del cambio de horario verano-invierno lo hago a mano dos veces al año y no me peocupó nada…

Un saludo!

Enviat des del meu SM-T550 usant Tapatalk
__________________
Me apasiona volar, pero con los pies en el suelo...
Responder Con Cita
  #9  
Viejo 27/09/16, 17:08:18
Array

[xs_avatar]
danko9696 danko9696 no está en línea
Usuario muy activo
 
Fecha de registro: ago 2012
Mensajes: 2,371
Modelo de smartphone: Mate 8
Tu operador: Yoigo
 Cita: Originalmente Escrito por cace0353 Ver Mensaje
Correcto, gracias @Caravantes. Además se ve el formato de salida del ejemplo que es con las abreviaturas de los días en inglés. No hace falta más que convertir los nombres mon, thu, wed, fri… el lunes, martes, miércoles, jueves creando dos matrices lineales con los nombres y substituyendo la abreviatura encontrada por el nombre completo en español que ocupa el mismo lugar en la segunda…
Si fuesen decenas o cientos sí, pero siendo solo siete no hace falta crear ninguna matriz, eso se puede hacer dentro de la propia consulta con CASE WHEN...THEN...ELSE...END.
Responder Con Cita
Gracias de parte de:
  #10  
Viejo 27/09/16, 19:03:09
Array

[xs_avatar]
cace0353 cace0353 está en línea ahora
Usuario muy activo
 
Fecha de registro: may 2010
Localización: Arenys de Mar (B)
Mensajes: 504
Modelo de smartphone: Pixel 8 Pro - 256 Gb.
Tu operador: Jazztel
Gracias @danko9696 por la aportación.

Como algunos somos novatos aún en Sqlite3 (al menos yo) nos movemos con consultas simples y la introducción de nuevos parámetros en la consulta ni la contemplo pues me és más fácil resolver el problema desde Tasker.

Ahoro que me brindas la oportunidad quiero aprovechar para mejorar un poco mi nivel y mis programas.

Entiendo que tu sugerencia: CASE mon THEN lunes ELSE thu THEN martes...END iria despues del LIMIT 5 y antes antes del formateo del resultado, antes del "awk" ¿és correcto? ¿Cuál seria la sintaxis adecuada para que cambiara el resultado devuelto en la variable de salida?

Saludos
__________________
Me apasiona volar, pero con los pies en el suelo...
Responder Con Cita
  #11  
Viejo 27/09/16, 19:31:07
Array

[xs_avatar]
danko9696 danko9696 no está en línea
Usuario muy activo
 
Fecha de registro: ago 2012
Mensajes: 2,371
Modelo de smartphone: Mate 8
Tu operador: Yoigo
Se trata como cualquier otro campo, en plan SELECT campo1, CASE...WHEN...THEN..., campo3, CASE...WHEN...THEN... AS campo4, campo5 FROM ... WHERE ...

Ante la duda sobre la sintaxis junto con ejemplos:
http://lmgtfy.com/?q=sqlite+example+case+when+then
Responder Con Cita
Los siguientes 3 usuarios han agradecido a danko9696 su comentario:
[ Mostrar/Ocultar listado de agradecimientos ]
Respuesta

Estás aquí
Regresar   Portal | Indice > Todo sobre Android > Otro software para Android > Tasker



Hora actual: 23:33:51 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /