GitHub에 Discourse 포럼을 아카이브하는 방법이 필요했는데, 기존에 사용 가능한 스크립트들이 대부분 오래되었거나 깨져 있는 것을 확인했습니다. 그래서 제 요구 사항을 충족하는 간단한 스크립트를 직접 만들기로 했습니다. 완벽하지는 않고 여전히 몇 가지 사소한 문제가 있지만, 이 프로젝트에 더 많은 시간을 할애할 여유가 없어서 현재 제 필요를 충족시키기에는 충분합니다.
https://github.com/c0mmando/discourse-to-markdown-archiver
- 새 게시물을 JSON으로 아카이브합니다.
- 주제를 Markdown 파일로 렌더링합니다.
- 여러 Discourse 사이트를 동시에 지원합니다(한 번에 하나씩 처리).
- 사이트별로 메타데이터(마지막 동기화 날짜 및 아카이브된 게시물 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