Olá,
Meu projeto é construir uma comunidade focada na cultura do Tao Te Ching. Tenho mais de 5.000 livros antigos que preciso exibir, e comprimi todos eles no formato de imagem AVIF. Alguns desses livros contêm até 2.500 imagens AVIF.
Minha pergunta é: Como posso inserir essas imagens em uma única postagem do Discourse para permitir que meus usuários as leiam online?
Estou procurando uma solução, talvez um plugin, que possa fornecer os seguintes recursos para os usuários dentro de uma postagem:
Virar facilmente para frente e para trás entre as imagens (como virar páginas).
A capacidade de pular diretamente para um número de imagem específico.
Crucialmente, as imagens devem ser carregadas de forma preguiçosa (lazy-loaded); elas só devem carregar quando o usuário navegar até elas, não todas de uma vez quando a postagem for aberta.
Meus arquivos estão todos organizados em ordem numérica e estão no formato AVIF. Cada livro está contido em sua própria pasta. O tamanho médio da imagem é de 150kb, e os livros geralmente têm entre 300 e 1.000 páginas, com algumas exceções chegando a 2.500 páginas.
Por que tenho esse requisito?
Minha coleção de livros é vasta, atualmente excedendo 350GB. Comprimi-los para AVIF foi necessário para gerenciar o armazenamento.
Formatos como AVIF e WebP não são facilmente empacotados em um único arquivo PDF.
Empacotar os livros como arquivos ZIP ou RAR impede a leitura online. Usar formatos de e-book como CBZ criaria uma carga muito alta no servidor.
Muito obrigado pela sua ajuda!
Raramente digo isso, mas não tenho certeza se o Discourse é uma boa ferramenta para o seu problema.
Se você quiser mesmo assim, eu provavelmente faria algo como criar um tópico por livro e talvez uma postagem por capítulo, se isso fizer algum sentido (talvez não haja capítulos?).
Então você poderia usar um script de importação que leria o nome do diretório e criaria um tópico e, em seguida, faria algo como
files.each do |f|
u=uploader.create_upload(1, f.path, f.filename)
raw += uploader.html_for_upload(u, f.filename)
end
E então você usaria esse raw para criar um tópico.
Você precisaria olhar no diretório de scripts de importação para encontrar alguns exemplos de criação de tópicos, mas essa é uma ideia geral.
E isso colocaria todas as imagens em um único tópico/postagem. E então existem algumas ferramentas que permitem rolar por um monte de imagens, eu acho. Talvez alguém mais tenha prestado mais atenção a elas do que eu.
Conforme declarado, o Discourse provavelmente não é útil, pelo menos com a hospedagem da sua biblioteca. Em vez disso, você pode considerar o uso de um serviço de hospedagem de imagens separado junto com sua instância do Discourse.
Abaixo está uma lista de serviços de galeria de fotos auto-hospedados que podem vir com muitos recursos que você gostaria: aplicativo web pronto para uso, interface amigável para usuários e dispositivos móveis, álbuns baseados em diretório, recursos de pesquisa, etc.
Você pode executar o serviço de hospedagem de imagens separadamente e usar os URLs dele como iframes incorporados no Discourse. Isso evitaria que seu banco de dados do Discourse tivesse que baixar todas as imagens e permitiria que o serviço de hospedagem de imagens lidasse com o carregamento lento. A partir daí, você pode começar a considerar o uso de componentes de tema ou plugins para páginas independentes para a biblioteca, vinculando automaticamente referências de postagens de usuários, etc.
Não acredito que seja uma questão de hospedagem, mas de usabilidade na leitura. Para pessoas com um estilo mais ocidental, esta é uma questão muito semelhante à exibição de quadrinhos. E para isso, podem encontrar plataformas adequadas, mas estou bastante positivo de que até mesmo o WordPress pode oferecer uma solução.
E então a conexão de conteúdo e comunidade/discussão pelo Discourse é totalmente trivial.
Mas no ecossistema Discourse, algo que o Discpage ofereceu poderia ser outra solução. Mas está quebrado.
Existem leitores online de arquivos de quadrinhos disponíveis, que carregam arquivos sob demanda:
GitHub - codedread/kthoom: Comic Book Reader in the Browser, por exemplo, suporta alwaysOptimizedForStreaming=true, que diz ao kthoom para renderizar páginas imediatamente assim que são descompactadas e podem carregar de URLs com solicitações de intervalo.
Isso também funcionaria se alguém quisesse restringir o acesso aos livros por grupos de usuários ou apenas para usuários logados?
Muito obrigado a todos pela ajuda!
Encontrei uma solução: implantei um serviço Zfile no meu servidor, que atua como um disco de nuvem privado, e o configurei para permitir o acesso de usuários anônimos.
Posso controlar o número de arquivos exibidos por página e personalizar quantos são carregados manualmente a cada vez. As permissões para visitantes anônimos estão definidas como “somente visualização”.
Isso resolveu vários desafios importantes para mim:
Gerenciamento Complexo de Arquivos: É muito mais conveniente gerenciar centenas de milhares de imagens através de uma interface de unidade de nuvem.
Pré-visualizações Sob Demanda: Por padrão, a unidade lista apenas os arquivos, e uma pré-visualização é gerada apenas quando um arquivo é clicado. Isso funciona de forma muito semelhante ao PhotoSwipe. (Embora o Zfile tenha um modo para pré-visualizar todas as imagens de uma vez, acredito que posso desativá-lo mais tarde.)
Integração com Discourse: Agora posso adicionar um link “Ler online” em minhas postagens do Discourse, que abre a interface da unidade de nuvem quando clicado. Parece assim: https://openttc.com/t/topic/8
Eficiência de Recursos: Essa abordagem evita o consumo desnecessário de recursos comum em galerias tradicionais ou aplicativos de hospedagem de imagens. A melhor maneira de ler um livro é carregar uma página de cada vez, ao contrário de um álbum de fotos onde você espera várias imagens de uma vez. Carregar várias páginas de livros simultaneamente também seria visualmente confuso, pois todas as páginas se parecem muito.
Estou usando o Discourse como a página inicial do meu site, gerenciando cerca de 5.000 livros em 31 categorias. Cada postagem representa um único livro, e a unidade Zfile gerencia as páginas de conteúdo individuais para cada um. Esta é a melhor experiência de usuário que encontrei até agora, e é relativamente conveniente em desktops, telefones celulares e tablets. Espero que isso possa ajudar outras pessoas que possam ter necessidades semelhantes.
Algumas observações:
O Zfile não é a única opção. Parece que sua interface suporta principalmente o chinês, o que é um benefício para mim. Se você tiver alguma recomendação melhor, por favor, me avise.
Se um plugin de virar páginas 3D (simulando uma experiência real de virar páginas de livro, como os disponíveis para WordPress) estiver disponível para Discourse no futuro, por favor, me avise também.
Obrigado novamente!
Seu projeto parece muito interessante!
Você já tentou agrupar suas imagens em markdown [grid]? Um tópico como 关于“魏伯陽 周易參同契 Cantong qi. Token for the Agreement...”类别 - 魏伯陽 周易參同契 Cantong qi. Token for the Agreement... - OpenTTC seria muito mais gerenciável.
Pessoalmente, digitalizei álbuns de fotos e os salvei em arquivos PDF, enviando-os para tópicos no Discourse. Em seguida, o componente de tema de pré-visualização de PDF inline permite que meus membros naveguem por eles diretamente no Discourse. A vantagem disso é que os livros permanecem intactos.
Muito obrigado! Senhor
Recentemente, tenho trabalhado em desenvolvimento, alternando entre vários servidores. Portanto, o link openttc.com referenciado neste post pode estar instável.
Assim que terminar meu trabalho atual, postarei um link atualizado neste tópico para mostrar os resultados da nossa discussão (incorporando o Zfile em posts do Discourse, o que pode ser útil para alguém no futuro).
Na verdade, após muita reflexão, abandonei temporariamente minha abordagem anterior.
O motivo é que é muito complicado de gerenciar. Se eu adicionar novo conteúdo mais tarde, terei que gerenciá-lo separadamente nos sistemas Discourse e Zfile e sincronizá-los manualmente.
Atualmente, estou tentando incorporar conteúdo diretamente em posts como PDFs. Alguns PDFs individuais têm mais de 2 GB de tamanho, então ainda há um monte de problemas para lidar lentamente…
Obrigado a todos pela atenção. Esta comunidade é realmente adorável!
Desejo a vocês boa saúde e felicidade para suas famílias!
Obrigado, e o mesmo para você e sua família! ![]()
Vou fechar este tópico, pois parece que você conseguiu encontrar boas opções para resolver seu problema. Se tiver desafios novamente no futuro, poderá criar novos tópicos.