Precisei de um método para arquivar meu fórum Discourse no GitHub, mas descobri que muitos dos scripts disponíveis estavam desatualizados ou quebrados. Então, decidi criar alguns scripts simples que atendem aos meus requisitos. Embora não sejam perfeitos e ainda tenham alguns problemas menores, eles atendem às minhas necessidades atuais, já que não tenho muito mais tempo para dedicar a este projeto.
https://github.com/c0mmando/discourse-to-markdown-archiver
- Arquiva novas postagens como JSON.
- Renderiza tópicos em arquivos Markdown.
- Suporte para vários sites Discourse simultaneamente (um site por vez).
- Rastreamento de metadados separado por site (data da última sincronização e IDs de postagens arquivadas).
- Renderização concorrente de tópicos usando um pool de threads para melhor desempenho.
- Backoff exponencial para requisições HTTP para lidar com limites de taxa ou erros transitórios.
https://github.com/c0mmando/discourse-to-github-archiver
- Arquivar Postagens: Salva cada postagem do Discourse em um arquivo JSON, organizado por data de criação.
- Renderização Concorrente: Renderiza tópicos concorrentemente, convertendo postagens de HTML para Markdown.
- Download de Imagens: Processa HTML para baixar imagens e reescreve URLs de imagens para caminhos relativos.
- Atualização de Metadados: Mantém o controle das postagens arquivadas para evitar duplicatas.
- Atualizações Incrementais do README: Atualiza um
README.mdcom um índice para facilitar a navegação.
Aqui está um exemplo de fórum arquivado no Github:
https[://]github[.]com/c0mmando/forum.hackliberty.org