Script ebook-manager

Publicado por Pedro Fernandes (última atualização em 07/09/2022)

[ Hits: 2.237 ]

Homepage: https://github.com/PedroF37

Download ebook-manager

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ões atualizadas deste script

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


Esconder código-fonte

#!/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
#
#################################################################################

Scripts recomendados

Script para montagem/desmontagem de unidades do tipo pendrive.

Cria cabeçalhos para shell scripts

Bookmaker.bash 2.0

Armazenando Endereços Web

plaspkg


  

Comentários
[1] Comentário enviado por maurixnovatrento em 23/10/2022 - 16:52h


Script bem completinho. Muito bom.

___________________________________________________________
Conhecimento não se Leva para o Túmulo.
https://github.com/mxnt10

[2] Comentário enviado por sabe nada em 27/10/2022 - 16:45h


[1] Comentário enviado por mauricio123 em 23/10/2022 - 16:52h


Script bem completinho. Muito bom.

___________________________________________________________
Conhecimento não se Leva para o Túmulo.
https://github.com/mxnt10


Obrigado amigo.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts