Script ebook-manager

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

[ Hits: 2.529 ]

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 acionamento de GPIO para Relé Raspberry Pi

Procura 1.0

Manipular serviços no Runit (Void Linux)

Instalação de pacotes em uma lista

Usando dialog para adiciona usuários no squid


  

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