Cooked 콘텐츠를 다시 Markdown으로 변환할 수 있는 방법이 있을까요?

수정: 원본 게시물에 오류가 있었습니다. raw 필드가 아니라 cooked 필드를 언급하고자 했습니다. (수정됨)

최근 Discourse 포럼에서 JSON 데이터를 가져왔는데, 게시물 데이터가 “cooked” 형태로 되어 있습니다. 이를 다시 Markdown으로 변환할 수 있는 방법이 있는지 궁금합니다. 저는 Discourse를 처음 사용해보고 있으며, 검색해 보았지만 방법을 찾을 수 없었습니다. cooked 데이터가 HTML 생성에 사용되는 것으로 보이므로, cooked를 HTML로 변환하는 함수를 사용해서 HTML을 만든 후, 이를 다시 Markdown으로 변환하는 것이 대안이 될 것 같다고 추측하고 있습니다.

도움을 주시면 감사하겠습니다.

감사합니다.

구글에서 많은 옵션을 찾을 수 있지만, 이런 작업에는 보통 pandoc를 주로 사용합니다. https://stackoverflow.com/questions/16248986/how-to-convert-html-to-markdown-while-retaining-non-markdown-html-tags

이것을 시도해 보세요. 간단합니다

이미 데이터를 가지고 있어서 다시 가져올 수 없습니다. 해당 데이터는 폐쇄된 포럼에서 가져온 것이며, 데이터를 정리하여 부활시키고자 합니다.

“원시(raw)” 데이터의 정확한 형식은 무엇인가요?

Markdown!

여기서 'raw’가 raw라는 필드를 의미한다면, 그것은 우리가 저장하는 실제 Markdown 소스입니다. 예를 들어, 이것은 방금 작성한 마지막 게시물의 JSON 엔드포인트입니다.

그곳의 raw 필드는 Markdown 편집기에서 작성한 실제 텍스트이며, 우리는 이를 더 이상 순수하게 변형되지 않도록 그대로 저장합니다.

대신, 일반적으로 JSON 엔드포인트를 사용하지 않고 스크래핑한 "생 HTML"을 의미한다면, 위에서 제안한 대로 pandoc 또는 기타 소프트웨어를 사용하여 외부에서 해당 HTML을 Markdown으로 변환할 수 있습니다.

죄송합니다. 첫 번째 게시글에 실수가 있었습니다(현재는 수정했습니다). 생(raw) 데이터가 아니라 처리(cooked) 데이터를 언급하려는 것이었습니다. (오늘 하루가 길었네요…).

처리된 데이터는 어떤 형식이며, 이를 Markdown이나 HTML로 변환할 수 있는 방법이 있을까요? 감사합니다.

첫 번째 게시물에 실수가 있었는데, 이제 수정했습니다. 죄송합니다.

아, 이제 더 명확해졌습니다. cooked 필드는 마크다운에서 렌더링된 HTML입니다.

이 필드를 pandoc으로 처리하면 마크다운으로 변환할 수 있습니다. [quote]와 같은 비표준 마크다운 태그가 특정 HTML 패턴으로 렌더링되므로, 해당하는 raw 필드와 완전히 동일한 형태를 얻기에는 한계가 있습니다. 하지만 단순히 내용을 마크다운으로만 필요로 한다면 pandoc이 충분히 잘 동작할 것입니다.

정말 감사합니다. 지금 바로 진행하겠습니다.

게시물 데이터(콘텐츠)가 실제로 데이터베이스에 마크다운 형식으로 저장되는 것 맞나요?

둘 다입니다. 예를 들어:

 #<Post:0x00007fbb78416f50
 id: 2203,
 user_id: -4,
 topic_id: 590,
 post_number: 6,
 raw: "@merefield, it looks like @eloy has mentioned that their favourite colour is red!",
 cooked:
  "<p><a class=\"mention\" href=\"/u/merefield\">@merefield</a>, it looks like <a class=\"mention\" href=\"/u/eloy\">@eloy</a> has mentioned that their favourite colour is red!</p>",
 created_at: Sun, 18 Aug 2024 11:15:32.487912000 UTC +00:00,
 updated_at: Sun, 18 Aug 2024 11:15:32.487912000 UTC +00:00,