Script ebook-manager
Publicado por Pedro Fernandes (última atualização em 07/09/2022)
[ Hits: 2.524 ]
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
#
#################################################################################
Download automatizado do instalador do AVG Free
Script para mostrar IP, usando zenity
Criar Password no boot de uma DebianLive
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
IA chega ao desktop e impulsiona produtividade no mundo Linux
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?
Mint Xfce não mantém a conexão no wi-fi (1)
Problemas com Driver NVIDIA (5)
Warcraft II Remastered no Linux? (8)









