Script ebook-manager
Publicado por Pedro Fernandes (última atualização em 07/09/2022)
[ Hits: 2.529 ]
Homepage: https://github.com/PedroF37
Download 1662392690.ebook-manager (versão 2)
Script que é uma cópia do meu script 'ebook-cli', mas usando o zenity.
No meu github: "https://github.com/PedroF37/Bash-Scripts", tem uma Pasta "EbookManager" onde tem um icone (certo que é feinho kk) e um arquivo .desktop se quiser usar.
Só lembre de trocar os "/home/pedro/etc..." por "/home/seu-usuario/..".
Modifique o arquivo .desktop como quiser, eu coloquei tudo para ir para o HOME:
script - $HOME/bin
icone - $HOME/.local/share/icons
.desktop - $HOME/.local/share/applications
Não misturo minhas aventuras com as do root...
Versão 2 - Enviado por Pedro Fernandes em 05/09/2022
Changelog: Adicionada opção de adicionar livros de qualquer pasta do HOME do usuário para a Biblioteca do PC, ao invés de puder apenas manipular as Bibliotecas
do PC e do dispositivo ebook-reader. Variável 'FileFormat' na secção 'PARÂMETROS', contém a lista dos formatos de livros
suportados. Adicione mais a gosto e preferência.
Download 1662392690.ebook-manager
#!/bin/bash
#
#################################################################################
#
# SCRIPT ebook-manager
# AUTOR Pedro Fernandes
# E-MAIL pedrobfernandes37@gmail.com
# DATA 30-07-2022
#
#################################################################################
#
# DESCRIÇÃO
#
# Script que usa o zenity para gerenciar livros digitais entre PC e
# dispositivo ebook-reader.
# Cópia gráfica do meu script de nome: 'ebook-cli'
#
#################################################################################
#
# VERSÂO/CHANGELOG:
#
### 1.0 - 01-08-2022: Script completado e testado.
### Minimamente funcional.
#
################################################################################
#
# DEPENDÊNCIAS:
#
# zenity
#
#################################################################################
#
##### PARÂMETROS #####
#
PcLibrary=$HOME/Biblioteca/
Books=$(mktemp $HOME/.Livros.XXXXXX)
ConfigFile=$HOME/.EbookManager.conf
#
#################################################################################
#
##### FUNÇÕES #####
#
function RemoveTemp
{
rm -rf $Books
return
}
#
function RecordConfig
{
echo "Device = $Device
DeviceLibrary = $DeviceLibrary
PcLibrary = $PcLibrary" >> $ConfigFile
[ ! -d $PcLibrary ] && mkdir $PcLibrary
[ ! -d $DeviceLibrary ] && mkdir $DeviceLibrary
zenity --info --title "Configurações" \
--text \
"Configuraçõoes salvas com sucesso em: $ConfigFile.
Rode novamente o script para manipular as Bibliotecas.
Para usar outro dispositivo, delete arquivo de configuração
ou troque o valor de DeviceLibrary pelo dispositivo atual." \
--ellipsize
exit 0
}
#
function FindDevice
{
zenity --info --title "Ebook-manager" \
--text \
"Não foi detetado arquivo de configuração.
Iremos criar um agora. Esta etapa é necessária apenas
desta primeira vez, ou caso delete posteriormente o
arquivo de configuração." \
--ellipsize
Device=$(zenity --entry --title "Dispositivos" \
--width=500 --height=300 \
--text "Escolha o seu dispositivo" \
$(mount | sed 's/.* on //; s/ .*//'))
[ $? -eq 1 ] && exit 0
DeviceLibrary=$Device/Biblioteca/
RecordConfig $Device $DeviceLibrary
}
#
function ChooseBooks
{
zenity --file-selection --title "Escolha os Livros" \
--multiple --filename=$1 > $Books
[ $? -eq 1 ] && exit 0
sed -i 's/|/\n/g' $Books
return
}
#
function CopyContent
{
[ $1 = $PcLibrary ] && Destiny=$DeviceLibrary || Destiny=$PCLibrary
exec 3<&0
exec 0<$Books
{
while read Line
do
cp -u "$1${Line##*/}" "$Destiny"
sleep 1
done
} | zenity --progress --title "Copiando Itens Selecionados" \
--width=400 --height=200 \
--text "Aguarde enquanto os itens são copiados" \
--pulsate --auto-close
zenity --info \
--title "Cópia" \
--text "Todos os itens copiados com sucesso" \
--ellipsize
exec 0<&3
exit 0
}
#
function RemoveContent
{
exec 3<&0
exec 0<$Books
{
while read Line
do
rm "$1${Line##*/}"
sleep 1
done
} | zenity --progress --title "Removendo Itens Selecionados" \
--width=400 --height=200 \
--text "Aguarde enquanto os itens são removidos" \
--pulsate --auto-close
zenity --info \
--title "Remoção" \
--text "Todos os itens removidos com sucesso" \
--ellipsize
exec 0<&3
exit 0
}
#
function ChooseAction
{
Action=$(zenity --list --radiolist --title "Ebook Manager" \
--text "Escolha a Ação a Executar" \
--width=500 --height=300 \
--column "Seleção" --column "Ação" \
FALSE "Copiar Livros" FALSE "Remover Livros" \
FALSE "Sair")
[ $? -eq 1 ] && exit 0
### 2 = cp / 3 = rm ###
case $Action in
"Copiar Livros")
return 2
;;
"Remover Livros")
return 3
;;
"Sair")
exit 0
;;
*)
exit 1
;;
esac
}
#
function ChooseLibrary
{
LibrarySelect=$(zenity --list --radiolist --title "Ebook Manager" \
--text "Escolha a Biblioteca para Manipular" \
--width=500 --height=300 \
--column "Seleção" --column "Biblioteca" \
FALSE "Biblioteca do PC" FALSE \
"Biblioteca do Ebook-Reader" FALSE \
"Sair")
[ $? -eq 1 ] && exit 0
### 2 = $PcLibrary / 3 = $DeviceLibrary ###
case $LibrarySelect in
"Biblioteca do PC")
return 2
;;
"Biblioteca do Ebook-Reader")
return 3
;;
"Sair")
echo Terminando programa
exit 0
;;
*)
zenity --error --text "Opção inválida."
exit 1
;;
esac
}
#
function ReadConfig
{
exec 3<&0
exec 0<$ConfigFile
while read line
do
case ${line%% *} in
Device)
Device=${line##* }
;;
DeviceLibrary)
DeviceLibrary=${line##* }
;;
PcLibrary)
PcLibrary=${line##* }
;;
esac
done
exec 0<&3
return
}
#################################################################################
#
##### INICIO #####
#
trap RemoveTemp EXIT
if [ -e $ConfigFile -a -s $ConfigFile ]
then
ReadConfig
ChooseLibrary
[ $? -eq 2 ] && Library=$PcLibrary || Library=$DeviceLibrary
ChooseBooks $Library
ChooseAction
[ $? -eq 2 ] && CopyContent $Library || RemoveContent $Library
else
FindDevice
fi
exit 0
#
#################################################################################
Script para acionamento de GPIO para Relé Raspberry Pi
Manipular serviços no Runit (Void Linux)
Instalação de pacotes em uma lista
Usando dialog para adiciona usuários no squid
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
E aí? O Warsaw já está funcionando no Debian 13? [RESOLVIDO] (15)
Secure boot, artigo interessante, nada técnico. (4)
copiar library para diretorio /usr/share/..... su com Falha na a... (1)









