Pitch: TabNews.py - Uma biblioteca massinha para um lugar massinha! :)

Oi, olá! :)

Desde que o TabNews foi idealizado na playlist para membros do Filipinho, eu venho acompanhado o projeto do TabNews e confesso que desde que a primeira versão da home do site foi lançada, eu desenvolvi um apego muito delicinha com esse lugar, me ajudando em muitos aspectos, quanto as de outras pessoas.

E desde antes do projeto ser lançado, eu tive a ideia de criar uma biblioteca em Python para o TabNews. E vendo outras implementações da API do TabNews, como o: TabNews.js ou TabNews.ts, eu decidi que ia criar uma biblioteca pra Python, o TabNews.py.

A biblioteca foi feita para consumir a API do Tabnews. Ela tem o proposito de facilitar e optimizar a integração de aplicações Python para o site do TabNews. Então, vamos ver como ela funciona!

Para instalar localmente a biblioteca em seu computador, você pode usar o Pypi, com o comando:

pip install tabnews

Ou instalar via git:

pip install git+https://github.com/Gustavosta/TabNews.py

Aqui vamos ver alguns exemplos de uso de como você pode usar a biblioteca para facilitar a comunicação com a API do Tabnews:

➡️ Exemplo 1:

Esse é um caso de uso bem simples, para mostrar como a autenticação funciona:

from tabnews import Client

EMAIL = 'user@example.com'
PASSWORD = 'SenhaExtremamenteSegura'

client = Client(EMAIL, PASSWORD)
user = client.get_user()
print(f'Logged in as {user.username}')

➡️ Exemplo 2:

Esse é um exemplo de como fazer uma publicação via código.

from tabnews import Client

EMAIL = 'user@example.com'
PASSWORD = 'SenhaExtremamenteSegura'
client = Client(EMAIL, PASSWORD, use_preview_tabnews_host=True)

post = client.publish_post(
    title='isso é um teste',
    content='isso foi publicado com a biblioteca do Tabnews para Python :)',
    reference='https://github.com/Gustavosta/TabNews.py'
)

print(post)

Repare que usei use_preview_tabnews_host=True. Esse parâmetro serve para postar coisas diretamente no ambiente de homologação usando a URL do ambiente extraída via API no repositório oficial do Tabnews.

➡️ Exemplo 3:

Esse exemplo mostra como dar upvote em um post, passando como parâmetro o username do usuário e o slug ou parent_id de um conteúdo:

from tabnews import Client

TOKEN = 'TokenOuCookieExtraidoAPartirDaAutenticacao'
client = Client(token=TOKEN, save_session=True)
upvote = client.upvote(
    'filipedeschamps', 
    'tentando-construir-um-pedaco-de-internet-mais-massa'
)

print(upvote)

Note que dessa vez, eu usei o parâmetro token no client para autenticação, o que também é possível, mas não tão recomendado, já que tokens podem expirar e não durarem muito.

➡️ Exemplo 4:

Esse exemplo mostra como obter os dados de uma postagem e como comentar em uma postagem:

from tabnews import Client

EMAIL = 'user@example.com'
PASSWORD = 'SenhaExtremamenteSegura'
client = Client(EMAIL, PASSWORD, save_session=True, use_preview_tabnews_host=True)

post = client.get_post(
    'sowlfie', 
    'isso-e-um-teste'
)
comment = client.publish_comment(
    parent_id=post.id,
    content='Teste de comentário'
)

print(comment)

Repare que usei o parâmetro save_session, que a biblioteca usa para salvar as configurações de autenticação para a sessão e diminuir o tempo de autenticação (que por padrão é True). Você também pode usar: config_path para escolher o caminho de salvamento ou carregamento das configurações em formato json.

➡️ Exemplo 5:

Esse exemplo mostra como editar uma postagem ou comentário:

from tabnews import Client

EMAIL = 'user@example.com'
PASSWORD = 'SenhaExtremamenteSegura'
client = Client(EMAIL, PASSWORD, use_preview_tabnews_host=True)

post = client.edit_post(
    username='sowlfie', 
    slug='isso-e-um-teste',
    title='Isso é um teste (título editado)',
    content='isso foi publicado e editado com a biblioteca do Tabnews para Python :)', 
    reference='https://github.com/Gustavosta/TabNews.py'
)
comment = client.edit_comment(
    comment_slug='f0777d39-055a-4e44-b3cf-dabf0e2176bb',
    parent_id=post.id,
    content='Esse é um comentário publicado e editado com a mesma lib'
)

➡️ Exemplo 6:

Esse exemplo mostra como deletar uma postagem ou comentário:

from tabnews import Client

EMAIL = 'user@example.com'
PASSWORD = 'SenhaExtremamenteSegura'
client = Client(EMAIL, PASSWORD, use_preview_tabnews_host=True)

post = client.delete_post(
    slug='isso-e-um-teste'
)
comment = client.delete_comment(
    comment_slug='f0777d39-055a-4e44-b3cf-dabf0e2176bb'
)

Muito obrigado por ler até aqui!!! :) ❤️ E caso queira, me ajudaria muito se você desse uma estrela no GitHub do projeto, ou se quiser contribuir com o projeto, fique a vontade para abrir um PR ou abrir uma issue com alguma sugestão ou problema que você tenha encontrado.

Trabalho incrível! Tanto a explicação, documentação e a implementação. Parabéns por tudo, dei minha estrelinha no GitHub, obrigado por tornar esse pedaço da internet mais deliçinha

[OFF] O que significa a tag Pitch que eu vejo em muitas publi dentro do tabnews???

É uma forma de informar ao leitor que a publicação trata-se de uma divulgação sobre um projeto em que o autor está diretamente envolvido. O que consta nos [Termos de Uso](https://www.tabnews.com.br/termos-de-uso) é o seguinte: > 5. O usuário se compromete em não realizar publicações com foco exclusivo comercial e se compromete em não utilizar técnicas passivas de tracking, como tracking pixel ou qualquer outro tipo de identificação que não necessite da interação dos outros usuários do site. Apesar disto, será muito bem vindo o usuário realizar um **Pitch sobre projetos em que esteja diretamente envolvido** e que conseguirá devolver para comunidade conhecimentos sobre como o projeto foi executado, principalmente sobre a parte técnica.

Olá lengo, eu tenho uma dúvida em relação a sua biblioteca.

A dúvida é o seguinte: dá para pegar os posts da pagina de relevante ou recente(quando eu digo todos os post, são todos os post que a api retorna como json)

E parabéns pelo projeto!

Que implementação sensacional, desde a documentação (simulando janelas), até detalhes muito bons como usar a API do GitHub para pegar a URL de homologação! Muito muito bom!!

Que foda, mano vou passar la depois pra da uma olhada no seu código

Muito delicinha sua lib. Poderia implementar algo para ciência de dados.

Se falei alguma asneira me desculpe estou aprendendo python ainda.

Parabens otimo conteudo e a estrutura da documentação e algo que me deixou de boca aberta pois preciso melhor e muito nesse ponto....

vou deixar aqui um projetinho meu que permite postar no Tabnews pelo CMD sem precisar baixar ABSOLUTAMENTE NADA: PROJETO TabPost

em seguida vou mostrar como os maias e incas postavam via python antes da sua biblioteca: PROJETO TabFast

Sensacional, não sei dizer o que mais me prendeu aqui nessa publicação, se foi o excelente conteúdo ou os minutos que eu investi tentando entender essa moldura like Mac OS em volta do código. kkkk

Parabéns e obrigado, lengo.