MartinC
(Martin Currie)
2024 年 3 月 29 日午後 1:19
1
flarum.amybo.org から discourse forum.amybo.org に移行できましたが、フォーラムはフォーマットの問題だらけになっています。たとえば、次のようになります。
@\"Gerrit\"#p174 Rabaey's のような水ベースの液体というアイデアは気に入っていますので、[Nutrisorb Trace Minerals](https://www.biocare.co.uk/nutrisorbr-liquid-trace-minerals-15ml) の成分を確認しました。
1. 精製水、
2. ホウ砂、
3. 保存料(クエン酸)、
次のようになります。
<r>
<p>
<POSTMENTION discussionid="25" displayname="Gerrit" id="174" number="8">@\"Gerrit\"#p174</POSTMENTION> Rabaey's のような水ベースの液体というアイデアは気に入っていますので、<URL url="https://www.biocare.co.uk/nutrisorbr-liquid-trace-minerals-15ml"><s>[</s>Nutrisorb Trace Minerals](https://www.biocare.co.uk/nutrisorbr-liquid-trace-minerals-15ml)<s></s></URL> の成分を確認しました。
</p>
<LIST type="decimal">
<LI><s>1. </s>精製水、</LI>
<LI><s>2. </s>ホウ砂、</LI>
<LI><s>3. </s>保存料(クエン酸)、</LI>
</LIST>
これらの問題を解決するためのお勧めの方法はありますか?
フォーラム全体で自動化できれば(各投稿を編集済みとして表示することなく)、それが最も素晴らしいのですが、もしそれができない場合は、各投稿を手動で HTML タグを削除して Markdown に戻すよりも、投稿ごとに適用できる半自動的な修正の方が良いでしょう。
pfaffman
(Jay Pfaffman)
2024 年 3 月 29 日午後 2:30
2
インポート時に修正すべきでした。移行作業を多く行う者として、フォーラムがこのようなひどいフォーマットで立ち上げられることは、私の最大の懸念事項の一つです。インポートスクリプトを修正するのは簡単だったでしょうし、立ち上げ後に後から修正するのははるかに困難です。当時は1〜2時間で済んだかもしれませんが、今ではその2〜5倍の作業量になります。
はい、ライブフォーラムのものをクリーンアップするスクリプトを作成できます。それは(恐ろしいことに)編集を維持しない(編集がなく、通知もない)、または編集を実行して、バンプ/通知をしないように指示します。以前に実行したことがあると確信しています。以下のようなことを行うでしょう。
fixes = Post.where("raw like '%something broken%'")
fixes.each do |p|
new_raw = p.raw.gsub!(some stuff)
PostRevisor.new(p).revise!({raw: new_raw, edit_reason: 'post fixer!'}, {bypass_bump: true})
end
raw には、そのHTMLがすべて含まれていますか?
「いいね!」 2
posts:remap rake コマンドを使用できると思います(Replace a string in all posts を参照してください)。そのコマンドで編集する必要はありません。
「いいね!」 1
pfaffman
(Jay Pfaffman)
2024 年 3 月 29 日午後 2:42
4
そのrakeタスクは単純な置換には適していますが、すぐに扱いにくくなります。
どういう意味ですか?複雑な正規表現を管理したい場合、それは実用的ではないということですか?
pfaffman
(Jay Pfaffman)
2024 年 3 月 29 日午後 2:49
6
シェルでタスクを呼び出しているため、Bash、Ruby、または正規表現のエスケープのいずれであるかを迅速に判断することは困難または不可能です。また、修正は単純な置換では済まないようです。
「いいね!」 2
MartinC
(Martin Currie)
2024 年 3 月 29 日午後 2:55
7
Discourseは初めてですが、生のデータにアクセスする方法を見つけました。はい、HTMLはすべて含まれています。
https://forum.amybo.org/raw/56/9
pfaffman
(Jay Pfaffman)
2024 年 3 月 29 日午後 4:00
8
既存の flarum_import.rb スクリプトを使用しましたか? Flarum の p.content フィールド(インポート スクリプトの raw に入るもの)に HTML が含まれているとは想像しがたいです。Flarum は Markdown を使用していると確信しているので、なぜ raw に HTML が含まれているのかわかりません。あるいは、スクリプトが単にそれほど壊れているだけかもしれません。
しかし、取り消し線は HTML に含まれています。おそらく CSS で修正できるでしょう。
\u003cPOSTMENTION\u003e の修正は、Discourse には引用はありますがメンションはないため、もう少しトリッキーです。簡単な解決策は、それらを単純な @${displayname} に変更することです(インポート前にユーザー名が同じであることを願うか、user_custom_fields でインポート後のユーザー名を見つけるために検索します)。別の方法としては、@mention は [ここ](/t/-/\u003cdiscourse ID for topic 25\u003e/\u003c8\u003e) で言及しました のようなリンクを含めることもできます。
クレイジーな解決策は、Flarum データベースから Markdown をプルし、raw フィールドを更新してそれを含めるスクリプトを作成することです。メンションや POSTMENTION については、まだ少しクリーンアップが必要ですが、多くの問題を解決できるでしょう。
別のアイデアは、サイトをフリーズし、インポートされたすべてのデータを一括削除し、インポート スクリプトを修正して再度実行することです。
しかし、移動してから新しい投稿はあまりないので、それらを何らかの方法で保存し、空のデータベースで新しいインポートを実行してから、それらを再度追加できるかもしれません。新しいユーザーの扱いはもう少し難しくなるでしょう。
予算がある場合は、私に連絡するか、Marketplace に投稿してください。
「いいね!」 2
MartinC
(Martin Currie)
2024 年 3 月 29 日午後 4:36
9
ジェイさん、ありがとうございます。移行は自分で行ったわけではないので、どのスクリプトが使用されたかはわかりません。担当したメンバーはインフルエンザでダウンしていますが、復帰したらここに記載されている素晴らしいアドバイスを伝えておきます。
「いいね!」 1