QPF to Chapter file

Iniciado por ovichan, 12 Julio 2013, 05:48 AM

0 Miembros y 1 Visitante están viendo este tema.

ovichan

Vale, ya lo probaré. Y muchas gracias, pero no me lo tengas en cuenta que estoy ofuscado en esto y se me pira la olla. Perdona si te ha molestado.  ;-)

Eleкtro

No me molesta aunque si te fijas esto más bien es un tutorial express, lo del cint, el for y los "tokens", y etc no te habría costado nada encontrarlo en Google xD, de hecho yo estaba usando el Split como si fuese un método porque estoy acostumbrado a eso en el resto d elenguajes, y tuve que Googlear para ver que en VBS Split es una función y por lo tanto se escribe delante.

un saludo.








ovichan

#22
Pues te aseguro que he estado buscando en google de hecho me he bajado varios manuales, eso si, todo orientado a html.

Estoy mirando la documentacion aqui http://www.w3schools.com/vbscript/func_round.asp

Tambien en microsoft y me baje el chw 6.5, pero no se pq narices no me muestra la información, pero vamos que te aseguro que he estado buscando en google. Pero no te preocupes, no preguntaré tanto.

Y gracias again  ::)

EDITO: Lo he testeado y había un fallito por el cual no ejecutaba el código.

Lo correcto:
Código (vb) [Seleccionar]
Select Case true

Imagino que todo tiene que ver al usar comparadores logicos en los casos del select. Un ratito me ha llevado encontrarlo T_T  http://computer-programming-forum.com/59-vbscript/08b7100c477ec503.htm

ovichan

Bueno, pues nada muchas gracias Elecktro, ya lo he terminado. El código es totalmente funcional, unicamente me gustaria saber un detallito. ¿Es posible hacer como en BAT, que del directorio actual del archivo vbs, tome los en cuenta el archivos *.qpf? Es para automatizar un poco más, y no tener que estar cambiando cada vez por tres la ruta de acceso. Ya sabes algo como: %~dp0*.qpf

Código (vb) [Seleccionar]
'Creamos el objeto ActiveX con el que podamos operar con archivos en el sistema.
Set objfso = createobject("scripting.filesystemobject")

'Definicion de variables
Dim linea
Dim token
Dim hora
Dim min
Dim seg
Dim ms
Dim time
Const constante = 0.0417083

'Creamos el objeto del archivo qpf
set qpfile=objfso.Opentextfile("C:\Users\Isra\Desktop\Nueva carpeta\10. QPFILE_NAME.qpf",1)

'Para evitar que agrege continuamente codigos de tiempo, por un descuido al ejecutar varias veces. Borramos el archivo, si existe
IF (objfso.FileExists("C:\Users\Isra\Desktop\Nueva carpeta\Chapters.txt"))  THEN
objfso.Deletefile("C:\Users\Isra\Desktop\Nueva carpeta\Chapters.txt")
END IF

Do until qpfile.AtEndOfStream

linea=qpfile.readline()

'Filtrar linea, para quedarnos con el numero del frame
For each token in split(linea, " ")
    Tratar(token)
'msgbox(hora & " hora. " & min & " min. " & seg & " seg. " & ms & " ms. ")
exit For
next

loop

Wscript.quit

'Subrutina para transformar numero entero en timestamp
Private Sub Tratar(Token)

'Establecemos criterio de comparación
calculo=token*constante
p_entera= Int(calculo)

Select Case true

Case p_entera >= 216000 'Mensaje de error
msgbox("Error. Un video no puede tener una duración continua igual a uno o más días.")

Case p_entera >= 3600 'Calculo de timecodes partiendo de horas
calculo=calculo/3600
hora=Int(calculo)
min=Int((calculo-hora)*60)
seg=Int((((calculo-hora)*60)-min)*60)
ms=Cint((((((calculo-hora)*60)-min)*60)-seg)*1000)
msgbox(hora & " hora. " & min & " min. " & seg & " seg. " & ms & " ms. ")

Case p_entera < 3600 AND p_entera >= 60 'Calculo de timecodes partiendo de minutos
calculo=calculo/60
'Establecemos para este caso, hora=0
hora=0
min=Int(calculo)
seg=Int((calculo-min)*60)
ms=CInt((((calculo-min)*60)-seg)*1000)
'msgbox(hora & " hora. " & min & " min. " & seg & " seg. " & ms & " ms. ")
Call Formatear(hora, min, seg, ms)

Case p_entera < 60 AND p_entera >= 0 'Calculo de timecodes partiendo de segundos
'Establecemos para este caso, hora=0
hora=0
min=0
seg=Int(calculo)
ms=CInt((((calculo)-seg))*1000)
msgbox(hora & " hora. " & min & " min. " & seg & " seg. " & ms & " ms. ")

Case ELSE
msgbox("Error. No pueden existir valores negativos.")

END SELECT
End Sub

Private Sub Formatear(hora, min, seg, ms)
'Damos formato al codigo de tiempo para que añada un cero si es necesario

SELECT CASE TRUE

CASE hora<10 AND ms<100 'Añadimos un cero delante para dar formato a la hora y los milisegundos.
timestamp="0"&Timeserial(hora,min,seg)&".0"&ms
Call Escribir(timestamp)
CASE hora<10 'Añadimos un cero delante para dar formato a la hora.
timestamp="0"&Timeserial(hora,min,seg)&"."&ms
Call Escribir(timestamp)
CASE ms<100 'Añadimos un cero delante para dar formato los milisegundos.
timestamp=Timeserial(hora,min,seg)&".0"&ms
Call Escribir(timestamp)
CASE ELSE
timestamp=Timeserial(hora,min,seg)&"."&ms
Call Escribir(timestamp)
END SELECT


end sub

Private Sub Escribir (timestamp)

'Escribimos nuestro archivo de capitulos.
Set codigo_tiempo=objfso.opentextfile("C:\Users\Isra\Desktop\Nueva carpeta\Chapters.txt", 8, true) 'creamos el archivo
codigo_tiempo.writeline timestamp
codigo_tiempo.close

end sub





La verdad pensaba que no me iba a salir, pero gracias a ti, aqui tengo mi primer codigo en vbs ^^  :rolleyes:

Eleкtro

Código (vb) [Seleccionar]
Set FSO = CreateObject("Scripting.FileSystemObject")

For Each File In FSO.GetFolder(".\").Files
If LCase(FSO.GetExtensionName(File.Name)) = "qpf" then
Wscript.echo(File.Name)
end if
Next








ovichan