Есть ли способ конвертировать отформатированный контент обратно в Markdown?

РЕДАКТИРОВАНИЕ: ошибка в моём первоначальном сообщении. Я имел в виду поле cooked, а не поле raw (ИСПРАВЛЕНО).

Недавно я получил данные JSON с форума Discourse, где данные постов находятся в формате «cooked». Я wondered, есть ли способ конвертировать их обратно в Markdown? Я новичок в Discourse, искал, но не смог найти способ сделать это. Поскольку данные в формате cooked, по-видимому, используются для создания HTML, я предполагаю, что альтернативный путь — использовать функцию, преобразующую cooked в HTML, а затем конвертировать HTML в Markdown.

Буду очень благодарен за любую помощь.

Спасибо.

В Google есть множество вариантов, но моим первым выбором для таких задач обычно является pandoc https://stackoverflow.com/questions/16248986/how-to-convert-html-to-markdown-while-retaining-non-markdown-html-tags

Попробуйте это. Просто

У меня уже есть данные, я не могу их получить снова. Они были с форума, который был закрыт. Я пытаюсь очистить данные, чтобы их можно было восстановить.

Какой именно формат у «сырых» данных?

Markdown!

Если под «raw» вы имеете в виду поле с названием raw, то вы смотрите на исходный код Markdown, который мы храним. В качестве примера, этот — JSON-эндпоинт для вашего последнего сообщения.

Поле raw там содержит именно тот текст, который вы набрали в редакторе Markdown, и мы храним его в неизменном виде, чтобы он был настолько «чистым», насколько это возможно.

Если же вы в общем смысле имеете в виду «сырой HTML», полученный путём парсинга без использования JSON-эндпоинтов, то вы можете преобразовать этот HTML в Markdown внешними средствами с помощью pandoc, как было предложено выше, или любого другого программного обеспечения.

Приношу свои извинения, я допустил ошибку в первом посте (теперь исправлено). Я имел в виду обработанные данные, а не сырые (день был долгим…).

В каком формате находятся обработанные данные и есть ли способ конвертировать их в Markdown или HTML? Спасибо.

Я допустил ошибку в своём первом посте, но уже исправил. Извините.

А, теперь всё становится на свои места. Поле cooked — это HTML, сгенерированный из Markdown.

Вы можете просто передать его через pandoc, чтобы получить Markdown; полная идентичность соответствующему полю raw не гарантируется, так как некоторые нестандартные теги Markdown, такие как [quote], преобразуются в определённые HTML-шаблоны. Однако, если вам нужно просто получить содержимое в формате Markdown, pandoc должен справиться вполне хорошо.

Большое спасибо. Я сразу займусь этим.

Я предполагаю, что данные поста (контент) действительно хранятся в базе данных в формате Markdown?

Оба, вот пример:

 #<Post:0x00007fbb78416f50
 id: 2203,
 user_id: -4,
 topic_id: 590,
 post_number: 6,
 raw: "@merefield, похоже, @eloy упомянул, что его любимый цвет — красный!",
 cooked:
  "<p><a class=\"mention\" href=\"/u/merefield\">@merefield</a>, похоже, <a class=\"mention\" href=\"/u/eloy\">@eloy</a> упомянул, что его любимый цвет — красный!</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,