Sous-titre youtube (.srt)

Contenu du snippet

Ce code permet de formater automatiquement les sous-titres offerts par Youtube pour les utiliser sur votre lecteur multimédia (VLC par exemple).
En effet, lorsqu'on télécharge une vidéo sur Youtube, les sous-titres ne viennent pas avec. Il faut les copier depuis le site avec un format propre à Youtube. Or, les lecteurs multimédia actuels acceptent un format bien spécifique pour pouvoir afficher les sous titres au même temps que la vidéo(Ces fichiers ont une extension .srt).
Ce code permet de re-formter le sous-titre au format Youtube pour les rendre compatibles avec le format supporté par les lecteurs multimédias tel que VLC.

Voila un exemple de format Youtube:
0:00
0:01Chris Terman: In this lecture, we're going to revisit optimization
0:03problems, particularly those that involved having to do an exhaustive
0:07search to find the optimal solution.

Voila un exemple de format SRT (supporté par les VLC):
1
00:0:00,000 --> 00:0:01,000

2
00:0:01,000 --> 00:0:03,000
Chris Terman: In this lecture, we're going to revisit optimization

3
00:0:03,000 --> 00:0:07,000
problems, particularly those that involved having to do an exhaustive

4
00:0:07,000 --> 00:0:10,000
search to find the optimal solution.

Ce code a été testé seulement avec Python 2.7.

Source / Exemple :


import re

generatedNameFile="yourGeneratedNameFileHere.srt"
youtubeNameFile="yourDownloadedYoutubeSubtitlesFile.txt"

f = open(youtubeNameFile,"r")
fg= open(generatedNameFile,"w")

timeRE = re.compile('^[0-9]{0,2}:[0-9]{0,2}')
line = f.readline()
indexLine=1
while line!="":
    #Obtenir le premier temps
    debut = timeRE.match(line)
    while (not debut and line!=""):
        line = f.readline()        
        debut = timeRE.match(line)

    #Obtenir le texte après le temps
    texte=""
    r = line[debut.end():]
    if len(r)>1:
        texte = r

    #Obtenir le deuxième temps
    line = f.readline()    
    fin = timeRE.match(line)
    while (not fin  and line!=""):
        if len(line)>1:
            texte+=line
        line = f.readline()        
        fin = timeRE.match(line)
    if line=="": break        
    fg.write(str(indexLine)+"\n")
    de = str(debut.group()) + ",000"
    fi = str(fin.group()) + ",000"
    
    if de.count(":")==1: de="00:"+de
    if fi.count(":")==1: fi="00:"+fi
      
    fg.write (de+" --> "+fi)
    fg.write("\n")
    fg.write(texte+"\n")
    indexLine+=1
    print ".",
print "End"
fg.flush()
fg.close()
f.close()

Conclusion :


1. Télécharger une video youtube.
2. Copier les sous-titre youtube dans un fichier texte [yourDownloadedYoutubeSubtitlesFile.txt]
3. Lancer le script Python
4. Glisser déposer le fichier généré: [yourGeneratedNameFileHere.srt] dans votre lecteur Multimédia

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.