Tiago Madeira Inferências aleatórias de um cérebro em versão alpha

"Só se dedicará a um assunto com toda a seriedade alguém que esteja envolvido de modo imediato e que se ocupe dele com amor. É sempre de tais pessoas, e não dos assalariados, que vêm as grandes descobertas."
(Arthur Schopenhauer)

Solução automática

Baixei via bittorrent os oito primeiros capítulos de The Big Bang Theory. Demorou quase uma semana porque fiz várias pausas, mas enfim consegui meus oito AVIs. Então, abri a pasta e vi que o nome deles é de The Big Bang Theory 101.avi até The Big Bang Theory 108.avi. Não é um problema, mas não gosto de nomes com espaço.

Solução óbvia? Renomear todos. Como faremos isso? As pessoas normais diriam: entrando no Nautilus, apertando F2 em cima de cada um e escrevendo o novo nome. Porém, o Tiago, num momento bem nerd, resolveu automatizar: basta criar um script em Ruby. Lá fui eu:

tiago@flick:~/The Big Bang Theory$ irb
irb(main):001:0> `ls`.to_a
=> ["The Big Bang Theory 101.avi\n", "The Big Bang Theory 102.avi\n", "The Big Bang Theory 103.avi\n", "The Big Bang Theory 104.avi\n", "The Big Bang Theory 105.avi\n", "The Big Bang Theory 106.avi\n", "The Big Bang Theory 107.avi\n", "The Big Bang Theory 108.avi\n"]
irb(main):002:0> `ls`.to_a.each{|i| i.trim}
NoMethodError: undefined method `trim' for "The Big Bang Theory 101.avi\n":String
        from (irb):2
        from (irb):2:in `each'
        from (irb):2
        from :0
irb(main):003:0> `ls`.to_a.each{|i| i.}
Display all 496 possibilities? (y or n)
irb(main):003:0> `ls`.to_a.each{|i| i.strip}
=> ["The Big Bang Theory 101.avi\n", "The Big Bang Theory 102.avi\n", "The Big Bang Theory 103.avi\n", "The Big Bang Theory 104.avi\n", "The Big Bang Theory 105.avi\n", "The Big Bang Theory 106.avi\n", "The Big Bang Theory 107.avi\n", "The Big Bang Theory 108.avi\n"]
irb(main):004:0> `ls`.to_a.each{|i| i.chomp}
=> ["The Big Bang Theory 101.avi\n", "The Big Bang Theory 102.avi\n", "The Big Bang Theory 103.avi\n", "The Big Bang Theory 104.avi\n", "The Big Bang Theory 105.avi\n", "The Big Bang Theory 106.avi\n", "The Big Bang Theory 107.avi\n", "The Big Bang Theory 108.avi\n"]
irb(main):005:0> `ls`.to_a.each{|i| i.chomp!}
=> ["The Big Bang Theory 101.avi", "The Big Bang Theory 102.avi", "The Big Bang Theory 103.avi", "The Big Bang Theory 104.avi", "The Big Bang Theory 105.avi", "The Big Bang Theory 106.avi", "The Big Bang Theory 107.avi", "The Big Bang Theory 108.avi"]
...
irb(main):017:0> `ls`.to_a.each{|i| `mv '#{i.chomp}' #{i.chomp.gsub(/^[^0-9]*/, '').gsub(/^./, 'S01E')}`}

Enfim, renomeados. Devo ter levado quase uns dois minutos, creio que mais do que levaria no Nautilus. Moral da história: nem sempre a solução automática é a mais rápida. Eu sempre tenho essa mania de deixar os problemas mais difíceis do que eles realmente são... Me digam: isso acontece com todos os programadores ou só comigo?

Ah! Agora o lado positivo: quando fui renomear as legendas (no formato The.Big.Bang.Theory.S01E01.HDTV.XviD-XOR.srt), já que eu já tinha esse modelo foi mais fácil; demorei somente cerca de 20s pra adaptá-lo. :)

Technorati Tags: , , ,

Compare Preços de: iPod, home theater, plasma, lcd, câmeras digitais, games, ps3

Escrito por Tiago Madeira no dia 06/12/2007 às 07h 36min. Acompanhe os comentários via RSS 2.0. Você pode deixar um comentário ou fazer um trackback do seu site.

5 comentários para “Solução automática”

  1. #1 | Cosme Faé

    Muuuuito boa.
    É coisa de programador mesmo dificultar… mas o que pra uns é dificultar, pra outros é uma solução bem flexível.

    Exemplo: lá no trabalho um programador fez um dado em PHP (usou uma função ai - e não vetor como eu faria) isso porque o amigo dele não tinha dado pra jogar RPG. :)

    \o/

  2. #2 | andreyev

    Ops, não sei se entendi direito o problema, mas o comando abaixo não resolveria o problema?

    $ for i in The\ Big\ Bang\ Theory\ 10*; do mv “${i}” ${i// /_}; done

  3. #3 | Tiago Madeira

    Não, embora com sed você realmente consiga fazer desse tamanho.

  4. #4 | Diogo

    Normal isso de dificultar, coisa de programador mesmo.
    Num caso bem parecido, uma vez fiz um script tbm para normalizar nomes de epis de anime, mas foi em shell.

  5. #5 | carlos

    Existem muitas pesquisas para tradução automática, já há vários anos.

    contudo, é extremamente complexo, pq muitas vezes a tradução literal não funciona e é preciso adicionar inteligência ao software, para que entenda semântica e gramática, contexto e converter para um outro contexto.

    É um grande desafio…

Deixe um comentário

Dados Pessoais
  • Obrigatório.
  • Obrigatório, não publicado.
Comentário

Artigos relacionados:

Assine via RSS

Assine gratuitamente o meu blog e receba todas as atualizações na hora, em seu agregador de feeds favorito.

Seja o 231º assinante

Busca no blog

Escreva palavras-chave para buscar e clique em Pesquisar.

Busca Google

Blogs de minha autoria

Publicidade

Dreamhost

Creative Commons - Some rights reserved tiagomadeira.net © Todo o conteúdo deste blog, exceto quando especificado o contrário, está licenciado sob uma Licença Creative Commons por Tiago Madeira. Os comentários são de responsabilidade de seus respectivos autores.