Décaler des sous-titres srt

Updated: 20 octobre 2015

Script .py fourni par Nicos Correction de bug Thanks to Thierry

Il arrive souvent que l’on récupère un fichier srt qui est désynchronisé par rapport au film. On aimerait bien alors pouvoir décaler les sous-titres de quelques secondes pour que ça soit un peu plus raccord avec le film. Il y a sur ici une application qui permet de faire ca on line (vous pouvez aussi jeter un oeil sur comment re-synchroniser des sous-titresavec VLC). Comme il n’y a pas le code source j’avais entrepris de faire ça en bash mais après quelques heures à me battre avec les regexp j’ai lâchement abandonné pour une solution python. Je propose ici une solution sous forme d’un notebook ipython. C’est très simple et le lecteur pourra l’adapter à sa convenance.
Il faut modifier srt_name par votre fichier srt et add_second pour le décalage que vous voulez effectuer.
A la fin le programme vous sort le fichier srt avec le décalage que vous vouliez.

NB:
J’ai considéré que le srt avait cette forme
N° du sous titre : 692
Début et fin du sous titre (que l’on va modifier avec le programme): 00:54:26,746–>00:54:28,748
Sous titre: Nous sommes là.

''' 
Olivier Dadoun
For comments and questions www.dadoun.net
ipython notebook for shifting the time line of your srt file
I have supposed here that 
March 2015
'''
srt_name="OLD.srt"
shifted_srt_name="shifted_"+srt_name
add_second=10
import re
pattern="[0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3}"
prog = re.compile(pattern)
with open(shifted_srt_name, 'w') as shifted_file:
    with open(srt_name, 'r') as the_file:
        lecture=the_file.read()
        line=lecture.split("\n")
 
        for li in line:
            if prog.match(li):
                begin_time=li.split(" ")[0]
                begin_hours=begin_time.split(":")[0]
                begin_minutes=begin_time.split(":")[1]
                begin_seconds_milliseconds=begin_time.split(":")[2]
                begin_seconds=begin_seconds_milliseconds.split(",")[0]
                begin_milliseconds=begin_seconds_milliseconds.split(",")[1]
 
                end_time=li.split(" ")[2]
                end_hours=end_time.split(":")[0]
                end_minutes=end_time.split(":")[1]
                end_seconds_milliseconds=end_time.split(":")[2]
                end_seconds=end_seconds_milliseconds.split(",")[0]
                end_milliseconds=end_seconds_milliseconds.split(",")[1]
 
                shifted_file.write(begin_hours+":"+begin_minutes+":"+
                                   str(int(begin_seconds)+add_second)+","+begin_milliseconds
                                   +"-->"+
                                   end_hours+":"+end_minutes+":"+str(int(end_seconds)+add_second)
                                   +","+end_milliseconds+"\n")        
            else:
                shifted_file.write(li)

Merci à Nico qui en fournit un .py:

'''
Olivier Dadoun
For comments and questions www.dadoun.net
ipython notebook for shifting the time line of your srt file
I have supposed here that 
March 2015
'''
import os
import re
 
prog = re.compile("[0-9]{2}:[0-9]{2}:[0-9]{2},[0-9]{3}")
 
def go(srt_path, add_second):
    dirname, srt_name = os.path.split(srt_path)
    shifted_path = os.path.join(dirname, "shifted_" + srt_name)
    with open(shifted_path, 'w') as shifted_file:
        with open(srt_path, 'r') as the_file:
            for li in the_file.read().split("\n"):
                if prog.match(li):
                    begin_time=li.split(" ")[0]
                    begin_hours=begin_time.split(":")[0]
                    begin_minutes=begin_time.split(":")[1]
                    begin_seconds_milliseconds=begin_time.split(":")[2]
                    begin_seconds=begin_seconds_milliseconds.split(",")[0]
                    begin_milliseconds=begin_seconds_milliseconds.split(",")[1]
 
                    end_time=li.split(" ")[2]
                    end_hours=end_time.split(":")[0]
                    end_minutes=end_time.split(":")[1]
                    end_seconds_milliseconds=end_time.split(":")[2]
                    end_seconds=end_seconds_milliseconds.split(",")[0]
                    end_milliseconds=end_seconds_milliseconds.split(",")[1]
 
                    shifted_file.write("%s:%s:%s,%s-->%s:%s:%s,%s\n" % (
                                           begin_hours, begin_minutes, int(begin_seconds) + add_second, begin_milliseconds,
                                           end_hours, end_minutes, int(end_seconds) + add_second, end_milliseconds
                                       ))        
                else:
                    shifted_file.write(li + '\n')
 
 
if __name__ == '__main__':
    import sys
    argvL = len(sys.argv)
 
    try:
        srt_name = sys.argv[1]
 
    except:
        raise IOError('You must specify an SRT file')
 
    try:
        add_second = int(sys.argv[2])
    except IndexError:
        add_second = 10
    except Exception, error:
        raise IOError('Failed to convert "%s" in integer' % sys.argv[2])
 
    go(srt_name, add_second)

Pour le lancer depuis son terminal:
python shiftSRT.py chemin_vers_srt [offset]

Publié dans Informatique, Python | Marqué avec , , , | Laisser un commentaire

Les pubs MacSpend me polluent …

aghhhhhhhh plus possible de surfer car des pubs MacSpend apparaissent sur mon browser durant ma navigation. C’est atroce, insupportable …
Il faut pour retrouver la quiétude supprimer l’extension MacSpend sur votre browser (euh je me souviens pas l’avoir installée …). Je suis sur OSX mais ca doit être la même chose sur un autre OS.
Alors si vous êtes:

  • Chrome
  • Menu préférences (en haut à gauche), sélectionné extensions sur le coté gauche puis jeter à la poubelle MacSpend

  • Firefox
  • Menu outil (en haut à droite), sélectionné « Modules Complémentaires » et effacer MacSpend

    Voilà j’ai perdu un peu de temps à trouver comment faire et ça m’a bien pris la tête …

    Publié dans Informatique | Marqué avec | 2 commentaires

    JE SUIS CHARLIE

    13588833-nous-sommes-tous-des-charlie

    Publié dans Non classé | Laisser un commentaire

    Récupérer les flux RSS dans mail

    J’ai upgradé mon mac en passant de 10.6 à 10.9. Du coup j’ai perdu mes flux RSS qui étaient stockés dans Mail.
    En cherchant un peu j’ai trouvé cette page qui décrit comme faire pour récupérer ces flux RSS. Le petit hic est que le script fourni ne marche pas… Du coup je l’ai modifié un peu. Il faut donc remplacer le find par celui-là :

     find . -name "Info.plist" -exec grep -A 1 Feed {} \; | grep string | sed 's/^[^>]*>//' | sed 's/\<\/string\>//'
    Publié dans Non classé | Laisser un commentaire

    Usefull GPFS commands

    Updated: 7 octobre 2014

    07/10/2014

    In the following the name of the GPFS file system is totofs
    Display the state of the GPFS damemon

     mmgetstate  -aLv

    Display current configuration and of the disk

     mmlsdisk  totofs

    Disks listing

     mmlsnsd

    Available space disk

     mmdf totofs

    Delete disk01,disk02 & disk03 from GPFS file system (all the data will be copy on other disks)

     mmdeldisk totofs "disk01;disk02;disk03"

    Delete disk01,disk02 & disk03 from the GPFS cluster

     mmdelnsd totofs "disk01;disk02;disk03"

    Change the state of disk01 from down to up:

     mmchdisk totofs start -d disk01

    Rebalances or restores the replication of all files in totofs

     mmrestripefs totofs -r
    Publié dans Informatique | Marqué avec | Laisser un commentaire

    VIM avec la souris

    Depuis le temps que je devais faire ça …
    j’utilisais VIM en mode terminal (sous mac os X 10.7) mais j’avais pas mis l’activation de la souris (par flemme). Je viens donc d’installer MouseTerm (qui nécessite SIMBL), du coup non seulement je peux mettre mon curseur où je veux mais en plus je peux utiliser le scroll pour naviguer dans mon document édité.
    Temps nécessaire pour ces 2 installations environ 15 s ! 🙂

    On trouvera MouseTerm ici

    Ne pas oublier de mettre dans son .vimrc

    if has("mouse")
        set mouse=a
    endif

    Le petit désavantage est que lorsque l’on clique sur la souris on passe en mode visuel donc le copier-coller de la souris ne marche plus …. arghhhhh
    En fait il faut utiliser maintenir la commande alt/option avant de sélectionner le texte que l’on désire copier-coller, ca marche aussi sur Linux (source).

    Publié dans Informatique | Marqué avec | 3 commentaires

    Ma hp enfin réparé

    Ma calculatrice HP 48SX ne s’allumait plus, et quand elle s’allumait (pour des raisons obscures) les touches d’opérations +,-,x, … ne marchaient pas ce qui est un problème pour une calculette.
    Je viens enfin de trouver un moyen de fixer ça grâce à cette video :

    hp 48gx quick fix – vidéo.

    Publié dans Non classé | 2 commentaires

    Vend appart de 4m2

    Bon,

    c’est hélas pas une blague voici aujourd’hui ce qu’on peut trouver comme annonce
    sur Paris

    Bien sûr c’est  » ENCORE UNE EXCLUSIVITE … A SAISIR SANS TARDER  » …

    Publié dans WTF | Laisser un commentaire

    Forte chaleur sur les rails du RER B …

    C’est quand même très fort le message de la RATP d’aujourd’hui :


    Cela dit ca n’explique pas pourquoi ils ont coupé la clim des nouveaux wagons du RER B.
    Si les rails ont chaud je ne vous parle pas des usagers …

    Publié dans WTF | Un commentaire

    ZTE blade S rooté :)

    Enfin …
    Pourquoi ? car la mémoire interne du tel est vraiment minable (qq centaines de Meg).
    Donc il fallait faire un lien depuis la mémoire interne sur la SD et pour ça il faut
    rooter le tel …
    j’ai suivi la procédure décrite à cette page
    http://simon.superespace.net/?p=11
    Après j’ai installé

  • Desinstalleur Pro pour virer une bonne fois pour toute l’appli facebouque
  • Link2SD pour faire un lien depuis la mémoire interne sur la SD
    jeter un oeil ici http://www.androidpit.fr/augmentez-memoire-android
  • Après à chaque installe on a un p’tit message comme quoi l’appli est « lié à la carte SD »

    Publié dans Non classé | Laisser un commentaire