Olá a todos.
Criei uma Bíblia Offline em Python com a interface gráfica QT com funções que considero importantes para quem gosta de estudar a Bíblia. Uma das funções é um sistema de anotações integradas com cada capítulo da Bíblia, a outra função é uma busca recursiva por alguma palavra em todos os livros. Segue abaixo o link do repositório:
Há aproximadamente 3 anos atrás tive que desenvolver um site para a Bíblia. Quando o site ficou pronto fiquei com todos os arquivos de texto da Bíblia que tive que editar capítulo por capítulo ( se não me engano durou uns 3 meses essa brincadeira ) .
Enfim, com toda a estrutura já pronta precisa só de uma interface gráfica e pronto.
Mas depois me deparei no dilema do programador. Ficava me perguntando se esse programa era realmente útil já que para ler a Bíblia existem vários sites e o livro físico também é fácil de adquirir (até de graça acha). No meu ponto de vista era só mais um Bíblia entre milhares onde eu poderia ler as mesmas palavras.
Foi então que eu criei mais dois programas que deram sentido para a aplicação; anotações e busca recursiva (conhecida pela galera da Teologia por "Chave Bíblica). Como todos os capítulos da Bíblia estão em arquivos de texto separados ficou bem fácil implementar essas ideias.
A Bíblia Offline é um projeto ainda em desenvolvimento
Eu sou apenas um entusiasta de programação, então provavelmente algumas coisas no código podem ser melhoradas. Ou alguém, com mais conhecimento, desenvolveria o código de outra forma. Se alguém aqui da comunidade tiver um tempo e puder dar uma olhada no código, eu ficaria muito grato pelo feedback.
Instalação
No repositório tem todas as informações necessárias para instalar a Bíblia Offline. Infelizmente ainda não tive tempo para aprender a empacotar o programe em .deb, flatpak etc, portanto a instalação está sendo feita através de um shell script install.sh que pode ser encontrado no repositório.
Gastei um tempo para fazer o script de instalação, mas se alguém puder revisá-lo e ver se está “ok”, desde já agradeço.
O que falta?
Eu desenvolvi o sistema no Ubuntu 24.04 LTS e por algum motivo estou tendo problemas com os ícones da aplicação que não aparecem na dock, ao invés aparece um ícone genérico como está na imagem. No Kde Plasma (Debian 12) aparece normalmente os ícones.
Ainda não fiz um ícone personalizado para a aplicação, fiz com IA mesmo por enquanto. Se algum artista de plantão quiser ajudar, TMJ.
O aplicativo ainda está “preso” no tema Adwaita-dark com a cor de destaque laranja do Ubuntu.
O Editor de texto das anotações ainda não tem opções de edição, mudar fonte etc.
Uma ideia que pode ser aplicada para outros livros:
Depois de terminar o programa, percebi que posso fazer o mesmo para qualquer livro, porém sempre parto da filosofia que os programas devem ter um sentido de existir. Então, nesse último tópico desse post, gostaria de opinião de vocês, qual livro seria interessante “transformar” em um programa?
Agora não há uma versão específica para o pyQt5. O pip instalará a versão atual disponível. O motivo para isso é que se o pip não estiver atualizado pode acontecer de ele não encontrar a versão específica do pyQt5.
Durante a instalação, o Teste para ver se o Python já possui o módulo venv foi alterado:
# Verificar se o módulo venv está disponível executando python3 -m venv em um diretório temporário
TEMP_DIR=$(mktemp -d)
if ! python3 -m venv "$TEMP_DIR" 2>/dev/null; then
echo "Erro: O módulo venv do Python não está disponível. Instale-o e tente novamente."
rm -rf "$TEMP_DIR" # Remover o diretório temporário antes de sair
exit 1
fi
# Limpeza do diretório temporário
rm -rf "$TEMP_DIR"
echo "O módulo venv está disponível. Continuando com a instalação..."
alguém sabe se essa é a melhor forma de fazer o teste acima? Tentei de várias formar identificar se o venv já estava no Python, mas só tive sucesso dessa forma. Antes verificava se o sistema tinha um arquivo específico /usr/share/doc/python3-venv o que comprovou não ser um teste eficiente em sistemas que não são baseados no debian.
Nesse novo teste, o script simula uma criação de um ambiente virtual Python dentro de /tmp. Alguém pode me dizer se isso é uma boa prática?
Testei a Bíblia no Arch Linux em uma VM do gnome-boxes. Devido a filosofia do Arch de deixar o sistema “enxuto” de pacotes, nem mesmo o pacote qt5-base estava instalado. O programa usa o QT como interface gráfica então depende do qt5-base.
Diferentemente do ArchLinux, a maioria das outras distribuições já tem o Qt5 instalado por padrão.
Obs: no XFCE os ícones da aplicação também não apareceram na barra de título da janela e também na barra de tarefas.
Legal, muito bacana, baixei no meu debian com interface xfce4, instalei os pacotes solicitados e funcionou direitinho, parabéns pelo trabalho, obrigado!
Eu tenho um script shell que é capaz de fazer empacotamento no formato de pacote DEBIAN.
#!/usr/bin/env bash
set -e
# Cria array para detectar automaticamente qual é o diretório do programa DEBIAN
pacote_array=(*)
# Iterando sobre os elementos do array
for verifica_array in "${pacote_array[@]}"; do
# Verificando se o elemento do array é um diretório
if [ -d "$verifica_array" ]; then
elemento_do_diretorio="$verifica_array"
break
fi
done
# Verifica se encontrou algum diretório
if [ -z "$elemento_do_diretorio" ]; then
echo "Nenhum diretório detectado!"
exit 1 # Sai do script com um código de erro
fi
# Cria o diretório e arquivo de informação do pacote DEBIAN
mkdir -p "$elemento_do_diretorio/DEBIAN/"
cat <<EOF_Control > "$elemento_do_diretorio/DEBIAN/control"
Package: mypackage
Version: 1.0
Architecture: all
Essential: no
Priority: optional
Depends: curl,zenity
Maintainer: flavinho
Description: A sample package...
EOF_Control
nano -l "$elemento_do_diretorio/DEBIAN/control"
# Pergunta se quer criar "postinst" e "preinst" e se sim, abre o nano
read -r -p 'Deseja criar "pré instal"? (y/n) ' preinst
read -r -p 'Deseja criar "pos instal"? (y/n) ' postinst
[[ "$preinst,," == "y" ]] && nano -l "$elemento_do_diretorio/DEBIAN/preinst"
[[ "$postinst,," == "y" ]] && nano -l "$elemento_do_diretorio/DEBIAN/postinst"
# Criando o pacote DEBIAN
dpkg-deb --build "$elemento_do_diretorio/" &&
echo "Criação do pacote concluída!" || echo "Falha, ao criar pacote!"
Até hoje ele tem funcionado comigo.
package = nome do programa
version = versão do programa
architecture = é a arquitetura suportada pelo programa, python é linguagem interpretada ou seja os programas em python roda em qualquer sistema que tenha o python instalado
essential = se o programa é essencial para o funcionamento do sistema
depends = se o sistema não tiver tais pacote instalados o programa não vai funcionar
maintainer = mantenedor do pacote ou quem o empacotou e não o desenvolvedor do programa
description = uma simples descrição do programa
“pré instal” e “pos instal”
São scripts shell que vc deseja implementar para que eles sejam executados antes e ou após a instalação do pacote, é só copiar e colar escrever no nano é complicado.
O script depende que existe uma subpasta no diretório raiz de onde está o script, este diretório serve para vc fazer a estrutura de diretório do seu programa, tipo, supondo que o script está no diretório “/a/” então vc cria um subdiretório “/a/b/” e dentro deste diretório vc vai criar a estrutura de diretório do seu programa, por exemplo, se o seu programa tiver um executável, vc vai montar o diretório “/a/b/usr/bin/” e assim por diante.
O script vai fazer build do pacote no mesmo diretório de onde está o script, ou seja no diretório “/a/”.
Na época copiei toda a Bíblia manualmente, e ainda tive que por o número nos versículos. Provavelmente existia um método melhor, mas fiz no ctrl+C ctrl+V, então provavelmente não da para por outro idioma usando esse método se não vão ser mais 3 meses de trabalho
Cada capítulo da bíblia é uma arquivo de texto e cada livro um diretório
Não tive tempo de testar mas uma funcionalidade bacana é adicionar um “modo exegese” que dispara uma buscas no NEPE Brasil ao clicar num versículo, é uma API bem simples que usa GET pode ser aberta no navegador ou numa webview
É a forma como a Bíblia é organizada. É uma convenção…
Por exemplo:
O apóstolo João escreveu 3 cartas, por isso:
1ª carta de João
2ª carta de João
3ª carta de João
não sabia que tinha isso. Infelizmente estou com pouco tempo para mexer nesse projeto, assim que eu tiver uma folga vou tentar aplicar as sugestões que foram apresentadas nesse tópico