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
End If

source = files(0)

Set fso = CreateObject("Scripting.Filesystemobject")

If Not(fso.FileExists(source & ".bak")) Then
  fso.CopyFile source,source & ".bak",False
End If

dest = files(0)

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

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

offset =CDbl(s)

from_time= ""
until_time = ""

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

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

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
Do While True

  If Not(objInput.EOS) Then
    num = objInput.ReadText(-2)
  Else
    Exit Do
  End If
   
  objOutput.WriteText num,1
  
  If Not(objInput.EOS) Then
    tt = objInput.ReadText(-2)
  Else
    Exit Do
  End If
  
  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
  End If
  
  objOutput.WriteText SecondsToString(t1) & " --> " & SecondsToString(t2),1
  
  theText=""
  Do While Not(objInput.EOS)
    text = objInput.ReadText(-2)
   
   objOutput.WriteText text,1

    If text="" Then
      Exit Do
    End If
  
  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
  End If
  n= Int(t/60)
  t=t-n*60
  If Len(n)=1 Then
    n="0" & n
  End If
  s = Int(t)
  If Len(s)=1 Then
    s="0" & s
  End If
  m=t-s
  m=FormatNumber(m,3)
  
  SecondsToString = h & ":" & n & ":" & s & "," & Mid(m,3)
End Function


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
    End If
  End If
   
  StringToSeconds = t
End Function
search for scripts

VbsEdit contains all these sample scripts!


Download Now!



Download   Home   Scripts

Copyright © 2001-2026 adersοft