Script ebook-manager
Publicado por Pedro Fernandes (última atualização em 07/09/2022)
[ Hits: 2.592 ]
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 em Yad para baixar vídeos ou áudio em MP3 do Youtube.
PkgBuild - um gerenciador de construção de pacotes
Compilação do QMPlay2 no Deepin 20
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Opções secretas em tema do Cinnamon
Como mapear unidade de rede no Linux
Como quebrar senha usando john the ripper
Alguém já testou o novo COSMIC Desktop? O que achou? (5)
Alguém pode me indicar um designer freelancer? [RESOLVIDO] (2)
Por que passar nas disciplinas da faculdade é ruim e ser reprovado é b... (2)









