Script ebook-manager
Publicado por Pedro Fernandes (última atualização em 07/09/2022)
[ Hits: 2.257 ]
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 # #################################################################################
Instalação do Java Runtime Environment em distros Debian-like
ZPenBoot - Gravando imagem ISO em um pendrive
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
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
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Problemas ao instalar o PHP (9)
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (0)
Não tô conseguindo baixar nada pelo terminal (5)
Wifi parou de funcionar no Inspirion N4050 com Debian 12 (1)