Convertendo e importando os arquivos de exportação de posts do Mastodon

Como fazer para converter e usar os dados do arquivo de exportação de posts do Mastodon, em formato activitypub/ json / gz?

O Mastodon possui opções bastante ricas de exportação dos dados, disponíveis no menu do perfil do usuário: dá para exportar os seguidores, listas, bloqueios, etc., tudo em CSV, um formato universal fácil de processar, importar em planilhas, gerar relatórios, etc.

A mesma tela de exportação também dá acesso a um caso especial: a exportação das planilhas e mídias postadas pelo usuário, e armazenadas no servidor. Ela é gerada mediante solicitação (por um botão na mesma tela), e tem a forma de um arquivo compactado em formato gz.

Ao descompactar esse arquivo gz, você encontra uma pasta com subpastas contendo as mídias que você postou, e meia dúzia de arquivos, incluindo o que tende a ser o maior deles: o outbox.json, que tem todo o seu histórico de posts (toots e boosts).

Ao contrário dos demais arquivos, este vem no formato json1, também de uso comum, mas mais adequado a programadores do que a usuários.

Enquanto não temos aplicativos que permitam ao usuário final o pleno uso desse arquivo gerado, resta aos que têm um pouco mais de inclinação técnica ajudar aos demais, fazendo a conversão para CSV para eles.

🚨 ATENÇÃO: se você for pedir a algum amigo que faça a conversão para você, certifique-se de ser alguém que você confie, porque ele terá acesso ao conjunto completo das suas mensagens, incluindo as particulares.

Uma maneira de fazer essa conversão, para quem tem a aptidão técnica, é por meio de um script como o da tela abaixo, que usa a linguagem awk (testei apenas com o gawk) e o gron, que já mencionamos antes.

O mesmo script está disponível para download aqui, basta renomear como actpub2csv.sh, tornar executável e rodá-lo no mesmo diretório em que estiver o arquivo outbox.json, redirecionando a saída para o CSV desejado, como no exemplo:
./actpub2csv.sh > meusposts.csv

O programa é simplificado, e recursos de tolerância a falhas, parametrização, opções adicionais, rodar em mais plataformas (testei em Mac e Debian) etc. foram deixados intencionalmente como um complemento aos interessados em expandi-lo.

O CSV gerado é na verdade um "quase-CSV", pois usa o TAB, e não uma vírgula, como separador de campos. Os campos exportados incluem a data, a URL, os destinatários e o texto (puro e formatado), ou o link em caso de ser um boost.

Ao importar numa planilha o arquivo CSV gerado, informe que o arquivo é delimitado, que o separador é o TAB (ou "Guia"), e que os caracteres são padrão UTF-8.

Não tenho condições de prestar suporte, manutenção ou serviços relacionados a esse script, e espero que logo surja uma alternativa melhor e apta a ser operada de maneira simples pelo próprio usuário interessado.

 
  1.  E usando as convenções do ActivityPub.

Bem-vindo, Celeron - e obrigado por tudo, Odroid

Dia de novidade na rede doméstica daqui.

Esse servidor fanless sem graça1 ali de trás acaba de substituir de vez a charmosa plaquinha Odroid da frente, como servidor aqui de casa, pra rodar as minhas coisinhas.

O PCzinho industrial é um Celeron N5100 de 1,1GHz, de 4 núcleos, com 8GB de RAM e 128GB de SSD. Ou, segundo o anúncio, um "Intel N100 Celeron N5100 Fanless Mini PC 4x Intel i226 2.5G LAN HDMI Appliance" que eu comprei no Ali2, e descrevi (com link) no final de junho.

Aproveitei e troquei o Debian 11 por 12. E além do Debian, basicamente ele roda dns/filtro de anúncios, e scripts meus, de automação de rotinas, de experimentos, de monitoramento e mais. Não tem muitas dependências pra isso, fora um servidor web e um serviço de e-mail pra mandar pra Internet o tráfego gerado pelos meus scripts.

O Odroid ficou em paralelo por 10 dias, mas hoje foi pra gaveta.

🐘 (thread no Mastodon)

 
  1.  Servidor bom é servidor sem graça.

  2.  Encomendei em 9/6/2023 e chegou em 21/6

Busca do FBI na casa do admin leva junto os dados dos usuários da Kolektiva.social

Hoje e nos próximos dias você vai ler análises sobre o que aconteceu na instância Kolektiva.social (polícia levou embora cópia dos dados, posts e DMs da galera), mas desde já tem 2 pontos importantes pra lembrar, porque te afetam:

1️⃣ Pro usuário: usar Mastodon (ou qualquer serviço on-line sem E2EE) é confiar no admin da sua instância. Se ele quiser e for esforçado, ele pode ler tudo que você escreve e recebe, e todas as tuas mídias, inclusive os segredos e as fotinhos que você acha que são privadas. Admins de outras instâncias também podem ver o que passar por elas.

2️⃣ Pros admins: ter dado de usuário (ou cópia) em equipamento pessoal, em especial se for dentro da sua casa, é sempre má ideia, porque mistura e multiplica riscos. No caso da Kolectiva, foi a polícia que levou o computador embora (investigando o admin por outra coisa), e lá se foram os dados e a privacidade de todos os usuários da instância, porque ele os expôs a esse risco ao tê-los na sua casa.

Todos podemos fazer nossas escolhas, mas o melhor é fazer considerando os riscos.

O bug do milênio

O tempo passou e hoje tanta gente acredita que o "bug do milênio" era um exagero ou farsa, porque ~nada aconteceu.

Eu era programador nos anos 90 e lembro quanto tempo gastei, ali por 1994/1995, corrigindo ou adaptando sistemas e bases que representavam o ano em só 2 dígitos, pra eles não pirarem quando passasse de 99 pra 00.

No mundo todo, passamos uma década corrigindo o bug. Foi um sucesso, e não uma farsa.

Obrigado por ter vindo ao meu ted talk

Os dilemas dos profissionais de tecnologia

No comecinho da semana o Yuri (@duran@bolha.one) compartilhou um desabafo que ressoou comigo, sobre o dilema de quem trabalha em campos tecnológicos e hoje em dia não tem mais como saber tudo sobre tudo com que trabalha.

Na condição de 🦖 da área, respondi a ele e pedi ajuda a profissionais que tenho como referência: a @melissawm@bolha.us, o @canderson@mastodon.social e o @osantana@mastodon.social.

Todos responderam extensamente e a thread ficou riquíssima pra quem é das carreiras tech.

🐘: 110621603212961448

Como um vulcão na Indonésia nos deu a bicicleta e Frankenstein

🌋 Tudo está conectado: em 1816 um vulcão enorme (o Tambora) explodiu catastroficamente na Indonésia. Suas emissões causaram um "ano sem verão", anormalmente frio e chuvoso, na Europa e EUA.

🚲 Safras se perderam, a ração de cavalos ficou cara demais, e... Karl Drais inventou a bicicleta.

🧟 O clima escuro e chuvoso prejudicou as atividades de lazer no verão, Lord Byron propôs um concurso de contos de terror à turma que estava na sua casa de campo, e... Mary Shelley escreveu Frankenstein.

API do Mastodon: Dicas para aproveitar

O Yuri me pediu links pra documentação sobre a API do Mastodon, porque ele vai seguir meu exemplo e desenvolver um cliente do jeito dele.

E eu até queria ter uma lista maior, mas a verdade é que na prática eu só precisei de 2 documentos. São esses os links:

  1. Guidelines and best practices (notar que na barra lateral tem uma coleção de links de "API ENTITIES" e "API METHODS" também, e é ali que a mágica acontece)
  2. Documentação da Mastodon.py - excelente documentação de uma biblioteca robusta.

Claro que também fiz um monte de consultas salteadas via site de busca, e complementei tudo com muita experimentação usando curl e gron, como neste meu exemplo anterior.

Os limites da comunicação interespécies

🐈 o gato aqui de casa é muito expressivo e comunicativo, e nos seus 18 anos de vida desenvolveu uma linguagem pra pedir (ou comandar...) várias coisas que ele quer ao longo de sua rotina.

Mas ele nunca foi friorento, algo que só chegou agora, na maturidade - e ainda não conseguiu desenvolver uma forma de pedir "me agasalha", ele usa o mesmo pedido de "me alimenta", e todo dia eu tenho que fazer algumas adivinhações.

Exemplo de uso da API do Mastodon

O @josir@bolha.us me pediu um exemplo de uso da API do Mastodon pra acessar os dados de instâncias, e não me fiz de rogado.

O script abaixo funciona no Bash, e precisa ter o curl, o grep e o gron disponíveis:


#!/usr/bin/env bash
#
# exemplo-api.sh - busca dados sobre um conjunto de instâncias do Mastodon
#
# dependências: bash, curl, gron, grep
#
# Copyright (c) 2023,  Augusto Campos (http://augustocampos.net/).
# Licensed under the Apache License, Version 2.0.
#

inst='ursal.zone
conversafiada.net
colorid.es
bolha.one'

for i in $inst; do
	echo -e "
Buscando dados de $i"
	curl -s "https://$i/api/v2/instance" | 
		gron | 
		grep -E '(contact.account.display_name|description =|registrations)'
done

Claro que daria pra fazer em outras linguagens, sem gron, sem curl, etc. – exemplos são exemplos, afinal de contas. Bom proveito!

5 dicas de George Orwell para escrever melhor

Na data de hoje, mas em 2007, compartilhei no Efetividade as 5 dicas de George Orwell para escrever melhor:

⛔ Evite chavões e figuras de linguagem
📏 Escolha palavras curtas
🪚 Corte palavras supérfluas
🎬 Prefira a voz ativa
🤬 Substitua jargões e termos técnicos quando puder

O autor de 1984 e de A Revolução dos Bichos incluiu uma sexta dica, mais importante que as 5 acima: “Quebre qualquer destas regras antes de escrever alguma barbaridade”.

O post permanece no ar no Efetividade.