Script para embutir legendas em arquivos MKV

Já faz algum tempo que o VLC para Mac não carrega as legendas automaticamente. Nem a última versão 1.1.0 faz isso mais. E o Mkvtoolnix não é muito prático para utilizar com muitos arquivos, para juntar filmes e legendas. Foi por este motivo que resolvi fazer um pequeno script que utiliza o mkvmerge que acompanha o próprio Mkvtoolnix para automatizar a inclusão de legendas em filmes.

Ele está bem simples e é recomendado para aqueles que tem algum conhecimento de shell scripts. Ele pode ser facilmente utilizado em Linux também, possivelmente sem nenhuma necessidade de adaptação.

O padrão de funcionamento é o seguinte:

  • O script deve estar no mesmo diretório dos arquivos MKV e SRT;
  • Os arquivos MKV e suas respectivas legendas SRT devem ter o mesmo nome de arquivo (ignorando-se a extensão);
  • Eu fiz o script para juntar legendas em português. Caso a legenda seja em outro idioma, ajuste o trecho do comando “–language 0:por” para o idioma correto. Para saber qual o código correto do idioma, utilize o comando “mkvmerge –list-languages”;

Com pouca adaptação é possível melhorar o script para rodar de qualquer diretório, ser mais inteligente em achar legendas, etc., mas o meu problema este aqui já foi suficiente para resolver. Aproveite e boa sessão cinema! ;-)

#!/bin/bash

export IFS=$'\t\n'
for mkv in `ls -1 *.mkv`
do
	bname=`basename -s '.mkv' $mkv`
	srt=`echo "${bname}.srt"`
	newmkv=`echo "${bname}.MERGED.mkv"`

	mkvmerge -o "$newmkv" "$mkv" \
		--sub-charset 0:ISO-8859-1 --language 0:por --default-track 0:yes "$srt" \
		--track-order 0:1,0:2,1:0

	mv "$mkv" ~/.Trash/
	mv "$srt" ~/.Trash/
done
Posted in Apple, Bash, Dicas, Linux/Unix, Shell | Tagged , , , , , , , , , | Leave a comment

Ícones em branco no Mac? Simples…

Você já se assustou com o Finder mostrando ícones em branco em vários lugares ao mesmo tempo?

Aconteceu comigo umas duas ou três vezes. Me parece que quando utilizamos alguma aplicação graficamente intensa ao lado de outras aplicações, o Finder fica meio atrapalhado.

A solução é bem simples. Basta reiniciar o Finder. Não precisa reiniciar o computador inteiro.

Para fazer isto, pressione Command+Option+Esc, selecione o Finder na janela que aparecerá e clique em Relaunch.

Pronto, problema solucionado. Pelo menos funcionou comigo. Caso não funcione com você é só deixar um recado aqui, pois existe uma segunda possibilidade, um pouco menos simples.

Posted in Apple, Dicas | Tagged , , , , , | Leave a comment

New gem snmpstats

I developed a new gem that includes a command line script (snmpstats) and the class SNMP::Collector for basic information gathering through SNMP.

The script snmpstats can be very useful for system administrators because it simplifies some tasks and hides the SNMP’s boring side.

The git repository for the project can be found in the following url where you can also find a brief documentation about the script and the library: http://github.com/hgfischer/snmpstats

To install the gem, you only need to run the command bellow:

$ sudo gem install snmpstats

That’s all folks! ;-)

Posted in English, Linux/Unix, Programação, Ruby | Tagged , , , | Leave a comment

Nova gem snmpstats

Desenvolvi uma nova gem que inclui um script de linha de comando (snmpstats) e a classe SNMP::Collector para coleta de informações básicas via SNMP.

O comando snmpstats pode ser bastante útil para administradores de sistemas pois simplifica algumas tarefas e esconde o lado chato do SNMP.

O repositório git do projeto está aqui, onde também poderá encontrar uma breve documentação sobre o script e a biblioteca: http://github.com/hgfischer/snmpstats

Para instalar a gem, basta rodar o comando abaixo:

$ sudo gem install snmpstats
Posted in Linux/Unix, Programação, Ruby | Tagged , , , | Leave a comment

Dica de Ruby #1 – abort

Há algum tempo eu tenho estudado e praticado a linguagem Ruby. Desta forma, para registrar minhas descobertas vou postá-las como dicas neste blog.

A primeira dica é sobre escrever no stderr e interromper seu script quando acontece algo errado. Isto é uma prática comum dos hackers de UNIX.

Em Ruby existem muitas formas de se fazer algo e esta dica é um exemplo disto.

Então, ao invés de fazer isto:

STDERR.puts "Alguma coisa deu errado"
exit(1)

você pode fazer isto:

abort "Aguma coisa deu errado"

Para saber mais sobre o método abort, clique aqui.

É isso aí. ;-)

Posted in Programação, Ruby | Tagged , , , , | Leave a comment

Ruby Tip #1 – abort

For some time I have been studying and practicing the Ruby language. Thus, to register my discoveries I’ll post them as Ruby tips in this blog.

The first tip is about writing to stderr and quitting your script when something goes wrong. It’s a common practice for UNIX hackers do this.

In Ruby there is a lot of ways for doing something and this is one of the few examples.

So, instead of doing this:

STDERR.puts "Something gone wrong"
exit(1)

we can do this:

abort "Something gone wrong"

To know more about the abort method, click here.

That’s it. ;-)

Posted in English, Programação, Ruby | Tagged , , , | Leave a comment

Domain-Anagrams is now the gem Domainerator

Domainerator (ex-domain-anagrams) combines words plus TLDs (top-level-domains) to form domain names for all available combinations and checks them agains a specified DNS server to see if the domain name is available for registration.
The motive for the name change is because it’s not exactly an anagram generator and I had no reason to make it that way because the possibility of getting an interesting word with anagrams is unpredictable.

It not only had it’s name changed. It’s now a RubyGem also. This facilitates his usage.

To install it you only need to run this command:

$ sudo gem install domainerator

Automaticaly the domainerator can be called directly:

$ domainerator -h

Source code can be found here http://github.com/hgfischer/domainerator

Good luck! ;-)

Posted in English, Programação, Ruby | Tagged , , , , , | Leave a comment

Domain-Anagrams agora é a gem Domainerator

O domainerator (ex-domain-anagrams) combina palavras e TLDs (top-level-domains) para formar nomes de domínios em todas as possíveis combinações e verifica cada uma delas em um servidor de DNS específico para ver se o domínio está disponível para registro ou não.

O motivo da troca do nome é que ele não é exatamente um gerador de anagramas e não haveria razão para fazê-lo ser assim pois a possibilidade de conseguir uma palavra interessante com anagramas é imprevisível.

Não só teve seu nome trocado como também acabou virando uma RubyGem. Isto facilita seu uso.

Para instalá-lo basta rodar o comando abaixo:

$ sudo gem install domainerator

Automaticamente o domainerator fica disponível para ser executado diretamente:

$ domainerator -h

O código pode ser encontrado em http://github.com/hgfischer/domainerator

Bom proveito! ;-)

Posted in desconhecido | Tagged , , , , , | Leave a comment

Ejetando CDs ou DVDs presos em seu Mac

Eventualmente CDs e DVDs (mídias) danificados ficam presos no drive de um Mac e este não consegue ejetá-los.

Isto acontece porque o Mac OS X fica tentando ler as mídias e não consegue. Enquanto ele ficar tentando, ele não ejeta a mídia. Já me ocorreram algumas vezes, principalmente após uma sessão de gravação mal sucedida por conta de mídia de baixa qualidade ou riscada.

Fuçando na interwebs encontrei os comandos abaixo que podem ser utilizados para resolver este problema, sem precisar reiniciar o Mac.

Abra o Terminal e digite os comandos a seguir:

$ drutil open
$ drutil eject

Após alguns segundos a mídia será cuspida para fora do drive. ;-)

Posted in Apple, Shell | Tagged , , , , , | 1 Comment

Instalando a gem IDN no Mac OS X

A gem IDN serve para conversão de nomes de domínios no formato IDN. Ela depende da presença da libidn que normalmente não está presente no Mac OS X.

O processo de instalação é simples, mas tem um truque necessário para que a instalação da gem funcione.

$ sudo port install libidn
$ sudo gem install idn -- --with-idn-dir=/opt/local

O truque é a especificação do parâmetro –with-idn-dir que é necessário para que o instalador da gem encontre a libidn no diretório onde ela se encontra quando é instalada com o MacPorts. O diretório /opt/local/ é o padrão  do MacPorts. Caso tenha alterado este caminho quando configurou o MacPorts, é necessário alterar este parâmetro no comando.

Posted in Linux/Unix, Programação, Ruby | Leave a comment

Domain Anagrams

Em algum dia entre 2003 e 2004 eu precisava inventar um nome legal para registrar um domínio e estava ficando cansado de achar uma idéia e na hora de verificar descobrir que o domínio já estava registrado. Foram tantas verificações que eu resolvi automatizar este processo. E para aproveitar eu resolvi fazê-lo em Perl já que não era muito proficiente nesta linguagem de programação.

Recentemente comecei a pensar em um outro domínio para registrar e utilizar em uma idéia de projeto e quando vi o código do script antigo eu percebi o quanto aquilo poderia ser melhorado. Resolvi então refazê-lo em Ruby para praticar e incluir algumas funcionalidades novas.

O resultado pode ser encontrado no GitHub em http://github.com/hgfischer/domain-anagrams.

O script é simples e até que tem um número razoável de opções.

Posted in Programação, Ruby | Tagged , , , , , | Leave a comment

Cidade Flutuante

Este é o primeiro trabalho gráfico que desenvolvi junto com minha esposa e utilizando apenas fotos (nada de 3D como nos anteriores). Utilizamos uma foto do Mt. St. Michel na França e uma foto de montanhas dos Estados Unidos para compor o elemento principal. Também utilizamos uma foto de nuvens e algumas brushes para compor o restante da cena.

Cidade Flutuante

Cidade Flutuante

Posted in Arte | Tagged , , | 2 Comments

Snow Leopard, AppleScript e Adobe Unit Types

2009-11-10 22:30:49.907 osascript[5298:307] Error loading /Library/ScriptingAdditions/Adobe Unit Types.osax/Contents/MacOS/Adobe Unit Types:  dlopen(/Library/ScriptingAdditions/Adobe Unit Types.osax/Contents/MacOS/Adobe Unit Types, 262): no suitable image found.  Did find:

/Library/ScriptingAdditions/Adobe Unit Types.osax/Contents/MacOS/Adobe Unit Types: no matching architecture in universal wrapper

osascript: OpenScripting.framework - scripting addition "/Library/ScriptingAdditions/Adobe Unit Types.osax" declares no loadable handlers.

Caso você esteja tendo problemas em executar algum AppleScript e o erro seja algo parecido com o erro acima, aqui vai uma possível solução para o problema:

  1. Baixe a nova versão do Adobe Unit Types.osax (2.1.0) aqui;
  2. Faça uma cópia de segurança do arquivo /Library/ScriptingAdditions/Adobe Unit Types.osax em outro diretório, fora desde diretório;
  3. Descompacte o novo Adobe Unit Types.osax (caso não tenha sido descompactado automaticamente pelo navegador);
  4. Mova o novo Adobe Unit Types.osax para o diretório /Library/ScriptingAdditions/;
  5. Não é necessário reiniciar o computador, mas como pode haver algum programa aberto que depende deste arquivo, é recomendado fazê-lo.

Referências

Error about unit type conversion occurs when you run an AppleScript in Photoshop (Mac OS X 10.6) – acessado em 11/nov/2009

Posted in Apple, AppleScript | Leave a comment

VLC media player no Snow Leopard

Com o lançamento do Snow Leopard, muitos softwares que funcionavam bem com versões anteriores do Mac OS X tiveram alguns problemas. Isto se deve ao fato de que o Snow Leopard é um passo importante na adoção da plataforma 64bits como padrão. Além disso o Snow Leopard introduziu alterações consideráveis em algumas APIs e novos recursos internos.

Uma das aplicações que utilizo que tem dado mais dores de cabeça é o VLC. O VLC é um media player fantástico. Ele tem versões para as principais plataformas (Mac, Win, Linux, etc) e é super leve e poderoso. O VLC também inclui suporte para centenas de formatos de arquivos.

No Snow Leopard o VLC, na versão 1.0.2, vem apresentando diversos problemas com estabilidade, exibição de legendas, etc. O principal motivo é que o VLC deu um passo adiante e criou uma versão 64bits para o Snow Leopard.

Se, assim como eu, estes problemas estão atrapalhando seu horário de entretenimento e lazer, aqui vai algumas dicas que me ajudaram bastante:

  • Baixe a versão 32bits do VLC até que versões futuras do VLC 64bits estejam funcionando melhor;
  • Limpe as preferências com a ferramenta que acompanha o VLC (dentro do DMG);
  • Utilize legendas com codificação ISO-8859-1. Há programas que convertem a codificação de caracteres para você. Um deles é o iconv que pode ser instalado com MacPorts. O TextMate também pode ser utilizado para converter a codificação das legendas.
  • Se mesmo assim os problemas continuarem, acesse o fórum do VLC e informe o problema que está tendo para conseguir alguma ajuda.

Por enquanto é só.

Posted in Apple, Dicas | Tagged , , , , , , | Leave a comment

Separadores no Bash

Quantas vezes já foi obrigado a refazer um script em outra linguagem quando se deparou com um for que recebia valores com espaços e não sabia como resolver isto diretamente no Bash?

Eu mesmo já fiz isto algumas vezes. Mesmo quando sabia que era possível consertar o problema no próprio Bash eu acabava partindo para o novo script pois encontrava um pouco de dificuldade de encontrar documentação sobre isto. O manual do Bash não ajuda muito na forma correta de se configurar a variável IFS.

IFS (Internal Field Separator) é uma variável que permite configurar quais são os caracteres que o Bash considera serem separadores de campos. E é com o IFS que o loop for sabe separar os itens dentro de uma string ou dentre várias linhas.

O IFS padrão é configurado para separar campos com espaços, tabulações e linhas.

Para alterar o valor do IFS para não separar campos com espaços, basta utilizar o comando abaixo:

export IFS=$'\t\n'

Agora quando quiser efetuar alguma tarefa numa lista de arquivos que tem espaços em seu nome, não terá problemas. Veja o exemplo:

export IFS=$'\t\n'
for f in `ls -1`
do
    echo $f
done
Posted in Bash, Linux/Unix, Shell | Tagged , , , , , | Leave a comment