Script ebook-manager
Publicado por Pedro Fernandes (última atualização em 07/09/2022)
[ Hits: 2.243 ]
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 # #################################################################################
Encerrar sessão no terminal com tempo definido
Criando usuário e configurando o sudo através de script no Slackware
Download de Wallpapers de Fotos do Espaço
Usando o google pra gerar um tradutor em modo texto
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
SysAdmin ou DevOps: Qual curso inicial pra essa área? (0)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código (3)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta