Sobre o Expansor de Threads Federadas
O Expansor é um cliente web para o Mastodon, especializado em uma única ação: carregar uma thread de posts e exibi-la como um documento unificado, contendo a íntegra dos textos dos posts da thread, em sequência, sem separadores.
Este serviço foi disponibilizado para uso próprio, mas está à disposição para uso dos demais interessados. Basta acessar o Expansor, preencher a URL de uma thread do Mastodon, pressionar o botão , e a thread será carregada e exibida.
Por uma questão de privacidade (saiba mais), são incluídos no documento apenas os posts cujo autor for o mesmo do post original - ou seja, respostas de outros usuários na mesma thread são intencionalmente desconsideradas.
O texto é formatado com um título (reproduzindo a primeira frase do primeiro post da thread) e um rodapé contendo a identificação do autor da thread, suas preferências de privacidade (quando houver) e o link do post original.
Eu uso o Expansor principalmente para formatar minhas próprias threads de modo a poder copiá-las facilmente para o texto de um post de blog, ou uma nota no Obsidian.
Embora o Expansor use a API do Mastodon, outros serviços federados podem ser compatíveis (testei com o Sharkey, com sucesso).
Autoria e licença
O autor dos posts de cada thread expandida é indicado logo abaixo do texto exibido de maneira automatizada pelo Expansor. Esse autor indicado retém exclusiva responsabilidade, bem como os seus direitos, pelo material.
Este serviço é disponibilizado por mim (Augusto Campos - @augusto@social.br-linux.org), e inclui um pouco de código de minha autoria, e bastante código do Patrick M. Curry (@patrickmcurry@mastodon.social), que gentilmente me concedeu autorização para publicar esta versão modificada por mim do seu template “Embed a thread”.
O Patrick pretende adicionar uma licença formal ao código, mas não definiu prazo para isso.
As minhas contribuições estão listadas no próprio script, adotarão futuramente a mesma licença que o Patrick vier a escolher, e em resumo são:
- Privacidade - Passar a suportar as preferências de privacidade e identidade previstas no protocolo do Mastodon (opções discoverable, locked, noindex e bot), e listá-las no rodapé (quando as opções de privacidade permitem que o post seja lido e exibido)
- Acessibilidade - Redefinir a formatação e estrutura do documento gerado, facilitando seu uso por leitores de tela, modos de alta legibilidade e recursos de conversão.
- Conteúdo - Criar o cabeçalho e gerar um título a partir da primeira frase.
- Autoria - Criar um rodapé para conter a identificação do autor da thread, suas preferências de privacidade, e o link para o original.
- Usabilidade - Criar o formulário para permitir o preenchimento de uma URL, facilitando o uso do serviço.
- Documentação - Criar esta documentação.
O script é totalmente autocontido e está presente no cabeçalho do arquivo index.html.
Privacidade
Este serviço roda inteiramente no navegador do usuário, sem rotinas remotas nem armazenamento de dados em servidor externo. O navegador acessa diretamente o servidor Mastodon (ou compatível), obtém a thread, opera com ela em memória volátil, exibe os resultados na tela e, ao fechar a página, descarta todos os dados obtidos.
Eu tinha a intenção original de trabalhar mais no lado da privacidade desse script, mas em uma análise mais aprofundada logo verifiquei que o script original já dá bastante atenção à privacidade, exibindo apenas toots que são visíveis publicamente na web aberta (que são buscados usando apenas as chamadas de API anônimas mais básicas, renunciando a qualquer privilégio adicional que a conta do usuário pudesse ter, caso o script usasse chamadas de API autenticadas), e ignorando qualquer resposta no thread se seu autor não for a mesma conta que iniciou o thread.
Nas minhas adições ao script consta o recurso userFlags, que exibe – ao lado do nome do endereço da conta do autor, no rodapé – uma descrição textual de quatro sinalizadores de preferências de privacidade e identidade da conta, se presentes: discoverable, locked, noindex e bot.
Também adicionei uma nota, visível enquanto o script está se conectando ao servidor para solicitar a thread, informando que o conteúdo está carregando, e só será exibido se o servidor e as configurações de privacidade do usuário permitirem isso.
Talvez o aspecto mais importante relacionado à privacidade deste script seja que ele é um cliente Mastodon literal (como, por exemplo, o Phanpy ou o Elk, embora com muito menos recursos), e não um web scraper, um bot online ou um arquivador. Isso significa que ele só consegue exibir o conteúdo que estiver ativo durante sua execução – ele não armazena em nenhum outro lugar uma cópia, nem faz cache, das threads que exibe.
Assim, em uma nova visita, se o tópico tiver sido excluído, ou tornado privado/restrito, ou atualizado de alguma forma, o script refletirá esse novo status e conteúdo, conforme fornecido pela API do servidor – que é quem impõe todas as proteções de privacidade fornecidas pelo protocolo e pelas preferências do autor do thread.
Ou seja: ajustes de privacidade que o autor dos toots inclua originalmente ou venha a incluir posteriormente (incluindo remover os posts!) se refletem automaticamente nas eventuais tentativas de lê-los usando o script.
Acesso direto pela URL
Caso você queira (e saiba como) incluir o Expansor em uma automação sua, ou em um bookmarklet, o serviço pode ser acessado diretamente por meio de um endereço contendo a URL da thread a ser expandida.
Por exemplo, para expandir a minha thread sobre como organizar festas que acolhem os autistas – que está em https://social.br-linux.org/@augustocc/113704287818891733 – a url a ser acessada será:
https://expansor.online/?#url=https://social.br-linux.org/@augustocc/113704287818891733
(e você pode substituir a parte que vem depois do sinal de “=” pela url de qualquer outra thread válida.)
Contato
Para falar sobre este serviço, você pode entrar em contato diretamente comigo on-line, em @augusto@social.br-linux.org.
Caso deseje contribuir código, prefiro em formato de um patch que eu possa aplicar diretamente à versão publicada, e que venha acompanhado de descrição da funcionalidade e do motivo, para que possa ser adequadamente analisado.
E caso deseje entrar em contato com o Patrick, autor do template em que me baseei (e que forma a maior parte do código deste serviço), encontre-o em @patrickmcurry@mastodon.social.
© 2022- Patrick M. Curry.
© 2024- Augusto C. Campos.