🤖 Construindo um BOT para o Tabnews - part 1
BOT's podem ser incriveis e também extremamente chatos, então use esse conteudo com sabedoria.
✨ Introdução
Diferente de outros lugares o Tabnews foi contruindo como API First, facilitando assim a criações de BOT's e interações automatizadas. Ao final desse post vamos ter contruido um simples BOT para fazer publicações.
Para esse exemplo utilizaremos Python e a biblioteca Requests, no entanto com esses conceitos você pode contruir em qualquer outra linguagem que tenha um Cliente HTTP.
💻 Show me the code
- Instalar o Requests
- Obter um token de Sessão
- Publicar o Conteúdo
Instalar o Requests
No terminal iremos digitar o seguinte comando:
pip install requests
Após isso iremos criar um arquivo main.py
e em seguida iremos importar a biblioteca e definir uma variavel com a URL base da API do tabnews:
import requests
BASE_URL = 'https://www.tabnews.com.br/api/v1'
Obter um token de Sessão
Agora vamos obter um Token de sessão para que consigamos fazer nossa publicação. Iremos fazer uma requisição do tipo POST
no endpoint /sessions
token_payload = {
'email': 'SEU E-MAIL',
'password': 'SUA SENHA',
}
response = requests.post(url=f'{BASE_URL}/sessions', data=token_payload).json()
session_token = response['token']
-
Começamos definindo o
token_payload
que será enviado no corpo da requisição, nele passaremos nosso Email e Senha-
Email e Senha são informações extremamentes sensiveis, estou fazendo dessa forma apenas para exemplificar, o ideal seria usar variaveis de ambiente.
-
-
Em seguida vamos fazer uma requisição do tipo
POST
comrequests.post(...)
e passaremos no corpo da requisição a nossaurl
e nossotoken_payload
e retonaremos a resposta pararesponse
pegando o json retornando com o.json()
- O retorno sera algo semelhante a:
{ 'created_at': '2022-06-30T18:56:37.207Z', 'expires_at': '2022-07-30T18:56:37.207Z', 'id': '845e839b-9d17-40d6-2022-a32120aa5d8b', 'token': '1bb6e98fabdf18a14d7b2ce97f2ee8877fea536c55c6bdf6d178bbb08e46869110da77f884d0a85b72ba098a2bdfca8c', 'updated_at': '2022-06-30T18:56:37.207Z' }
-
desse retorno pegaremos apenas o conteudo do token e amazenaremos na variavel
session_token
comsession_token = response['token']
Publicar o Conteúdo
Depois de obtermos um session_token, podemos fazer uma publicação, Iremos fazer uma requisição do tipo POST
no endpoint /contents
post_payload = {
'body': 'O CONTEUDO DO SEU POST',
'source_url': 'www.SUAFONTE.com',
'title': 'O TITULO DO SEU POST'
'status': 'published',
}
cookies = {
'session_id': session_token
}
response = requests.post(url=f"{BASE_URL}/contents",data=post_payload,
cookies=cookies).json()
-
De forma semelhante ao passo anterior iremos passar um payload, dessa vez sera nossa publicação. Então no
post_payload
iremos passarbody
,source_url
,title
éstatus
, lembrando que status precisa ser igual a published -
Dessa vez precisamos enviar também cookies, nesse caso definiremos
cookies
com a chavesession_id
e a ela atribuiremos osession_token
que pegamos anteriormente. -
Em seguida vamos fazer uma requisição do tipo
POST
comrequests.post(...)
e passaremos no corpo da requisição a nossaurl
nossopost_payload
e agora também oscookies
, e retonaremos a resposta pararesponse
pegando o json retornando com o.json()
- O retorno sera algo semelhante a:
{ 'body': 'O CONTEUDO DO SEU POST', 'created_at': '2022-06-29T19:05:00.939Z', 'deleted_at': None, 'id': '110bc17b-5957-494d-8529-e1b70a0e856d', 'owner_id': 'acdde5e4-874c-45a3-8bf7-1c73bcdb5671', 'parent_id': None, 'parent_slug': None, 'parent_title': None, 'parent_username': None, 'published_at': '2022-06-29T19:05:00.938Z', 'slug': 'bot-teste', 'source_url': 'www.SUAFONTE.com', 'status': 'published', 'title': 'O TITULO DO SEU POST', 'updated_at': '2022-06-29T19:05:00.939Z', 'username': 'VOCE' }
✅ Pronto, você acaba de fazer o seu primeiro post de maneira automatizada 🎉!!
🤙 Considerações finais
Você pode encontrar esse código na intrega aqui
Também pode ver um exemplo do BOT que eu fiz para postar o Treding do Github Aqui, ele é um exemplo de consumir um API e postar o conteudo dessa API, ele tem uma politaca de Retry para as requisições no caso de falhas e também esta usando variaveis de ambiente que eu recomendo fortemente.
Na part 2 publicarei o passo a passo para fazer o deploy dessa automação no Heroku e como configurar um Schedule para que ele poste o conteudo seguindo determinado padrão de tempo.
Deixe aqui nos comentarios ideias de BOT's que trariam valor concreto para o Tabnews.
🤝 Um abraço, Jr.