Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 13/06/2006, à 13:32

Black_pignouf

[Script] Décalage de sous-titre .srt

Bonjour à tous!

Je fais mumuse avec pas mal de scripts Ruby en ce moment, et pour une fois, il se peut que l'un d'entre eux aie une utilité quelconque. Ils existent surement d'autres scripts/paquets/programmes faisant cela, mais on ne sait jamais!

Voilà le lien:
http://www.duminil.info/doku.php?id=srtoffset

Et le script en question:

#! /usr/bin/ruby
#   srtOffset.rb v0.1
#   Designed to let you shift the subtitles included in a .srt file by a given amount of seconds.
#   Syntax: ./srtOffset.rb NameOfSrtFile.srt Seconds
#
#   Written on 13-06-06 by Eric DUMINIL
#   (http://duminil.info/doku.php?id=freemindtolatex)
#
#   This program is free software; you can redistribute it and/or modify
#   it under the terms of the GNU General Public License as published by
#   the Free Software Foundation, version 2.
#


SRTFILE=ARGV[0]
DECAL=ARGV[1]

class Fixnum
        def complete n
                '0'*(n-self.to_s.length)+self.to_s
        end
end

class TimeStamp
        def initialize string
                /(\d+):(\d+):(\d+),(\d+)/.match(string)
                @totalms=$4.to_i+($3.to_i+($2.to_i+$1.to_i*60)*60)*1000
        end
        
        attr_reader :totalms
        
        def hour
                totalms/(60*60*1000)
        end
        
        def minute
                totalms/(60*1000)-hour*60
        end
        
        def second
                totalms/(1000)-hour*60*60-minute*60
        end
        
        def ms
                totalms-hour*60*60*1000-minute*60*1000-second*1000
        end
       
        def addSeconds n
                @totalms+=(n.to_f*1000).to_i
        end
    
        
        def to_s
                hour.complete(2).+':'+minute.complete(2)+':'+second.complete(2)+','+ms.complete(3)
        end
end


File.foreach(SRTFILE){|line|
        if line=~/^(\d+:\d+:\d+,\d+) --> (\d+:\d+:\d+,\d+)/ then
                firstStamp=TimeStamp.new($1)
                secondStamp=TimeStamp.new($2)
                firstStamp.addSeconds DECAL
                secondStamp.addSeconds DECAL
                puts firstStamp.to_s+' --> '+secondStamp.to_s
        else
                puts line
        end   
}

Il vous suffit de l'enregistrer dans un srtOffest.rb
de lui donner les droits d'exécution
et de le lancer comme cela:

./srtOffset.rb nomDuFichier.srt -35.567 > nouveauFichier,srt

pour avancer tous les sous-titres de 35 secondes et 567 millièmes et les enregistrer dans nouveauFichier.srt cool

Dernière modification par Black_pignouf (Le 22/06/2006, à 02:26)

Hors ligne

#2 Le 21/06/2006, à 21:31

flarre

Re : [Script] Décalage de sous-titre .srt

Merci pour le tuyau mais y'a une petite erreur:

        def to_ss
hour.complete(2).+':'+minute.complete(2)+':'+second.complete(2)+','+ms.complete(3)
        end

c'est en fait "def to_s" et pas ss
Sinon, ça marche bien, je viens de l'utiliser, c'est cool

Hors ligne

#3 Le 22/06/2006, à 02:28

Black_pignouf

Re : [Script] Décalage de sous-titre .srt

De rien!

Et effectivement, je ne sais pas comment c'est arrivé, mais il y avait dans le post un s de trop par rapport au fichier. Merci pour le rectificatif, donc wink

Hors ligne

#4 Le 22/06/2006, à 15:17

Gou

Re : [Script] Décalage de sous-titre .srt

Ya un petit programme qui fait ça aussi:
http://kitone.free.fr/subtitleeditor/
l'avantage, c'est qu'il fait aussi beaucoup d'autres choses smile

Hors ligne