#!/usr/bin/python
# -*- coding: utf-8 -*-

# Autor: Matheus Rosa <matheus.sys@gmail.com>
# Data: 11/07/2010
# Descrição: Este script faz a conversão de arquivos MKV para AVI
# utilizando a ferramenta MEncoder

import sys
import os


def mostraInfo(info):
    '''Mostra as informações básicas do arquivo
    ''' 
    print '=' * 100
    print 'Arquivo MKV: ' + info['nomeArquivo']
    print 'Tamanho: ' + info['tamanho']
    print '=' * 100

def motraAjuda():
    '''Mostra o uso do script
    '''
    print 'Conversor de MKV para AVI por Matheus Rosa'
    print 'Uso: ' + sys.argv[0] + ' arquivo mkv'
    

def tamanhoLegivel(tamanho):
    '''Retorna o tamanho legível para humanos
    formatado
    '''
    sufixos = {1024: ['KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']}
    
    if tamanho < 0:
        return 'não foi possível obter o tamanho'
    
    for sufixo in sufixos[1024]:
        tamanho /= 1024
        
        if tamanho < 1024:
            return '{0:.1f} {1}'.format(tamanho, sufixo)
                
def main():
     if len(sys.argv) < 2:
        mostraAjuda()
     
     arquivo = sys.argv[1]
     
     if os.path.exists(arquivo):
        extensao = arquivo[-3:]
        tamanho = os.path.getsize(arquivo)
        
        if extensao == 'mkv':
            info = {'nomeArquivo':arquivo,'tamanho':tamanhoLegivel(tamanho)}
            mostraInfo(info)
            
            print 'Iniciando conversão...'
            os.system('mencoder ' + arquivo + ' -oac copy -ovc copy -o '+ arquivo[:-4] + '.avi')
            print 'Conversão concluída!'
            
        else:
            print 'Arquivo inválido. É necessário um arquvo MKV para continuar.'
     else:
        print 'Arquivo não existe'
        
if __name__ == '__main__':
    main()
