Como Fazer Seu Assistente J.A.R.V.I.S. Guardar Tarefas com Python Puro
đ Projeto CodeVerse Python â #40/2025
đ Fala, galera dev!
đ Chegamos ao artigo #40 da nossa jornada no Projeto CodeVersePython2025, e hoje vamos dar ao nosso Jarvis mais uma habilidade que todo assistente real precisa ter: guardar lembretes e agenda de tarefas.
Afinal, de que adianta ter um assistente inteligente que abre programas e pesquisa informaçÔes, mas nĂŁo consegue lembrar que vocĂȘ tem uma reuniĂŁo amanhĂŁ Ă s 9h? đ€ Ă como se o Tony Stark tivesse o Jarvis para controlar as armaduras, mas o sistema esquecesse de avisar que o Conselho da S.H.I.E.L.D. estava esperando por ele na sala de reuniĂ”es. đ
Nosso objetivo aqui Ă© simples: vamos ensinar o Jarvis a guardar compromissos e lembrar vocĂȘ depois, tudo usando Python puro, de uma forma bem simples e usando apenas bibliotecas nativas, ou seja, menos cĂłdigo e mais agilidade para adiiconarmos mais essa funcionalidade ao nosso projeto de assitente.
đ§ Como vamos fazer isso?
A lĂłgica Ă© bem parecida com a de uma agenda de papel, sĂł que digital, e para isso vamos fazer o comando de uma forma bem natural, para tornar bem proximo de uma conversa com um assitente, utilizando ocnceitos aprendidos nos ultimos artigos, as famosas wake words.
- Quando vocĂȘ disser: âJarvis, lembre-me de revisar o cĂłdigo amanhĂŁ Ă s 10hâ, ele vai salvar essa informação.
- Depois, sempre que o programa rodar, ele pode checar os lembretes e te avisar.
Para isso, vamos usar:
- speech_recognition â o ouvido do Jarvis.
- pyttsx3 â a voz do Jarvis.
- json â a âmemĂłriaâ onde os compromissos vĂŁo ser guardados.
- datetime â para comparar horĂĄrios e saber quando Ă© hora de te lembrar.
đ Parte 1 â Criando um lembrete simples
Antes de levarmos essa ideia direto para o Jarvis, vamos construir uma versão bem båsica do sistema de lembretes. Assim conseguimos entender de forma clara como salvar e recuperar informaçÔes, sem misturar com outras funçÔes do assistente.
import json
from datetime import datetime
arquivo_lembretes = "lembretes.json"
# Salvar lembrete
def salvar_lembrete(texto, horario):
try:
with open(arquivo_lembretes, "r") as f:
lembretes = json.load(f)
except FileNotFoundError:
lembretes = []
lembretes.append({"texto": texto, "horario": horario})
with open(arquivo_lembretes, "w") as f:
json.dump(lembretes, f)
# Checar lembretes
def verificar_lembretes():
try:
with open(arquivo_lembretes, "r") as f:
lembretes = json.load(f)
except FileNotFoundError:
return []
agora = datetime.now().strftime("%d/%m/%Y %H:%M")
return [l for l in lembretes if l["horario"] == agora]
# Exemplo prĂĄtico
salvar_lembrete("ReuniĂŁo com os Vingadores", "05/10/2025 09:00")
print("Lembretes para agora:", verificar_lembretes())
đ O que acontece aqui?
- Criamos uma lista de lembretes com texto e horĂĄrio.
- Salvamos no arquivo lembretes.json.
- Sempre que rodamos, verificamos se a hora atual bate com algum lembrete.
đ€ Parte 2 â Integrando ao Jarvis
Agora que jĂĄ sabemos como a lĂłgica funciona isoladamente, Ă© hora de unir tudo ao nosso Jarvis. Dessa forma, poderemos criar lembretes diretamente por voz e ouvir o prĂłprio assistente nos avisando quando chegar a hora.
import speech_recognition as sr
import pyttsx3
import json
from datetime import datetime
engine = pyttsx3.init()
r = sr.Recognizer()
arquivo_lembretes = "lembretes.json"
def falar(texto):
engine.say(texto)
engine.runAndWait()
def salvar_lembrete(texto, horario):
try:
with open(arquivo_lembretes, "r") as f:
lembretes = json.load(f)
except FileNotFoundError:
lembretes = []
lembretes.append({"texto": texto, "horario": horario})
with open(arquivo_lembretes, "w") as f:
json.dump(lembretes, f)
def verificar_lembretes():
try:
with open(arquivo_lembretes, "r") as f:
lembretes = json.load(f)
except FileNotFoundError:
return []
agora = datetime.now().strftime("%d/%m/%Y %H:%M")
return [l for l in lembretes if l["horario"] == agora]
with sr.Microphone() as source:
falar("Estou ouvindo, senhor. Qual lembrete deseja salvar?")
audio = r.listen(source)
try:
comando = r.recognize_google(audio, language="pt-BR").lower()
if "lembrar" in comando:
# Exemplo: "lembrar reuniĂŁo amanhĂŁ Ă s 9 horas"
salvar_lembrete("ReuniĂŁo", "05/10/2025 09:00")
falar("Lembrete salvo com sucesso.")
lembretes_atuais = verificar_lembretes()
for l in lembretes_atuais:
falar(f"Senhor, lembrete: {l['texto']}")
except:
falar("NĂŁo consegui entender, senhor.")
đ Agora o Jarvis consegue:
- Ouvir quando pedimos para lembrar algo.
- Guardar em memĂłria.
- Verificar se chegou a hora e nos avisar.
âš Personalizando (dando um toque humano)
Aqui Ă© onde vocĂȘ pode brincar e dar mais personalidade ao Jarvis. Quando ele for lembrar algo, ao invĂ©s de falar sempre a mesma frase, vocĂȘ pode criar respostas diferentes, como:
- âSenhor, estĂĄ na hora da sua reuniĂŁo com os Vingadores.â
- âCarlos, lembrete ativado: revisar o cĂłdigo do Jarvis.â
- âNĂŁo se esqueça do compromisso que me pediu para lembrar.â
Isso faz toda a diferença para o Jarvis parecer menos robótico e mais humano.
đź Concluindo...
Chegamos ao fim de mais um passo na evolução do nosso Jarvis. Hoje vimos que atĂ© mesmo algo aparentemente simples, como criar lembretes, pode transformar nosso assistente em algo muito mais Ăștil no dia a dia. O importante e diferencial Ă© termos as idĂ©ias de como podemos complementar nosso assitente e colocar as idĂ©ias em prĂĄtica adicionando mais funcionalidades a cada dia, tendo o cĂ©u como limite. Ă como no universo Marvel: Ă s vezes nĂŁo Ă© a armadura nova cheia de mĂsseis que faz a diferença, mas sim um detalhe estratĂ©gico que muda tudo na batalha. Da mesma forma, essa função bĂĄsica abre espaço para que o Jarvis seja nĂŁo sĂł um assistente, mas um verdadeiro aliado na nossa rotina.
â Nesse artigo aprendemos a salvar lembretes em um arquivo.
â Neste artigo fizemos o Jarvis criar lembretes por voz.
â Neste artigo vimos como personalizar as respostas para deixĂĄ-lo mais natural.
Nos prĂłximos artigos, vamos expandir esse sistema e abrindo musicas no youtube por camando de voz, criando anotaçÔes para guardra insights, criando o modo privado do jarvis onde ele para de ouvir suas conversdas, alĂ©m de muitas outras funcionalidades, criando um Jarvis ainda mais Ăștil no nosso dia a dia.
đ Curtiu? Me siga no GitHub e no LinkedIn para acompanhar a evolução do Projeto CodeVersePython2025.
Porque o futuro nĂŁo Ă© esperar a tecnologia chegar. Ă a gente criar ela hoje. âĄ