Romulloares

Realizando operações em loop

22/10/2019 - 22h45Alguém leu nos últimos 5 minutos0 comments
image
Pic: glhrmarques (Brother meu)

Geralmente eu gosto muito de sexta, é um ponto final no stress semanal para fazer algo diferente e enfim quebrar a rotina, nessa sexta em si eu ia sair com uma mina que eu estava a afim a uma boa cota já. Chamei no Instagram trocamos os números de celular, papo vai e papo vem enfim tínhamos um encontrossss. Pensei comigo: "ORRA JAO vou sair com uma menininha daora hoje", ela pediu para nos encontrarmos por volta das 21h30 na estação próxima de casa. Programei minha agenda para conseguir ver ela a tempo, porém bem na hora de ir embora, um amigo meu me pediu um favor: "Cara tenho 3 discos com cerca de 50-60 faixas em cada, você pode converter o formato de todas para mp3?"

Pensei comigo mesmo: "PQP me lasquei zzz", mas esse cara é sensacional não poderia deixar ele na mão, então acatei a tarefa. Tinha cerca de 30 min para fazer isso, considerando a taxa de transferência dos discos e minha ida ao banheiro me deixaram com 20 minutos úteis para alguma coisa, embora sempre eu me atrase para compromissos, odeio fazer isso e hoje estava destinado a não fazer. Depois que fui ao banheiro e fiz as cópias dos discos para minha área de trabalho. Tinha o primeiro problema achar um utilitário para converter as faixas para MP3 e testar para ver se aquilo realmente funcionava. Utilizo CentOS 7 então essa foi fácil de resolver utilizei o FFmpeg, achei algumas recomendações bacanas desse cara na internet, então para colocar ele na minha máquina:

					    
sudo yum update -y
sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
sudo yum install ffmpeg ffmpeg-devel -y
ffmpeg
					    
				    

Na primeira linha atualizei o meu gerenciador de pacotes, na segunda instalei um pacote que era pré requisito dessa ferramenta utilizando rpm. Na terceira finalmente instalei a ferramenta e na última testei a mesma. SUCESSO! Já tinha o cara em mãos e já estava dentro da pasta onde tinha o conteúdo, contei os arquivos com um RScont (Esse comando fica para outro post rs) e voltou 183 faixas. Já estava pensando em desmarcar o encontrinho, mas não gosto de voltar atrás com minha palavra (Sim! Gosto de Naruto ksks) e pensei como eu faria para aquilo se repetir N vezes sem eu precisar ficar colocando um a um.

Para minha sorte ás faixas dos discos estavam numeradas de 1-183 o que facilitou a logica, seguindo esse modelo 1-music.wma ... 183-music.wma. Com isso já tinha algo estruturado que seria mais ou menos assim:

Passo a passo para resolver o problema:
  • Montar uma RegEX para indentificar esse padrão.
  • Realizar um loop para fazer em todos os arquivos do diretório.
  • E enviar para algum lugar que o meu amigo possa pegar de maneira automática.

Com o horário passando estava pensando em deixar para lá ou para amanhã, mas ele precisava para hoje e estava contando comigo e não poderia deixar ele na mão, mesmo que faltasse cerca de 15 minutos para não me atrasar.

Reflexão do post:

"Aqueles que rompem as regras são escórias, é verdade. Mas aqueles que abandonam seus amigos são piores que a escória."

Kakashi Hatake

Com esse pensamento do cara*** tentei me motivar a entregar a tarefa logo (não ajudou muito não akak), mas enfim voltando como na lista de arquivos apenas o número mudava entre um é outro: *-music.wma, já resolvia minha vida.

Agora tinha que executar o comando de maneira que pegasse todos os arquivos, teoricamente era simples só jogar em um for e no final zipar tudo em um único arquivo, deu um pouco de trabalho a execucao mas no final deu certo.

Por fim tinha o acesso remoto, um scp já resolvia mas e a SENHA? Como iria digitar depois? Dei outra googlada com menos de 10 min de tempo útil e achei uma solução, chumbar em uma variável isso (NÃO É NADA SEGURO E NEM RECOMENDO MAS FICA O CONHECIMENTO QUE DA KKK), foi ai que conheci um cara chamado ssh-pass, nativamente o scp por si só, não suporta algum parametro como senha mas com o ssh-pass sim. No final temos esse cara aqui:

					    
#!/bin/bash
#for para executar o comando 183 vezes para converter todas as musicas
for i in {1..183}
do
ffmpeg -i *-music.wma -acodec libmp3lame -ab 128k *-music.mp3
done
#transformando tudo em um unico arquivo 
zip tudo-em-mp3 *
#Copiando para o diretorio compartilhado que temos
sshpass -p 'password' scp /users/meuusuario/desktop/faixas/tudo-em-mp3.zip root@xxx.xxx.xxx.xxx:/tmp/
					    
				    

Joguei isso dentro de um ".sh" e executei a instrucao como "bash favor.sh", no final deu tudo certo chegou uma mensagem no meu celular "Obrigado estou te devendo uma!" e meu amigo ficou feliz por escutar suas faixas no formato desejado. Consegui passar em casa tomar um banho e ir, peguei o carro nos encontramos na estacao e... bem isso fica para mim mesmo kaka