phpBB3インポートスクリプトの機能強化リクエスト

phpBBでは、アップロードされた添付ファイルにコメントを追加できます。

これらは投稿内の画像のすぐ下に表示されます。

phpBB3インポートスクリプトがこれらのコメントを取得し、それらが関連付けられている画像に代替テキスト(alt text)として割り当てられると便利です。これにより、Discourseで画像をホバーしたときに表示されるようになります。

Danより

「いいね!」 2

ああ!Ruby on Railsについては何も知らないので、phpBBインポートスクリプトの機能強化をリクエストしたいのですが、こちらに記載されているように、追加の機能強化をリクエストしたいと思います。スクリプトが投稿の日付/時刻エラーを報告するときに、デバッグ目的でphpBBのpost_idも報告してくれると便利です。

よろしくお願いします
Dan

「いいね!」 1

ご要望の方法がすぐには明確ではありませんが、数分間調査したところ、実現可能と思われる満足のいく解決策はありません。

キャプションのためのアップロードレコードの場所がなく、アップロードから逆引きする明確な方法も見当たりません。可能性としては、コメントをファイル名として挿入し、後で何らかの方法でキャプションとして引き出すことが考えられます。ええ。そのキャプションをファイル名としてエンコードするのが最善の方法でしょう。そうすれば、マウスオーバーなどで表示されるようになります。ご希望であれば、キャプションを含むファイル名を取得し、それをHTMLなどに挿入するなどの別の処理を行うことも可能です。

「いいね!」 1

正直に言うと、RoRについてもPostgreSQLについても何も知りません。しかし、画像に代替テキストをマークアップすると、その画像に関連付けられてPostgreSQLデータベースに保存されます。インポートスクリプトの何がその割り当てを防いでいるのでしょうか?確かに、コメントはMySQLでアクセス可能です。

「いいね!」 1

難しそうですが、こちらのメソッドを変更することで成功するかもしれません。

こちらではなく、

text.gsub!(attachment_regexp) do
        index = $1.to_i
        real_filename = $2
        unreferenced_attachments[index] = nil
        attachments.fetch(index, real_filename)
end

このようなものをご希望でしょう。

text.gsub!(attachment_regexp) do
        index = $1.to_i
        description = $2.strip
        unreferenced_attachments[index] = nil

        url = attachments.fetch(index, description)

        "![#{description}](#{url})"
end

これは単に変更が必要な場所を示すための未テストの例です。間違っている可能性もあります。

もし明日時間があれば、実際の解決策とともにPR(プルリクエスト)を開くかもしれません。:grinning_face_with_smiling_eyes:

「いいね!」 5

ありがとうございます!MIMEタイプに基づいてアサインメントを限定したいですか?(.mp4にphpBBコメントを添付できませんでしたが、.gifには添付でき、ホバー時に表示されました。)

「いいね!」 1

それは役に立つかもしれませんが、私はコメントを投稿の生データに直接追加する新しい方法を考案しました。すべてのファイルタイプを処理するために、その方が安全だと考えています。

あなたのデータセットでこれらの変更をテストしていただけますか?ローカルでテストしましたが、PRに進む前にあなたのフィードバックをいただけると幸いです。

「いいね!」 3

喜んでテストしますが… テスト環境をパージしてやり直す必要がありますか? Claude.ai はインストール手順を案内してくれましたが、私は Docker の初心者であり、それでも途中で多くのエラーが発生しました。

簡単にテストできる方法を教えていただければ、試してみるつもりです。

「いいね!」 1

素晴らしい仕事です!コードを調べましたが、それを見つけることができませんでした。

はい。データベースを消去して、再度実行する必要があります。インポーターはすでにインポートされたデータをスキップするため、試すにはすべてを再インポートする必要があります。機能しそうですが!

OK - ええと、添付ファイルはまだそのまま残っており、MySQLデータベースもそのままです。実行には数時間かかりましたが、Claudeに手順を追ってもらい、また報告します。

はい、お手伝いできます。インストールの変更は必要ありません。簡単な方法は次のとおりです。

  1. サイトのバックアップを取得し、安全な場所に保存します。これにより、作業内容を失うことから保護されます。
  2. サイトをリセットします。
# サイトのコンテナに入る
cd /var/discourse
./launcher enter <your-container-name>

# データベースをリセット
bundle exec rake db:drop
bundle exec rake db:create
bundle exec rake db:migrate
bundle exec rake db:seed

# コンテナから出る
exit

# すべてが所定の位置にあることを確認するためにコンテナを再構築する
./launcher rebuild <your-container-name>
  1. 新しいコードでファイルを変更します。cli テキストエディタを使用するか、お気に入りのテキストエディタで ssh を使用してコンテナを開くことができます。
  2. settings.yml を設定し、インポーターを再度実行します。

以前の状態に戻すには、最初に行ったバックアップを復元するだけです。

./launcher enter <your-container-name>
discourse enable restore
discourse restore <your-backup-filename>
「いいね!」 4

ああ、そうですね!ついでに、日付/時刻の問題が報告されたときに、処理されているphpBBのpost_idを報告するようにスクリプトを修正するのは簡単でしょうか?

「いいね!」 2

実に簡単そうですね!ロージー :dog: が散歩に連れて行ってくれたら、すぐに試してみます。

「いいね!」 2

既存の gsub を使用してここに追加しています。

しかし、見てくれてありがとう。これにより、phpbb にもある参照されていない添付ファイルについて考慮していなかったことに気づきました。

「いいね!」 2

OK、バックアップが進行中です。しばらく時間がかかると思います…

編集する必要がありますか?git リポジトリ内のファイルのスクリプトパスに docker cp を実行するだけではだめですか?

「いいね!」 1

それも機能します。あるいは、container.ymlを設定して私のリポジトリとブランチを使用し、再構築することもできます。

「いいね!」 2

うまくいきませんでした。

reset_log.txt (16.6 KB)

「いいね!」 1

discourse ユーザーとしてコマンドを実行する必要があると思われます。

su discourse

または

su discourse -c “bundle exec rake db:drop”
「いいね!」 1

おっと。初心者の間違いで、スレッドを閉じるつもりはありませんでした。ただ、それが特定の問題を解決したようだということを認めたかっただけです。

「そのようだ」DB:dropが完了するのを待っています。前進…

「いいね!」 1

まだうまくいきません。

reset_log2.txt (1.7 KB)