![]() |
|
Tasker Para hablar de todo lo relacionado con la aplicación tasker |
«
Tema Anterior
|
Siguiente tema
»
|
Herramientas |
#1
|
||||
|
||||
![]()
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 |
Los siguientes 3 usuarios han agradecido a SmartPhoneLover su comentario: | ||
|
#2
|
||||
|
||||
He agregado el "no http" en el título, en principio porque no sería para consultar el calendario (ONLINE=xml), sino el local.
|
#3
|
||||
|
||||
Otra forma sería usar sqlite para acceder a la base de datos del calendario, lo que te permitiría mucho más control.
|
#4
|
||||
|
||||
Podrías describir el código a utilizar?
|
#5
|
||||
|
||||
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. |
Gracias de parte de: | ||
#6
|
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 |
#7
|
||||
|
||||
Cita:
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 |
Gracias de parte de: | ||
#8
|
|
Cita:
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 |
#9
|
||||
|
||||
Cita:
|
Gracias de parte de: | ||
#10
|
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 |
#11
|
||||
|
||||
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 |
Los siguientes 3 usuarios han agradecido a danko9696 su comentario: | ||
Respuesta |
![]() |
||||||
|
«
Tema Anterior
|
Siguiente tema
»
|
|
Hora actual: 16:30:54 (GMT +2)
HTCMania: líderes desde el 2007