sábado, 23 de fevereiro de 2008

Python for the masses!!!

O caso é o seguinte, minha amiga Karen, ontem veio me falar, com o jeitinho de Karen dela, que precisava converter alguns arquivos ogg para o mp3 dela. Bem, o mp3 dela, ironicamente, só roda mp3 :D! Como não me ocorreu imediatamente uma ferramenta que fizesse a tediosa tarefa de converter todos os arquivos de uma determinada pasta para mim, resolvi fazer o meu próprio programa. Bem, antes de fazer o meu, procurei algo que fizesse algo parecido com o que eu queria. Achei um script que fazia a tarefa, só que o bixin não funcionava direito. Tinha um bug. Pois é, muito triste.
De qualquer forma, fiz o meu script baseado no dele. Ficou até bonitinho! Tow orgulhoso ^^.
Bem, aqui está :


# -*- coding: utf-8 -*-
import os, sys, glob
from subprocess import Popen, PIPE
from optparse import OptionParser

def process(folder, bitrate, keep_wav):
# pega os arquicos do local especificado
arqs = [ os.path.splitext(arq)[0] for arq in glob.glob( os.path.join(folder,"*.ogg") )]
# ordena os bixin
arqs.sort()

for arq in arqs:
# transforma o arquivo para wav
Popen( ("oggdec", "%s.ogg" % arq,), ).wait()

# transforma o arquivo para mp3
print "Convertendo `%s` para mp3" % arq
p = Popen( ("lame", "-b 128", "%s.wav" % arq, "%s.mp3" % arq,), stdout=PIPE,stderr=PIPE )
print "Terminando ultimo processo..."
stdout, stderr = p.communicate()

if not keep_wav:
print "Removendo arquivos .wav"
for arq in arqs:
os.remove("%s.wav" % arq)
print "Fim..."

if __name__=="__main__":
uso = """: python %prog [options]
Este Programa converte todos os arquivos de uma pasta do formato ogg para mp3.
Requesitos: os programas oggdec e lame devem estar instalados"""
parser = OptionParser(usage=uso, version="%prog 1.0" )
parser.add_option("-s", "--source", default="", help=u"Diretório onde estão seus arquivos .ogg")
parser.add_option("-b", "--bitrate", default=128, type="int", help=u"Bitrate das mp3 geradas (ex:-b 128, --bitrate=160)")
parser.add_option("-k", "--keep-wav", default=False, action="store_true", \
help=u"""Caso a opção -k seja fornecida, os arquivos wav não serão apagados ao fim do processo""")
try:
# pega as opções do programa
(options, args) = parser.parse_args()
except:
print "ocorreu um erro"
exit()
if options.keep_wav:
print "Os arquivos .wav serão mantidos"
else:
print "Os arquivos .wav serão apagados ao fim do processo"
if options.source:
print "Os arquivos da pasta atual serão usados"
else:
print "Serão usados os arquivos do diretório %s" % options.source
print "Será utilizado o bitrate %d para converter as mp3" % options.bitrate
# executa o programa
process(options.source, options.bitrate, options.keep_wav)


Criem um arquivo chamado ogg2mp3.py e coloquem o conteúdo acima dentro. Roda que é uma beleza! Necessita do Lame e oggdec instalados. Testei esse programa no ubuntu gutsy e rodou sussa. Abraço!

ps: começo a achar que não sou humano viu! Essas caxinhas de verificação de palavras são uma pustema na minha vida >__>
ps2: essas caixinhas servem para impedir que bots, programas que fingem ser usuários, criem postagens e respostas automaticamente; normalmente difundindo spam e propaganda não solicitada.

Um comentário:

Anônimo disse...

'jeitinho Karen' é ótimo viu?!
ela chega a ser mais 'carinhosa' do que eu! xDDD

legal esse script! =D
mas arquivo com extensão ogg é o que? oO"

essas caixinhas sempre dão erro comigo! T_T

tá Italo, todo mundo sabe que se esfregar a tinta branca da tua pele, aparece o verde natural em baixo! precisa sair espalhando pra todo mundo não! xDDD

beijooooooooo!

Arquivo do blog