GitHub に Discourse フォーラムをアーカイブする方法が必要でしたが、利用可能なスクリプトの多くが古いか壊れていることがわかりました。そのため、私の要件を満たす簡単なスクリプトを作成することにしました。完璧ではなく、まだいくつかの軽微な問題がありますが、このプロジェクトにそれ以上時間を費やす余裕がないため、現在のニーズには役立ちます。
https://github.com/c0mmando/discourse-to-markdown-archiver
- 新しい投稿を JSON としてアーカイブします。
- トピックを Markdown ファイルにレンダリングします。
- 複数の Discourse サイトを同時にサポートします (一度に 1 サイト)。
- サイトごとに個別のメタデータ追跡 (最後の同期日時とアーカイブされた投稿 ID)。
- パフォーマンス向上のためにスレッドプールを使用したトピックの同時レンダリング。
- レート制限や一時的なエラーを処理するための HTTP リクエストの指数関数的バックオフ。
https://github.com/c0mmando/discourse-to-github-archiver
- 投稿のアーカイブ: 各 Discourse 投稿を JSON ファイルに保存し、作成日時で整理します。
- 同時レンダリング: トピックを同時にレンダリングし、投稿を HTML から Markdown に変換します。
- 画像のダウンロード: HTML を処理して画像をダウンロードし、画像 URL を相対パスに書き換えます。
- メタデータの更新: アーカイブされた投稿を追跡して重複を回避します。
- README の段階的な更新: ナビゲーションを容易にするための目次を含む
README.mdを更新します。
GitHub でアーカイブされたフォーラムの例を次に示します:
https[://]github[.]com/c0mmando/forum.hackliberty.org