Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # SCRIPT FEITO PARA SER USADO NAS AÇÕES PERSONALISADAS DO THUNAR.
- # SEGUNDA VERSÃO DEPOIS DE DISCUÇÃO EM LISTA DE SHELL SCRIPT
- # DEPENDE DO BASH, ZENITY E MP3GAIN
- # Verifica se sexiste ao menos um arquivo de entrada.
- if [ ! -n "$1" ]; then
- # Emite mensagem de erro, caso nada seja encontrado como parâmetro de entrada.
- zenity --info --title="Erro!" --text="Falta o arquivo de entrada.\n\nNenhum processo realizado."
- else
- arquivo="/home/$USER/.enviarParaMP4-pontoDeMontagem"
- # Se o arquivo $arquivo existir, carrega seu conteúdo em $dispositivo.
- [ -f "$arquivo" ]; read dispositivo < $arquivo
- # Verifica que a variável $dispositovo possui qualquer coisa diferente de vazio.
- if [ -n "$dispositivo" ]; then
- # Verifica se o dispositivo está montado. Lembrando que sua pasta não é fixa no /media.
- if [ -d "$dispositivo" ]; then
- nok=""
- else
- nok="nok"
- [ -f "$arquivo" ]; rm "$arquivo"
- fi
- else
- nok="nok"
- [ -f "$arquivo" ]; rm "$arquivo"
- fi
- # Se $dispositivo não foi caregada corretamente, ou a pasta de montagem do aparelho não foi encontrada, tenta encontrá-lo.
- if [ "$nok" == "nok" ]; then
- dispositivoSerial="觛迦烶觓∑ፉ倢獓穓㨓┖슷⑲"
- # O subshel dessa linha retorna o número do dispositivo.
- read dispositivo <<< $(find "/proc/scsi/usb-storage/" -type f -exec grep -l "$dispositivoSerial" {} \+ | awk -F '/' '{print "sd "$5}' | tail -n1)
- # Verifica que a variável $dispositovo possui qualquer coisa diferente de vazio.
- if [ -n "$dispositivo" ]; then
- # O subshel dessa linha retorna o "device" do dispositivo.
- read dispositivo <<< $(dmesg | grep -e "$dispositivo.*\[.*Attached" | sed -e 's/^.*\[//g ; s/\].*$//g' | tail -n1)
- # Nessa linha o subshel retorna o ponto de montagem do dispositivo.
- read dispositivo <<< $(mount | grep -i "$dispositivo" | awk '{print $3}')
- # Verifica que a variável $dispositovo possui qualquer coisa diferente de vazio.
- if [ -n "$dispositivo" ]; then
- echo $dispositivo>"$arquivo"
- else
- # Se a variável $dispositivo estiver vazia, uma mensagem de erro é emitida.
- zenity --info --title="Erro!" --text="Infelizmente o dispositivo não foi encontrado."
- fi
- else
- # Se a variável $dispositivo estiver vazia, uma mensagem de erro é emitida.
- zenity --info --title="Erro!" --text="Infelizmente o dispositivo não foi encontrado."
- fi
- fi
- # Torna a verificar se a variável $dispositivo contém o caminho de um diretório válido.
- if [ -d "$dispositivo" ]; then
- pastaDeMusicas="$dispositivo/musicas"
- # Cria pasta de músicas na raíz do dispositivo, se ela não existir.
- mkdir -p "$pastaDeMusicas"
- read quantidadeMP3 <<< $(ls "$pastaDeMusicas/*.mp3" | wc -l)
- # Na linha abaixo, o subshell retorna o tamanho livre, em MB, do dispositivo - 100KB. Solucão encontrada para reservar 100KB para os arquivos de configuração do aparelho.
- read tamDispositivo <<< $(df |w grep "$dispositivo" | sed -e "s/\([a-z0-9/]* *\)\{4\}[0-9a-zA-Z/% -]*/\1\/1024-0.1/" | bc -l | sed -e "s/\([0-9]*\.[0-9]\{3\}\)[0-9]*/\1/; s/\.//g");
- while read mp3; do
- # O subshell retorna somente o nome da música.mp3.
- read musicaAtual <<< $(echo "$mp3" | sed -e "s/^\/[[:alpha:][:digit:][:punct:] ]*\/\([[:alpha:][:digit:][:punct:] ]*\.mp3\)/\1/")
- # Aqui o subshell retorna o tamanho em MB da música.mp3.
- read tamMP3 <<< $(stat -c "%s" "$mp3" | sed -e "s/[0-9]*/&\/1024\/1024/g" | bc -l | sed -e "s/\([0-9]*\.[0-9]\{3\}\)[0-9]*/\1/; s/\.//g");
- # Calcula o tamanho restante do dispositivo.
- let tamRestante=$tamDispositivo-$tamMP3
- # O tamanho da música.mp3 é menor que o espaço restante no dispositivo?
- if [ $tamMP3 -lt $tamRestante ]; then
- # A música.mp3 já existe no dispositivo?
- if [ ! -f "$pastaDeMusicas/$musicaAtual" ]; then
- # O a pasta de músicas contém menos que 999 músicas?
- if [ $quantidadeMP3 -lt 999 ]; then
- # Copia a música.
- cp "$mp3" "$pastaDeMusicas"
- # Adiciona +1 na quantidade de músicas
- let $quantidadeMP3=$quantidadeMP3+1
- # Sleep 3: Tentativa de corrigir erro em que depois de copiada a música.mp3 o mp3gain não encontra. Acho que é algum atraso de cópia. Ainda estou testando.
- sleep 3
- # Normaliza a música.mp3 para volume de 89db sem que haja "pontos surdos".
- mp3gain -r -k "$pastaDeMusicas/$musicaAtual"
- else
- # Se houver mais de 999 músicas.
- msgErro=" Infelizmente houve o seguinte erro:\nO número máximo de arquivos foi atingido. Há 999 músicas.\n\nOperação cancelada."
- break
- fi
- fi
- else
- # Se a música.mp3 for maior que a capacidade do dispositivo, seta $capacidade e quebra o laço while.
- msgErro=" Infelizmente houve o seguinte erro:\nSeu dispositivo não possui espaço\nsuficiente para executar a cópia \ndo arquivo $musicaAtual e os demais.\n\nOperação cancelada."
- break
- fi
- # O subshel da linha abaixo, retorna uma lista dos arquivos de entrada; um por caminho linha.
- done <<< $(echo "$*" | sed -e "s/ \//\n\//g" | grep ".mp3")
- # Se a variável $capacidade possuir o conteúdo "capacidade", emite mensagem de erro. Caso contrário, emite mensagem que o processo foi concluído.
- if [ -n "$msgErro" ]; then
- zenity --info --title="Erro!" --text="$msnErro"
- else
- zenity --info --title="Transferência finalizada!" --text=" Os arquivos selecionados foram\ntrasnferidos e normalizados com sucesso!"
- fi
- fi
- fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement