U4EA
2024 年 8 月 19 日午後 2:57
1
編集:元の投稿に間違いがありました。raw フィールドではなく、cooked フィールドを参照するつもりでした(修正済み)。
最近、DiscourseフォーラムからJSONデータを取得しました。そこでは、投稿データは「cooked」形式になっています。これをMarkdownに戻す方法はありますか?Discourseは初めてで、方法が見つかりませんでした。CookedデータはHTMLを作成するために使用されているように見えるので、別の方法として、CookedをHTMLに変換する関数を使用して、HTMLをMarkdownに変換することが考えられます。
何かお手伝いいただければ幸いです。
よろしくお願いします。
「いいね!」 1
wal
2024 年 8 月 19 日午後 3:00
2
「いいね!」 1
U4EA
2024 年 8 月 19 日午後 3:06
4
データはすでに持っています。再度取得することはできません。フォーラムが閉鎖された際に取得したもので、データをクリーンアップして復旧させようとしています。
「生の」データは具体的にどのような形式ですか?
leonardo
(Leonardo Mosquera)
2024 年 8 月 19 日午後 3:14
5
Markdown!
「raw」が raw という名前のフィールドを意味する場合、それは実際に保存されている Markdown ソースを見ていることになります。例として、こちら は、先ほどのあなたの投稿の JSON エンドポイントです。
そこにある raw フィールドは、Markdown エディタで作成した実際のテキストであり、そのまま保存されるため、これ以上純粋なものはありません。
代わりに、「生の HTML」を JSON エンドポイントを使用せずにスクレイピングされたものとして一般的に意味する場合、pandoc を使用してその HTML を Markdown に外部で変換できます。これは上記で提案された方法ですが、他のソフトウェアでも可能です。
「いいね!」 3
U4EA
2024 年 8 月 19 日午後 3:20
6
申し訳ありませんが、最初の投稿で間違いを犯しました(すでに修正済みです)。生のデータではなく、調理済みのデータに言及したかったのです(今日は長い一日でした…)。
調理済みのデータはどのような形式ですか?また、MarkdownまたはHTMLに変換する方法はありますか?よろしくお願いします。
U4EA
2024 年 8 月 19 日午後 3:20
7
最初の投稿に間違いがありました。修正済みです。申し訳ありません。
「いいね!」 1
leonardo
(Leonardo Mosquera)
2024 年 8 月 19 日午後 3:28
8
なるほど、より分かりやすくなりました。cooked フィールドは Markdown からレンダリングされた HTML です。
それを pandoc で処理すれば Markdown を取得できます。raw に完全に対応するわけではありません。[quote] のような非標準の Markdown タグが特定の HTML パターンにレンダリングされるためですが、単に Markdown としてコンテンツが必要なだけであれば、pandoc で十分でしょう。
「いいね!」 3
U4EA
2024 年 8 月 19 日午後 4:19
9
どうもありがとうございます。すぐに取り掛かります。
投稿データ(コンテンツ)は、実際にはMarkdownとしてDBに保存されていると仮定してよろしいでしょうか?
両方、ここに例を示します。
#<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,
「いいね!」 2