Solicitação de aprimoramento para o script de importação do phpBB3

No phpBB, é possível adicionar comentários a anexos enviados:

Estes aparecem então sob a imagem na postagem:

Seria útil se o script de importação do phpBB3 pudesse pegar esses comentários e atribuí-los como texto alternativo (alt text) à imagem com a qual estão pareados, o que apareceria ao passar o mouse sobre a imagem no Discourse.

Obrigado
Dan

1 curtida

Ah! Como não sei nada sobre Ruby on Rails - e estou solicitando uma melhoria no script de importação do phpBB - gostaria de solicitar uma melhoria adicional conforme descrito aqui. Seria útil se, quando o script relatar um erro de data/hora com uma postagem, ele também relatasse o post_id do phpBB para fins de depuração.

Obrigado
Dan

1 curtida

Não está imediatamente claro como proceder com o que você pede, mas passei alguns minutos e não há uma solução muito satisfatória que pareça viável.

Não há lugar no registro de upload para a legenda, e não vejo uma maneira óbvia de voltar do Upload… uma possibilidade seria colocar o comentário como nome do arquivo e depois, de alguma forma, extraí-lo como legenda. Sim. Essa seria a melhor coisa que você poderia fazer, codificar essa legenda como o nome do arquivo, o que faria com que ela aparecesse ao passar o mouse e coisas assim. Se você quisesse, poderia fazer outra coisa, como obter nomes de arquivos que incluam uma legenda e, em seguida, inseri-la no html de alguma forma.

1 curtida

Admito que não sei nada sobre RoR, ou mesmo sobre postgres. Mas, quando você marca uma imagem com texto alternativo, ele é armazenado no banco de dados postgres em associação com essa imagem. O que há no script de importação que impede essa atribuição? Certamente, o comentário é acessível no MySQL.

1 curtida

Parece complicado, mas você pode ter sucesso modificando este método aqui:

Em vez disto:

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

Você gostaria de algo como isto:

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

        url = attachments.fetch(index, description)

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

Este é um exemplo não testado apenas para mostrar onde precisa ser modificado. Eu posso estar enganado.

Se eu tiver tempo amanhã, posso abrir um PR com uma solução real. :grinning_face_with_smiling_eyes:

5 curtidas

Obrigado! Você deseja qualificar a tarefa com base no tipo MIME? (Eu não consegui anexar um comentário phpBB a um .mp4; embora eu tenha conseguido a um .gif, ele não apareceu ao passar o mouse.)

1 curtida

Isso poderia ser útil, mas trabalhei em uma nova maneira de adicionar o comentário diretamente ao raw da postagem. Acredito que seja mais seguro dessa forma para lidar com todos os tipos de arquivos.

Você conseguiria testar essas alterações com seu conjunto de dados? Eu testei localmente, mas adoraria seu feedback antes de prosseguir com um Pull Request (PR).

3 curtidas

Eu ficaria feliz em testar, mas… Tenho que limpar meu ambiente de teste e repetir? O Claude.ai me guiou pelo processo de instalação, sou um novato em docker - e mesmo assim, houve muitos erros pelo caminho.

Se você puder delinear uma maneira de eu testar facilmente, ficarei feliz em tentar.

1 curtida

Ótimo trabalho! Eu dei uma olhada no código e não encontrei isso.

Sim. Você precisará limpar o banco de dados e executar novamente. O importador pula dados já importados, então você precisará reimportar tudo para testar. Parece que deve funcionar, no entanto!

OK - bem, os anexos ainda estão no lugar, assim como o banco de dados MySQL. Levou várias horas para rodar, mas farei o Claude me guiar e reportarei de volta.

Claro, posso ajudar. Não há necessidade de alterar sua instalação. O jeito fácil:

  1. Faça um backup do seu site e guarde-o em local seguro. Isso o protegerá de perder seu trabalho.
  2. Redefina seu site:
# Entre no contêiner do site
cd /var/discourse
./launcher enter <seu-nome-do-container>

# Redefinir banco de dados
bundle exec rake db:drop
bundle exec rake db:create
bundle exec rake db:migrate
bundle exec rake db:seed

# Saia do contêiner
exit

# Reconstrua o contêiner apenas para garantir que tudo esteja no lugar
./launcher rebuild <seu-nome-do-container>
  1. Modifique os arquivos com o novo código. Você pode usar um editor de texto cli ou abrir seu contêiner via ssh no seu editor de texto preferido.
  2. Configure o settings.yml e execute o importador novamente.

Para retornar ao seu estado anterior, basta restaurar o backup que você fez no início:

./launcher enter <seu-nome-do-container>
discourse enable restore
discourse restore <nome-do-seu-backup>
4 curtidas

Ah sim! Já que estamos nisso, seria fácil o suficiente modificar o script para relatar o post_id do phpBB que está sendo processado quando o problema de data/hora é relatado?

2 curtidas

Parece simples o suficiente! Vou tentar assim que a Rosie :dog: me levar para passear.

2 curtidas

Estou adicionando aqui usando o gsub existente:

Mas obrigado por dar uma olhada, isso me fez perceber que eu não considerei os anexos não referenciados que o phpBB também tem:

2 curtidas

OK, o backup está em andamento. Espero que isso demore um pouco…

Eu preciso editar? Não posso simplesmente fazer um docker cp para os caminhos dos scripts dos arquivos no seu repositório git?

1 curtida

Isso também funciona. Alternativamente, você pode configurar o container.yml para usar meu repositório e branch e reconstruir.

1 curtida

Bem, isso não correu bem.

reset_log.txt (16.6 KB)

1 curtida

Acho que você pode precisar executar os comandos como o usuário discourse:

su discourse

ou

su discourse -c “bundle exec rake db:drop”

Ops. Erro de novato, não quis fechar o tópico - apenas para reconhecer, isso parece ter resolvido aquele problema específico.

“Parece que sim.” Ainda esperando o db:drop terminar. Em frente…

1 curtida

Ainda sem sucesso.

reset_log2.txt (1.7 KB)