Hola,
Mi proyecto es construir una comunidad centrada en la cultura del Tao Te Ching. Tengo más de 5.000 libros antiguos que necesito mostrar, y los he comprimido todos en formato de imagen AVIF. Algunos de estos libros contienen hasta 2.500 imágenes AVIF.
Mi pregunta es: ¿Cómo puedo insertar estas imágenes en una sola publicación de Discourse para permitir que mis usuarios las lean en línea?
Estoy buscando una solución, quizás un plugin, que pueda proporcionar las siguientes funciones para los usuarios dentro de una publicación:
Cambiar fácilmente entre imágenes (como pasar páginas).
La capacidad de saltar directamente a un número de imagen específico.
Fundamentalmente, las imágenes deben cargarse de forma diferida; solo deben cargarse cuando el usuario navega hacia ellas, no todas a la vez cuando se abre la publicación.
Mis archivos están todos organizados en orden numérico y son en formato AVIF. Cada libro está contenido dentro de su propia carpeta. El tamaño promedio de la imagen es de 150 kb, y los libros suelen tener entre 300 y 1.000 páginas, con algunas excepciones que alcanzan las 2.500 páginas.
¿Por qué tengo este requisito?
Mi colección de libros es vasta, superando actualmente los 350 GB. La compresión a AVIF fue necesaria para gestionar el almacenamiento.
Formatos como AVIF y WebP no se pueden empaquetar fácilmente en un solo archivo PDF.
Empaquetar los libros como archivos ZIP o RAR impide la lectura en línea. Usar formatos de libro electrónico como CBZ crearía una carga demasiado alta en el servidor.
¡Muchas gracias por tu ayuda!
Rara vez digo esto, pero no estoy seguro de que Discourse sea una buena herramienta para tu problema.
Si aun así quieres hacerlo, probablemente haría algo como crear un tema por libro y quizás una publicación por capítulo, si eso tiene algún sentido (¿quizás no hay capítulos?).
Luego podrías usar un script de importación que lea el nombre del directorio y cree un tema y luego haga algo como
files.each do |f|
u=uploader.create_upload(1, f.path, f.filename)
raw += uploader.html_for_upload(u, f.filename)
end
Y luego usarías ese raw para crear un tema.
Necesitarías buscar en el directorio de scripts de importación para encontrar algunos ejemplos de creación de temas, pero esa es una idea general.
Y eso pondría todas las imágenes en un solo tema/publicación. Y luego hay algunas herramientas que te permiten desplazarte por un montón de imágenes, creo. Quizás alguien más les ha prestado más atención que yo.
Como se indicó, Discourse probablemente no sea útil, al menos para alojar tu biblioteca. En cambio, podrías considerar usar un servicio de alojamiento de imágenes separado junto con tu instancia de Discourse.
A continuación, se muestra una lista de servicios de galerías de fotos autoalojados que podrían venir con muchas de las características que desearías: aplicación web lista para usar, interfaz amigable para usuarios y móviles, álbumes basados en directorios, capacidades de búsqueda, etc.
Puedes ejecutar el servicio de alojamiento de imágenes por separado y usar las URL de él como iframes incrustados en Discourse. Esto evitaría que tu base de datos de Discourse tenga que descargar todas las imágenes y permitiría que el servicio de alojamiento de imágenes maneje la carga diferida. A partir de ahí, puedes comenzar a considerar el uso de componentes temáticos o complementos para páginas independientes de la biblioteca, enlazar automáticamente referencias de las publicaciones de los usuarios, etc.
No creo que sea una cuestión de alojamiento, sino de usabilidad al leer. Para personas con un estilo más occidental, es una pregunta muy similar a la de mostrar cómics. Y para eso podrían encontrar plataformas adecuadas, pero estoy bastante seguro de que incluso WordPress puede ofrecer una solución.
Y luego, la conexión de contenido y comunidad/discusión con Discourse es totalmente trivial.
Pero en el ecosistema de Discourse, algo que ofrecía Discpage podría ser otra solución. Pero está roto.
Hay lectores en línea de formatos de archivo de cómics disponibles, que cargan archivos bajo demanda:
GitHub - codedread/kthoom: Comic Book Reader in the Browser por ejemplo, admite alwaysOptimizedForStreaming=true que le dice a kthoom que renderice las páginas inmediatamente a medida que se descomprimen y puede cargar desde URL con solicitudes de rango.
¿Funcionaría eso también si uno quiere restringir el acceso a los libros por grupos de usuarios o solo para usuarios registrados?
¡Muchas gracias a todos por su ayuda!
He encontrado una solución: desplegué un servicio Zfile en mi servidor, que actúa como una unidad de nube privada, y lo he configurado para permitir el acceso de usuarios anónimos.
Puedo controlar el número de archivos que se muestran por página y personalizar cuántos se cargan manualmente cada vez. Los permisos para los visitantes anónimos están configurados como “solo vista previa”.
Esto ha resuelto varios desafíos clave para mí:
Gestión compleja de archivos: Es mucho más conveniente administrar cientos de miles de imágenes a través de una interfaz de unidad de nube.
Vistas previas bajo demanda: Por defecto, la unidad solo enumera los archivos y una vista previa se genera solo cuando se hace clic en un archivo. Esto funciona de manera muy similar a PhotoSwipe. (Aunque Zfile tiene un modo para previsualizar todas las imágenes a la vez, creo que puedo deshabilitarlo más adelante).
Integración con Discourse: Ahora puedo agregar un enlace “Leer en línea” en mis publicaciones de Discourse, que abre la interfaz de la unidad de nube cuando se hace clic. Se ve así: https://openttc.com/t/topic/8
Eficiencia de recursos: Este enfoque evita el consumo innecesario de recursos común en las galerías tradicionales o aplicaciones de alojamiento de imágenes. La mejor manera de leer un libro es cargar una página a la vez, a diferencia de un álbum de fotos donde esperas varias imágenes a la vez. Cargar varias páginas de libros simultáneamente también sería visualmente confuso, ya que todas las páginas se ven muy similares.
Estoy usando Discourse como página de inicio de mi sitio web, administrando alrededor de 5.000 libros en 31 categorías. Cada publicación representa un solo libro, y la unidad Zfile administra las páginas de contenido individuales para cada uno. Esta es la mejor experiencia de usuario que he encontrado hasta ahora, y es relativamente conveniente en computadoras de escritorio, teléfonos móviles y tabletas. Espero que esto pueda ayudar a otros que puedan tener necesidades similares.
Un par de notas:
Zfile no es la única opción. Parece que su interfaz admite principalmente chino, lo cual es un beneficio para mí. Si tienen alguna mejor recomendación, por favor háganmelo saber.
Si en el futuro estuviera disponible un plugin de volteo de páginas 3D (que simule una experiencia real de volteo de libros, como los disponibles para WordPress) para Discourse, por favor, háganmelo saber también.
¡Gracias de nuevo!
¡Tu proyecto parece muy interesante!
¿Has probado a envolver tus imágenes en markdown [grid]? Un tema como 关于“魏伯陽 周易參同契 Cantong qi. Token for the Agreement...”类别 - 魏伯陽 周易參同契 Cantong qi. Token for the Agreement... - OpenTTC sería mucho más manejable.
Personalmente, he digitalizado álbumes de fotos y los he guardado en archivos PDF y los he subido a temas en Discourse. Luego, el componente temático de vista previa de PDF en línea permite a mis miembros desplazarse por ellos directamente en Discourse. La ventaja de esto es que los libros permanecen intactos.
¡Muchas gracias! Señor
Recientemente, he estado trabajando en el desarrollo, cambiando entre múltiples servidores. Por lo tanto, el enlace openttc.com al que se hace referencia en esta publicación podría ser inestable.
Una vez que termine mi trabajo actual, publicaré un enlace actualizado en este hilo para mostrar los resultados de nuestra discusión (incrustar Zfile en publicaciones de Discourse, lo que podría ser útil para alguien en el futuro).
De hecho, después de mucho pensarlo, he abandonado temporalmente mi enfoque anterior.
La razón es que es demasiado problemático de administrar. Si agrego nuevo contenido más tarde, tendría que administrarlo por separado en los sistemas Discourse y Zfile y sincronizarlos manualmente.
Actualmente estoy intentando incrustar contenido directamente en las publicaciones como PDF. Algunos PDF individuales tienen más de 2 GB de tamaño, por lo que todavía hay un montón de problemas con los que lidiar lentamente…
Gracias a todos por su atención. ¡Esta comunidad es realmente encantadora!
¡Les deseo buena salud y felicidad a sus familias!
¡Gracias, y lo mismo para ti y los tuyos! ![]()
Voy a cerrar este tema ya que parece que han podido encontrar buenas opciones para resolver su problema. Si tienen problemas nuevamente en el futuro, pueden iniciar nuevos temas.