I. Introdução
Este relatório de desenvolvimento tem como objetivo demonstrar como usar a API do Notion para automatizar a programação de exercícios. O Notion é uma ferramenta de produtividade tudo-em-um que permite aos usuários criar e organizar bancos de dados, notas, tarefas e muito mais. A API do Notion fornece aos desenvolvedores acesso programático aos recursos do Notion, possibilitando a automação de várias tarefas.
O trecho de código fornecido demonstra como usar a API do Notion para criar eventos de exercícios em um banco de dados com base em uma programação pré-definida. O script recupera os eventos existentes em um intervalo de datas específico e cria novos eventos para os dias que não têm nenhum evento agendado. A programação de exercícios é definida no dicionário days_of_week
, que mapeia cada dia da semana para um nome de exercício e uma lista de tags.
Ao automatizar o processo de programação de exercícios com a API do Notion, os desenvolvedores podem economizar tempo e reduzir erros manuais. Este relatório fornecerá um guia passo a passo para ajudá-lo a configurar a API do Notion e entender os vários componentes do trecho de código.
II. Configurando a API do Notion
Para usar a API do Notion, você precisa ter uma conta no Notion e uma integração configurada. Aqui está um guia passo a passo para autenticar na API do Notion:
Crie uma integração no Notion
- Faça login no Notion e navegue até a página de Integrações clicando no ícone do perfil no canto inferior esquerdo da tela e em seguida, clicando em “Integrações”.
- Clique no botão “Criar nova integração”.
- Dê um nome à sua integração e selecione o espaço de trabalho onde você deseja usá-la.
- Clique no botão “Enviar” para criar a integração.
Obtenha seu token de integração
- Depois de criada a integração, você pode obter o token de integração clicando no nome da integração.
- Copie o token de integração para usá-lo em seu código.
Instale o pacote da API do Notion
Abra o seu terminal ou prompt de comando.
Execute o seguinte comando para instalar o pacote da API do Notion:
pip install notion-client
Configure o cliente da API do Notion
Importe o cliente da API do Notion em seu código adicionando a seguinte linha no topo:
from notion_client import Client
Autentique o cliente adicionando a seguinte linha e substituindo
<API Key>
pelo seu token de integração:notion = Client(auth="<API Key>")
Configure os detalhes do banco de dados
- Obtenha o ID do banco de dados onde você deseja adicionar eventos.
- Substitua a variável
database_id
no trecho de código pelo seu ID de banco de dados.
O trecho de código fornecido usa o objeto notion_client.Client
para interagir com a API do Notion. O objeto Client
é usado para autenticar o cliente da API e fornece acesso a vários recursos do Notion, como bancos de dados e páginas.
A variável database_id
é definida como o ID do banco de dados do Notion onde os eventos de exercícios serão adicionados. O ID pode ser encontrado na URL do banco de dados.
III. Definindo a Programação de Exercícios
A programação de exercícios é definida no trecho de código usando as seguintes variáveis:
start_days_ago
: o número de dias antes da data de hoje para iniciar a programaçãoend_days_after
: o número de dias após a data de hoje para encerrar a programaçãodays_of_week
: um dicionário que mapeia cada dia da semana para um nome de exercício e uma lista de tags.
O dicionário days_of_week
é usado para definir o plano de exercícios para cada dia da semana. Cada dia da semana é uma chave no dicionário e o valor correspondente é outro dicionário que contém o nome do exercício e uma lista de tags associadas ao exercício. Por exemplo:
days_of_week = {
"Monday": {"name": "DAY 1", "tag": ["chest", "triceps"]},
"Tuesday": {"name": "DAY 2", "tag": ["back", "biceps"]},
"Wednesday": {"name": "DAY 3", "tag": ["lower body", "shoulder"]},
"Thursday": {"name": "DAY 1", "tag": ["chest", "triceps"]},
"Friday": {"name": "DAY 2", "tag": ["back", "biceps"]},
"Saturday": {"name": "DAY 3", "tag": ["lower body", "shoulder"]},
}
Neste exemplo, a programação é dividida em três dias e cada dia tem um exercício específico e tags associadas a ele.
As variáveis start_days_ago
e end_days_after
são usadas para definir o intervalo de datas para a programação de exercícios. start_days_ago
especifica quantos dias antes da data de hoje para começar a programação e end_days_after
especifica quantos dias após a data de hoje para encerrar a programação.
O trecho de código usa o módulo datetime
para obter a data de hoje e calcular as datas de início e término da programação de exercícios. A data de início é obtida subtraindo start_days_ago
da data de hoje e a data de término é obtida adicionando end_days_after
à data de hoje. As datas são formatadas como strings no formato %Y-%m-%d
.
IV. Consultando os Eventos Existente
Antes de criar novos eventos de exercícios, o trecho de código recupera os eventos existentes dentro do intervalo de datas definido. Isso é feito para evitar a criação de eventos duplicados na mesma data.
O método notion.databases.query()
é usado para consultar o banco de dados do Notion e recuperar os eventos existentes. O parâmetro filter
é usado para especificar as condições de filtro para a consulta. Neste caso, o filtro é definido para recuperar os eventos que caem dentro das datas de início e término definidas no trecho de código. Aqui está um exemplo do filtro usado na consulta:
{
"and": [
{"property": "Date", "date": {"on_or_after": start_date}},
{"property": "Date", "date": {"on_or_before": end_date}}
]
}
Esse filtro retorna eventos que têm uma propriedade Data
que cai entre as datas de start_date
e end_date
.
O atributo results
da resposta da consulta é usado para obter os eventos existentes dentro do intervalo de datas. Os resultados são armazenados na variável existing_events
para uso posterior no trecho de código.
existing_events = notion.databases.query(
**{
"database_id": database_id,
"filter": {
"and": [
{"property": "Date", "date": {"on_or_after": start_date}},
{"property": "Date", "date": {"on_or_before": end_date}}
]
},
}
).get("results")
V. Criando Novos Eventos
Depois que os eventos existentes dentro do intervalo de datas são obtidos, o trecho de código prossegue para criar novos eventos de exercícios para cada dia dentro do intervalo de datas da programação.
O trecho de código usa um loop for
para iterar por cada data dentro do intervalo de datas. Um novo evento é criado para cada dia que não é um domingo:
for date in (datetime.now() + timedelta(days=n) for n in range(-start_days_ago, end_days_after + 1)):
# skip Sundays
if date.strftime("%A") == "Sunday":
continue
O método strftime()
é usado para obter o nome do dia da semana a partir da data e, se o nome do dia da semana for “Domingo”, o loop pula esse dia e passa para o próximo dia.
O trecho de código então verifica se um evento já existe na data atual:
if any(event.get("properties").get("Date").get("date").get("start") == date.strftime("%Y-%m-%d") for event in existing_events):
print(f"Event already exists for {date.strftime('%Y-%m-%d')}. Skipping.")
continue
Se um evento já existe na data atual, o loop pula esse dia e passa para o próximo dia.
Se nenhum evento existir na data atual, um novo evento é criado com o nome do exercício e as tags associadas àquele dia da semana:
day_of_week = date.strftime("%A")
event_name = days_of_week[day_of_week]["name"]
event_tag = days_of_week[day_of_week]["tag"]
new_event = {
"Name": {"title": [{"text": {"content": event_name}}]},
"Date": {"date": {"start": date.strftime("%Y-%m-%d")}},
"Tag": {"multi_select": [{"name": tag} for tag in event_tag]},
}
notion.pages.create(parent={"database_id": database_id}, properties=new_event)
O nome do exercício e as tags associadas àquele dia da semana são obtidos do dicionário days_of_week
. O dicionário new_event
é usado para definir as propriedades do novo evento, que inclui o nome do evento, data e tags. O método notion.pages.create()
é usado para criar o novo evento no banco de dados do Notion.
Ao criar novos eventos para cada dia da semana dentro do intervalo de datas da programação, os desenvolvedores podem automatizar o processo de agendamento de exercícios e garantir que o plano de exercícios esteja atualizado e preciso.
VI. Conclusão
Neste projeto, demonstramos como usar a API do Notion para automatizar o processo de criação de uma programação de exercícios em um banco de dados do Notion. O trecho de código que fornecemos pode ser usado para criar uma programação de exercícios para um intervalo de datas específico e adicionar automaticamente novos eventos ao banco de dados com base no plano de exercícios definido.
A API do Notion pode ser usada para automatizar uma ampla variedade de tarefas, como gerenciar uma lista de tarefas, rastrear despesas ou organizar tarefas de projeto. Com a API do Notion, os desenvolvedores podem construir integrações personalizadas e automatizar tarefas repetitivas, economizando tempo e aumentando a produtividade.
No geral, a API do Notion oferece uma ferramenta poderosa para que os desenvolvedores integrem o Notion em seu fluxo de trabalho e automatizem suas tarefas. À medida que o Notion continua a crescer em popularidade, podemos esperar ver mais desenvolvedores criando integrações e automatizando tarefas com a API do Notion.
No futuro, planejamos expandir este projeto adicionando mais recursos e integrações com outras ferramentas. Também planejamos explorar outros casos de uso para a API do Notion e ver como ela pode ser usada para automatizar outras tarefas em nosso fluxo de trabalho.
Source code : https://github.com/hobbyworker/notion-workout-scheduler