lunes, 17 de marzo de 2008

Mi primer programa en Ruby :D

Bueno gente, acá les dejo mi primer pequeño script con Ruby. Resulta que el viernes entrada la noche, el señor muluc me comenta que tiene todos los subtítulos de su anime preferido, pero como están sin presentación, y los subtítulos si la tienen en cuenta, tiene atrasados todas las líneas.

Entonces yo dije "Aja!" y le hice un programita bien sencillito, que dados un archivo de subs y un delay, te "corre" todo en ese sentido (no probé con negativos, pero quizás anda).

Entonces, aquí les dejo el código:


File.open($*[0],"r+") do |f|
lines = f.readlines
delay = $*[1]

j = 1
i = 0

while(i < i =" i+1" fin =" lines[i].chomp.split(/--">/)

h,min,seg = prin.chomp.split(/:/)
seg2,dec = seg.chomp.split(/,/)
seg2 = seg2.to_i + delay.to_i
if(seg2 > 60)
min = min + 1
if(min >60)
h = h + 1

hf,minf,segf = fin.chomp.split(/:/)
seg2f,decf = segf.chomp.split(/,/)
seg2f = seg2f.to_i + delay.to_i
if(seg2f > 60)
minf = minf + 1
if(minf >60)
hf = hf + 1

lines[i] = h+ "\:" + min + "\:" + seg2.to_s + "\," + dec + "\-\-\>" + hf+ "\:" + minf + "\:" + seg2f.to_s + "\," + decf + "\n"

j = j+1
end

i = i+1
end

f.pos = 0
f.print lines
f.truncate(f.pos)
end

Básicamente, lo que hace es parsear todo el texto en busca de las líneas que indican tiempos, ahí parsea también esa línea y le agrega a la parte de segundos, el delay correspondiente, haciendo los ajustes para mantener el invariante de la hora.
Bueno, espero que alguien lo vea útil... por las dudas, para ejecutarlo, necesitan el runtime de ruby, que lo bajan de acá (Win). Para la versión Linux, necesitan o bien bajar el código fuente, o fijarse en su distro como es. En el caso de Ubuntu o Debian, con poner lo siguiente, basta:

sudo apt-get install ruby irb rdoc

Gente, voy a seguir laburando...
Saludos a todos y espero llamados y mensajes el 20 y fiesta el 29!


Blue

2 comentarios:

VorteX dijo...

Muy largo!
Y la sintaxis no se entiende nada, que decepción :'(




__________
Python

Anónimo dijo...

Concuerdo con Facu. Pense que iba a ser un poco mas entendible.

Saludos desde Mountain View