Solicitud de mejora para el script de importación de phpBB3

En phpBB, es posible añadir comentarios a los archivos adjuntos subidos:

Estos aparecen entonces debajo de la imagen en la publicación:

Sería útil que el script de importación de phpBB3 pudiera tomar estos comentarios y asignarlos como texto alternativo a la imagen con la que están emparejados, lo que aparecería al pasar el ratón por encima de la imagen en Discourse.

Gracias
Dan

2 Me gusta

¡Ah! Como no sé nada sobre Ruby on Rails, y estoy solicitando una mejora para el script de importación de phpBB, me gustaría solicitar una mejora adicional como se describe aquí. Sería útil que, cuando el script informe un error de fecha/hora con una publicación, también informe el post_id de phpBB para fines de depuración.

Gracias
Dan

1 me gusta

No está claro de inmediato cómo proceder con lo que pides, pero pasé unos minutos y no hay una solución muy satisfactoria que parezca factible.

No hay ningún lugar en el registro de carga para el pie de foto, y no veo una forma obvia de ir hacia atrás desde la carga… una posibilidad podría ser poner el comentario como nombre de archivo y luego de alguna manera extraerlo más tarde como pie de foto. Sí. Eso es lo mejor que podrías hacer, codificar ese pie de foto como el nombre de archivo, lo que haría que apareciera al pasar el ratón por encima y demás. Si quisieras, podrías hacer algo más, como obtener nombres de archivo que incluyan un pie de foto y luego insertarlo en el html de alguna manera.

1 me gusta

Admito que no sé nada sobre RoR, ni siquiera sobre postgres. Pero, cuando marcas una imagen con texto alternativo, se almacena en la base de datos postgres asociada con esa imagen. ¿Qué tiene el script de importación que impide esa asignación? Ciertamente, el comentario es accesible en MySQL.

1 me gusta

Parece complicado, pero puede tener éxito modificando este método aquí:

En lugar de esto:

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

Le gustaría algo como esto:

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 es solo un ejemplo no probado para mostrarle dónde debe modificarse. Puedo estar equivocado.

Si tengo tiempo mañana, podría abrir un PR con una solución real. :grinning_face_with_smiling_eyes:

5 Me gusta

¡Gracias! ¿Desea calificar la asignación basándose en el tipo MIME? (No pude adjuntar un comentario de phpBB a un .mp4; aunque pude hacerlo a un .gif, no apareció al pasar el ratón por encima).

1 me gusta

Esto podría ser útil, pero trabajé en una nueva forma de añadir el comentario directamente al raw de la publicación. Creo que es más seguro de esa manera para manejar todos los tipos de archivos.

¿Podrías probar estos cambios con tu conjunto de datos? Probé localmente, pero me encantaría recibir tus comentarios antes de seguir adelante con una PR.

3 Me gusta

Estaría encantado de probar, pero… ¿Tengo que purgar mi entorno de prueba y repetir? Claude.ai me guio a través del proceso de instalación, soy un novato en Docker, e incluso así, hubo muchos errores en el camino.

Si puedes esbozar una manera para que pueda probar fácilmente, estaré encantado de intentarlo.

1 me gusta

¡Buen trabajo! Revisé el código y no pude encontrar eso.

Sí. Tendrás que borrar la base de datos y volver a ejecutar. El importador omite los datos ya importados, por lo que tendrás que volver a importar todo para probarlo. ¡Aunque parece que debería funcionar!

OK, las adjuntos siguen en su sitio, al igual que la base de datos MySQL. Tardó varias horas en ejecutarse, pero haré que Claude me guíe y le informaré.

Claro, puedo ayudarte. No es necesario cambiar tu instalación. La forma sencilla:

  1. Haz una copia de seguridad de tu sitio y guárdala de forma segura. Esto te protegerá de perder tu trabajo.
  2. Restablece tu sitio:
# Entra en el contenedor del sitio
cd /var/discourse
./launcher enter <nombre-de-tu-contenedor>

# Restablecer base de datos
bundle exec rake db:drop
bundle exec rake db:create
bundle exec rake db:migrate
bundle exec rake db:seed

# Sal del contenedor
exit

# Reconstruye el contenedor solo para asegurarte de que todo esté en su lugar
./launcher rebuild <nombre-de-tu-contenedor>
  1. Modifica los archivos con el nuevo código. Puedes usar un editor de texto cli o abrir tu contenedor usando ssh en tu editor de texto favorito.
  2. Configura el settings.yml y ejecuta el importador de nuevo.

Para volver a tu estado anterior, simplemente restaura la copia de seguridad que hiciste al principio:

./launcher enter <nombre-de-tu-contenedor>
discourse enable restore
discourse restore <nombre-de-tu-archivo-de-copia-de-seguridad>
4 Me gusta

¡Oh, sí! Ya que estamos, ¿es lo suficientemente fácil modificar el script para que informe el post_id de phpBB que se está procesando cuando se informa del problema de fecha/hora?

2 Me gusta

Parece bastante sencillo. Lo intentaré tan pronto como Rosie :dog: me saque a pasear.

2 Me gusta

Lo estoy añadiendo aquí usando el gsub existente:

Pero gracias por echarle un vistazo, esto me hizo darme cuenta de que no consideré los archivos adjuntos no referenciados que phpbb también tiene:

2 Me gusta

De acuerdo, la copia de seguridad está en curso. Espero que eso tarde un tiempo…

¿Necesito editar? ¿No puedo simplemente hacer un docker cp en las rutas de script de los archivos de tu repositorio git?

1 me gusta

Eso también funciona. Alternativamente, puedes configurar container.yml para que use mi repositorio y rama y reconstruir.

2 Me gusta

Bueno, eso no salió bien.

reset_log.txt (16.6 KB)

1 me gusta

Creo que es posible que necesites ejecutar los comandos como el usuario discourse:

su discourse

o

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

Vaya. Error de novato, no pretendía cerrar el hilo, solo reconocer que eso parece haber resuelto ese problema en particular.

“Parece que sí”. Todavía estoy esperando que termine db:drop. Sigamos…

1 me gusta

Todavía nada.

reset_log2.txt (1.7 KB)