Arquivos 2018

04
outubro 2018

Listagem de Nomes Aleatórios em Shell e Zenity

Escrito por Mario Medeiros 1 comentário

Este artigo (nem sei se poderíamos chamar de artigo, mas vai assim mesmo), é bem curto e com um código bem simples. Gerar um lista de itens aleatória com base em uma lista pré-definida.

Com base em um arquivo txt com nomes (organizado com um nome por linha, claro), o script lê o arquivo texto e gera uma outra lista na tela com as linhas ordenadas de forma aleatória.

Super básico e simples. Serve para uso em sorteios de brindes e outros. Pode-se limitar o resultado pela tela de número de itens a ser mostrado. Se caso não for passado nenhum parâmetro, o script retorna por padrão, 10 itens.

O código está no github

Segue abaixo o código, em shell e Zenity.

#!/bin/bash
#
#Script simples em bash com zenity, para sorteio de nomes de uma lista em txt
#Seleciona arquivo organizado com nomes por linhas, embaralha o conteúdo de
#forma aleatória (randomica) e mostra na tela a quantidade de itens selecionados
#
#Autor: Mario Medeiros
#Nome Aplicação: Sorteio
#Nome Arquivo: sorteio.sh
#Data: 2018-10-04
#Versão: 1.0.0
#
#Dependências: Zenity
#
#########################################################################

arquivo=$(zenity --file-selection --title="Selecione Um Arquivo de Lista")
numero=$(zenity --entry --text="Digite O Número De Itens" --title="Número De Itens Da Lista")
cat $arquivo | sort -R | head -$numero | zenity --text-info --auto-scroll --width=500 --height=500

Categorizado em : Linux Tags : sem tags


24
julho 2018

Baixando Letras De Músicas Do Site DarkLyrics

Escrito por Mario Medeiros 1 comentário

Existem espalhados pelas “infernets e infer-webs” uma variedade enorme de sites com as letras de músicas, das mais variadas bandas e estilos. Até ai, nada de mais.

Quando se pretende somente uma letra ou duas, é só procurar um pouco, acessar o site e ler ou até mesmo copiar a letra, se quiser.

A idéia aqui é salvar ou baixar/copiar as letras de forma um tanto quanto que automatizada, utilizando como motivador a Soberana Preguiça, com ferramentas Linux, em Shell Script. Lembrando que é uma solução bem simples e básica para um problema ou necessidade pessoal bem específica e que talvez possa ser ajustada para outras necessidades e situações.

Vamos aos detalhes.

1 – Estilo de música: metal

2 – Site das letras: www.darklyrics.com

3 – O que baixar: lista de álbuns, letras de músicas individuais e/ou das músicas dos álbuns.

Como disse, é uma situação bem específica e pessoal.

O site possui um padrão de organização que facilitou bem a montagem do script.

A estrutura do site segue a seguinte lógica:

Link da banda: http://www.darklyrics.com/i/inflames.html

Site, letra inicial do nome da banda, nome da banda (página com os links para os álbuns).

Link para os álbuns, por exemplo banda In Flames, álbum Battles:

http://www.darklyrics.com/lyrics/inflames/battles.html

Observe que há diferenças de caminhos quando se trata da banda e dos álbuns da mesma. Seguindo o padrão, foi relativamente fácil lidar as variáveis “banda”, “album” e “letra”.

Para chegar até a banda, segue a inicial depois o nome da banda. Para os álbuns e letras, coloca-se no caminho, o “lyrics” a “banda” e depois o “album”.

O script tem as seguintes funções, conforme o menu abaixo:

 

1 - Listar albums da banda

2 - Escolher album da banda

3 - Gravar em arquivo lista de albuns

4 - Gravar em arquivo letras do album

z - Sair - Sai do Sistema

 

As opções 3 e 4, que são as mais interessantes, permitem baixar e gravar em arquivo a lista de álbuns e as letras de um álbum específico, que for informado para o script, por exemplo:

 

-----------------Escolha uma opção---------------------

 

1 - Listar albums da banda

2 - Escolher album da banda

3 - Gravar em arquivo lista de albuns

4 - Gravar em arquivo letras do album

z - Sair - Sai do Sistema

 

-----------------Escolha uma opção---------------------

 

Escolha uma das opcoes acima [1-2-3-4-z]: 4

Nome da banda sem espacos

 

inflames

Nome do album sem espacos

 

battles

O arquivo será salvo em dois formatos, txt e html, com o nome do álbum, da seguinte forma:

letras-battles.txt

letras-battles.html

O formato em txt já é suficiente para poder ser utilizável em qualquer editor de texto que queira. Fiz uma saída em html, para se ter mais uma opção. Pode-se utilizar em qualquer layout HTML/CSS, desde que faça os ajustes necessários.

Eu utilizei o layout do site HTML5UP (http://html5up.net/), tema Halcyonic, que me atendeu conforme eu necessitava.

No demais, o script é um tanto quanto que intuitivo. Vou deixar o link com o script e os arquivos de modelo em html e css do layout acima mencionado. Crie um diretório no seu home com um nome qualquer que facilite o uso, como por exemplo, letras e mantenha todos no mesmo diretório de trabalho, com a seguinte estrutura:

 

Arquivos:

dark-lyrics-dolores.sh

model.html

Diretórios:

├── assets

│   ├── css

│   │   └── images

│   │   └── ie

│   ├── js

│   │   └── ie

│   └── sass

│   └── libs

├── css

└── fonts

 

Quando a opção 3 e/ou 4 forem utilizadas, serão gravados os arquivos nos dois formatos, txt e html. Escolha o que for mais interessante para sua necessidade.

Obs: este script foi feito em 2017-04-13 e está ainda na versão 0.1. Não postei antes devido a outros contratempos que tiveram maior prioridade. Não fiz nenhuma revisão desde então. Caso haja algum bug (e normalmente sempre tem) ou algo que não funcione adequadamente, pode-se optar em no mínimo, duas escolhas: me contatar e informar sobre o problema ou resolver por conta própria. A segunda opção é interessante hein, uma vez que pode lhe trazer um aprendizado novo. Mas, caso haja algum contratempo, mande um e-mail que tentarei resolver no menor tempo possível, ainda nesta eternidade.

Clique aqui para baixar o script e os arquivos.

Categorizado em : Linux Tags : sem tags


25
avril 2018

Convertendo bitrate de arquivos MP3 em lote mantendo nomes e outros atributos

Escrito por Mario Medeiros não comentários

E eis que um belo dia seu aparelho celular ou smartphone (tanto faz), lhe alerta que você não tem mais espaço para colocar nem mesmo uma musiquinha do tamanho da vinheta de programa televisivo de domingo.

Seu poderoso AiFoni já ocupou todo seu 1 bit (é isso mesmo, bit, não é Yota Bytes não) de armazenamento. Tá bom, tá bom, exagerei um pouco.

Mas o cenário é o seguinte: tudo que é mp3 que tem no seu aparelho móvel está em 320kbp/s, ocupando mais espaço que o necessário. Imagina ter uns 32 GB só de MP3, tudo em alta qualidade. Até aí tudo ótimo. Na verdade não é bem assim. Outros recursos começam a brigar para ocupar os réles mega bytes, até mesmo kilo bytes de espaço que estão misteriosamente, desaparecendo.

Vamos resolver isso, apagar tudo que é inutilidade do treko. Começando pelas fotos tiradas no carnaval, quando você estava fantasiado de melancia com farinha na praia, mas espera ai, essas fotos já foram retiradas/copiadas por medida de segurança, claro.

Xiiiiii, então ficaram os aplicativos. Fácil!! Remove os inúteis!!!

Tá bom, aqueles aplicativos de astrologia e auto-ajuda não podem sair. São “extremamente necessários e importantes” para você. Entendo. Então apaga tudo os seus mp3 de fanqui, de sertanojo breganejo, electro-brega e afins.

Não?? Não pode também??? Tá certo!! Gosto não se discute, se lamenta!!

Mas então que tal, liberar espaço no treko, sem apagar as fotos de qualidade duvidosa, os aplicativos “sérios” e manter seus mp3 de “alto nível”? Gostou da idéia? Então vamos fazer o seguinte: reduzir o tamanho dos MP3s sem perda perceptível de qualidade de áudio (qualidade de áudio, não das músicas em si. Esse é um outro problema, fora desse escopo).

Reduzir o bitrate de cada uma das músicas, vai reduzir até mais da metade do tamanho dos arquivos e liberar espaço necessário no aparelho.

Lembrando que deverá apagar os arquivos originais e colocar os outros convertidos.

Infelizmente, da forma que solucionei esse problema, não faz o próprio arquivo no aparelho reduzir de tamanho por mágica. Não é essa a idéia!!

Um script em shell lista os arquivos e os converte, copiando em outro diretório, mantendo os atributos do mesmo, mudando somente o bitrate e consequentemente seu tamanho.

O script está comentado cada linha, facilitando o entendimento, espero.

Adapte de acordo com suas necessidades. Melhorias e críticas são bem-vindas.

Segue abaixo o script:

###############################################

#!/bin/bash
#
#Descricao: script conversor de bitrate em mp3 - vários diretórios em lote.
#resultado final: diretorios e arquivos novos, conservando os nomes originais
#como subdiretorios do diretorio de nome 128 (bitrate convertido a 128 kbp/s)
#
#O script le um diretorio/subdiretorio com arquivos mp3 e gera uma lista
#em arquivo txt. Nesta lista há somente o nome do diretório, não seus arquivos.
#A partir desta lista, gera o diretório 128 com subdiretório como nome original.
#
#O script lê cada diretório listando somente os arquivos com extensão mp3 e
#converte os mesmos para bitrate 128 kbp/s, mantendo o nome original e os
#metadados ID3 ou ID2, se houver.
#
#Dependências: biblioteca lame, sed (este último não sendo obrigatório - leia
#a linha onde ele é utilizado e veja se é realmente necessário).
#
#Observação 0: manter aspas simples e duplas como estão dispostas no script
#Observação 1: o script segue a seguinte ordem:
#o ls com parâmetros, lê o diretório raiz onde se encontra o script, grava a
#saída em arquivo texto, usa o cat com while fazer um loop de leitura e envia
#para o echo gerar o script com os dados do arquivo txt gerado no início.
#ao final, gera o arquivo com os parâmetros e comandos do lame converter os
#arquivos mp3, criando os diretórios específicos e respectivos de cada diretório
#original.
#ao término de cada diretório, inicia-se a criação do próximo e a conversão
#dos respectivos arquivos mp3, até o final da lista.
#Observação 2: é recomendado remover os arquivos txt e sh gerados pelo script,
#uma vez que por qualquer motivo, rodar este script novamente no mesmo diretório
#estes mesmos arquivos poderão conflitar com o comandos do script gerador.
#
#Data: 2018-04-24
#Autor: Mario Medeiros
#Versao: 0.1
############################################################################
############################################################################

#lista somente os diretórios do diretório raiz do script
#gera o arquivo com os nomes do diretórios em lista
ls -F | grep "/" > lista-dir.txt

#cat lê o arquivo com a lista dos diretórios gerado pelo ls
#o echo grava no arquivo lista-dir.txt os parâmetros do script para iniciar a
#conversão dos arquivos
cat lista-dir.txt | while read line
do
echo 'mkdir -p "128/'$line'" && cd "'$line'" ; for f in *.mp3 ; do lame --mp3input -b 128 "$f" "../128/'$line'"/"$f" ; done
cd ..' >> 666-converter.txt
done

#script gerado, em formato txt, é copiado com extensão sh
cp 666-converter.txt 666-converter.sh &&

#o sed adiciona a instrucao no arquivo para ser um shellscript
#é mais um detalhe do que uma obrigatoriedade.
#tentando deixar o mais legal possível
sed -e '1i\' -e '#!/bin/bash' -i 666-converter.sh &&

#deixa o arquivo executável
chmod +x 666-converter.sh &&

#executa o script para iniciar a conversão dos mp3s
./666-converter.sh

Categorizado em : Linux Tags : sem tags


-