Download sample SRT files

' Shift Subtitles in a SRT file
' Video

Set toolkit = CreateObject("VbsEdit.Toolkit")
files=toolkit.OpenFileDialog("","SRT Files (*.srt)|*.srt",False,"Open a subtitle file")
If UBound(files)<0 Then
  Wscript.Quit
EndIf

source = files(0)

Set fso = CreateObject("Scripting.Filesystemobject")

IfNot(fso.FileExists(source & ".bak")) Then
  fso.CopyFile source,source & ".bak",False
EndIf

dest = files(0)

s = InputBox("Enter a number of seconds","Shift","0")
If s=""Then
  Wscript.Quit
EndIf

If InStr(CStr(1/2), ".") > 0 Then
   s=Replace(s,",",".")
Else
   s=Replace(s,".",",")
EndIf

offset =CDbl(s)

from_time= ""
until_time = ""

shift_from=0
If from_time<>""Then
  shift_from = StringToSeconds(from_time)
EndIf

shift_until=10^8
If until_time<>""Then
  shift_until = StringToSeconds(until_time)
EndIf

Set WshShell = CreateObject("Wscript.Shell")

Set objOutput = CreateObject("ADODB.Stream")
objOutput.Charset = "utf-8"
objOutput.Type = 2
objOutput.Open
objOutput.LineSeparator = -1


Set objInput = CreateObject("ADODB.Stream")
objInput.Charset = toolkit.charset(source)
objInput.Type = 2
objInput.Open
objInput.LineSeparator = toolkit.lineseparator(source)
objInput.LoadFromFile source
DoWhileTrue

  IfNot(objInput.EOS) Then
    num = objInput.ReadText(-2)
  Else
    ExitDo
  EndIf
   
  objOutput.WriteText num,1
  
  IfNot(objInput.EOS) Then
    tt = objInput.ReadText(-2)
  Else
    ExitDo
  EndIf
  
  pos = InStr(tt," --> ")
  arr1=Split(Left(tt,pos),":")
  arr2=Split(Mid(tt,pos+5),":")
  
  t1 = StringToSeconds(Left(tt,pos))
  t2 = StringToSeconds(Mid(tt,pos+5))
    
  If t1>shift_from And t1<shift_until Then
    t1 = t1 + offset  
    t2 = t2 + offset
  EndIf
  
  objOutput.WriteText SecondsToString(t1) & " --> " & SecondsToString(t2),1
  
  theText=""
  DoWhileNot(objInput.EOS)
    text = objInput.ReadText(-2)
   
   objOutput.WriteText text,1

    If text=""Then
      ExitDo
    EndIf
  
  Loop
  

Loop

objInput.Close
objOutput.SaveToFile dest,2
objOutput.Close

Function SecondsToString(seconds)
  Dim t
  t=seconds
  h=Int(t/3600)
  t=t-h*3600
  If Len(h)=1 Then
    h="0" & h
  EndIf
  n= Int(t/60)
  t=t-n*60
  If Len(n)=1 Then
    n="0" & n
  EndIf
  s = Int(t)
  If Len(s)=1 Then
    s="0" & s
  EndIf
  m=t-s
  m=FormatNumber(m,3)
  
  SecondsToString = h & ":" & n & ":" & s & "," & Mid(m,3)
EndFunction


Function StringToSeconds(str)
  
  arr=Split(str,":")
  
  t = arr(0)*3600 + arr(1)*60 
  
  s = Split(arr(2),",")
  
  If UBound(s)>=0 Then
  t = t + s(0)
  
    If UBound(s)>=1 Then
      t = t +  s(1)/1000
    EndIf
  EndIf
   
  StringToSeconds = t
EndFunction
search for scripts

VbsEdit contains all these sample scripts!


Download Now!



Download   Home   Scripts

Copyright © 2001-2024 adersοft