Accueil > > > DÉCALER LES TEMPS D'AFFICHAGE DES SOUS TITRES
DÉCALER LES TEMPS D'AFFICHAGE DES SOUS TITRES
Information sur la source
Description
Ce code décale tous les temps d'un fichier sous-titres srt d'une valeur introduite par l'utilisateur et enregistre un nouveau srt.
C'est en fait une première partie d'une application complète, que je vais essayer de développer quand j'aurai le temps, dont la fonction sera de créer et éditer des fichers sous-titres.
Dans le zip il y a deux fichiers. srtUp.py peut se lancer seul ou via l'autre fichier, srt.py, qui est une interface graphique pour ce module srtUp.
Source
- # -*- coding:cp1252 -*-
-
- """Crée un fichier srt copie d'un autre mais où les temps ont été décalés selon les entrées de l'utilisateur"""
-
- def changeTime(time):
- """Additionne les temps et les ajustes au format du temps (minute et secondes entre 0 et 60)\nRenvoie le nouveau temps"""
- global sign, modify
-
- time = [float(i.replace(",",".")) for i in time]
- if sign == 1:
- for i in range(3): time[i] += modify[i]
- if time[2]>60:
- time[2]-=60
- time[1]+=1
- if time[1]>60:
- time[1]-=60
- time[0]+=1
- if sign == 0:
- for i in range(3): time[i] -= modify[i]
- if time[2]<0:
- time[2]+=60
- time[1]-=1
- if time[1]<0:
- time[1]+=60
- time[0]-=1
- if time[0]<0:
- return ["00","00","00.000"]
- return [addZ(str(int(time[0]))),addZ(str(int(time[1]))),addZ(str(time[2]))]
-
- def addZ (nb):
- """Ajoute autant de "0" que nécessaire pour arriver au format srt, à savoir [hh:mm:ss.sss]\nRenvoie le nouveau temps"""
-
- if nb[0]!=0 and float(nb)<10 and len(nb)==2: nb = "0" + nb[1:]
- if len(nb)==1: nb = "0" + nb
-
- while len(nb)>2 and len(nb)<6:
- if len(nb[:nb.index(".")])!=2: nb = "0" + nb
- if len(nb[nb.index("."):])!=4: nb = nb + "0"
- return nb
-
- def process(ligne):
- """Modifie la ligne si elle contient des indications de temps et les envoie à la modification par changeTime\nRenvoie la ligne"""
-
- if len(ligne.split("-->")) == 2: ligne = ":".join(changeTime(ligne[0:12].split(":"))) + " --> " + ":".join(changeTime(ligne[17:29].split(":"))) + "\n"
-
- return ligne
-
- def srtUp(adress):
- """Ouvre le fichier, le lit, appelle la fonction "process" pour chaque ligne\nRenvoie le nouveau srt sous forme de liste"""
-
- srt= open(adress,"r").readlines()
- return [process(i) for i in srt]
-
- def write(srt2, adress2):
- """Inscrit le contenu d'une liste dans un fichier, ici le nouveau fichier srt"""
-
- file = open(adress2, "w")
- for i in srt2: file.write(i)
- file.close()
-
- if __name__== "__main__":
-
- adress = raw_input("Entrer l'adresse du fichier de type srt à traiter : ")
- adress2 = raw_input("Entrer l'adresse du fichier résultat : ")
- sign = int(raw_input("Entrer '1' pour ajouter du temps ou '0' pour en retirer. NB: En ajouter engendrera un affichage modify tardif des sous-titres : "))
- modify = [float(i.replace(",",".")) for i in raw_input("Entrer le décalage temporel à appliquer sous la forme hh:mm:ss.ssss : ").split(":")]
- write(srtUp(adress), adress2)
# -*- coding:cp1252 -*-
"""Crée un fichier srt copie d'un autre mais où les temps ont été décalés selon les entrées de l'utilisateur"""
def changeTime(time):
"""Additionne les temps et les ajustes au format du temps (minute et secondes entre 0 et 60)\nRenvoie le nouveau temps"""
global sign, modify
time = [float(i.replace(",",".")) for i in time]
if sign == 1:
for i in range(3): time[i] += modify[i]
if time[2]>60:
time[2]-=60
time[1]+=1
if time[1]>60:
time[1]-=60
time[0]+=1
if sign == 0:
for i in range(3): time[i] -= modify[i]
if time[2]<0:
time[2]+=60
time[1]-=1
if time[1]<0:
time[1]+=60
time[0]-=1
if time[0]<0:
return ["00","00","00.000"]
return [addZ(str(int(time[0]))),addZ(str(int(time[1]))),addZ(str(time[2]))]
def addZ (nb):
"""Ajoute autant de "0" que nécessaire pour arriver au format srt, à savoir [hh:mm:ss.sss]\nRenvoie le nouveau temps"""
if nb[0]!=0 and float(nb)<10 and len(nb)==2: nb = "0" + nb[1:]
if len(nb)==1: nb = "0" + nb
while len(nb)>2 and len(nb)<6:
if len(nb[:nb.index(".")])!=2: nb = "0" + nb
if len(nb[nb.index("."):])!=4: nb = nb + "0"
return nb
def process(ligne):
"""Modifie la ligne si elle contient des indications de temps et les envoie à la modification par changeTime\nRenvoie la ligne"""
if len(ligne.split("-->")) == 2: ligne = ":".join(changeTime(ligne[0:12].split(":"))) + " --> " + ":".join(changeTime(ligne[17:29].split(":"))) + "\n"
return ligne
def srtUp(adress):
"""Ouvre le fichier, le lit, appelle la fonction "process" pour chaque ligne\nRenvoie le nouveau srt sous forme de liste"""
srt= open(adress,"r").readlines()
return [process(i) for i in srt]
def write(srt2, adress2):
"""Inscrit le contenu d'une liste dans un fichier, ici le nouveau fichier srt"""
file = open(adress2, "w")
for i in srt2: file.write(i)
file.close()
if __name__== "__main__":
adress = raw_input("Entrer l'adresse du fichier de type srt à traiter : ")
adress2 = raw_input("Entrer l'adresse du fichier résultat : ")
sign = int(raw_input("Entrer '1' pour ajouter du temps ou '0' pour en retirer. NB: En ajouter engendrera un affichage modify tardif des sous-titres : "))
modify = [float(i.replace(",",".")) for i in raw_input("Entrer le décalage temporel à appliquer sous la forme hh:mm:ss.ssss : ").split(":")]
write(srtUp(adress), adress2)
Historique
- 02 janvier 2007 23:17:44 :
- Corrections de mise en page
- 08 janvier 2007 17:52:36 :
- Présentation du code
- 09 janvier 2007 21:54:45 :
- Ajout du fichier interface
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Plusieurs actions en meme temps [ par maxpeg0705 ]
Bonjour,je voudrai essayer de faire executer plusieurs choses parallelement, en meme temps (par exemple avec un bot IRC afficher dans la fenetre ce qu
affichage des images sur python [ par amina22 ]
salut,je sais qu'on peut afficher les images .gif avec python mais je veux savoir si on peut afficher les images(jpeg,jpg,..) et les vidéos si oui et
Lire et écrire en même temps [ par GenShiJin ]
Bonjour à tous !Je m'excuse à l'avance si ma question a déjà été traité mais je cherche à savoir comment ouvrir un fichier en lecture et en écriture e
Python,drôle d'animal [ par Vianneyp ]
Bonjour,Je programme en vb/vb.Net mais j'ai tout récemment (pas plus tard que ce matin enfaite :-) ) décider de me mettre a python avec un tutoriel vr
Temps imparti [ par Lutcho74 ]
Bonjour,J'ai mit au point un questionnaire qui prend des questions complètement aléatoire grâce u module random mais j'aimerais faire de façons a mett
affichage en premier plan php [ par lina22 ]
bonjour, dans ma frame menu j'ai une calendrier sur la quelle je peux sélectionnée une date mais mon problème c'est que cette calendrier s'affiche en
Affichage du maximum d'une liste [ par laloutre78 ]
Bonjour,[^^happy13] Je débute dans le logiciel Python, et j'aurai besoin de quelques conseils. J'ai commencé la rédaction d'un algorithme: >>> def alg
probleme avec les listes ... ( anonymisation de log ) [ par psyssa ]
bonjour tt le monde , je devellope un programme d'anonymisation de logs en python le but etant donné la recuperation ds un premier temps dadresse ip
|
Derniers Blogs
[WP7] AJOUTER DES IMAGES DANS LA MEDIA LIBRARY D'UN WINDOWS PHONE 7[WP7] AJOUTER DES IMAGES DANS LA MEDIA LIBRARY D'UN WINDOWS PHONE 7 par Audrey
L'émulateur Windows Phone 7, fourni avec la version Beta des outils développeurs n'inclut aucune image dans sa bibliothèque. Pas très pratique de tester son application lorsque l'on souhaite que l'utilisateur puisse choisir une image présente dans le télé...
Cliquez pour lire la suite de l'article par Audrey VIVE LES MOCKS ET LES POCOSVIVE LES MOCKS ET LES POCOS par vLabz
J'observe régulièrement autour de moi de la confusion à propos de ces deux termes et j'aimerais juste rappeler ce qu'ils signifient. Je ne suis bien sûr pas le mieux placé pour faire une leçon mais je vais faire de mon mieux pour mettre en valeur ce q...
Cliquez pour lire la suite de l'article par vLabz [WF4] WORKFLOW AND CUSTOM ACTIVITIES - BEST PRACTICES (4/5)[WF4] WORKFLOW AND CUSTOM ACTIVITIES - BEST PRACTICES (4/5) par JeremyJeanson
Vendredi dernier Microsoft a publié le quatrième épisode des bonnes pratiques pour coder ses activités custom dans WF4 : endpoint.tv - Workflow and Custom Activities - Best Practices (Part 4) . Tout comme pour les précédents épisodes, j'ai pris le temps d...
Cliquez pour lire la suite de l'article par JeremyJeanson DéVELOPPEMENT MOBILE : .NET COMPACT FRAMEWORK & LIMITATIONSDéVELOPPEMENT MOBILE : .NET COMPACT FRAMEWORK & LIMITATIONS par Pi-R
Introduction :
Le développement d'applications mobiles est quelque peu différent du développement d'applications sous Windows. En effet, le développement d'applications mobiles se base sur le .NET Compact Fra...
Cliquez pour lire la suite de l'article par Pi-R IPHONE VERSUS WP7 CODINGIPHONE VERSUS WP7 CODING par Nicolas
Je relais une présentation sur slideshare.net, qui compare le développement sur Iphone et Windows Phone 7, qui ma fait sourire. I phone versus windows phone 7 coding View more presentations from www.donburnett.com. J'aurais bien aimé une comparai...
Cliquez pour lire la suite de l'article par Nicolas
Logiciels
Xilisoft HD Vidéo Convertisseur 6 (6.0.3.0421)XILISOFT HD VIDéO CONVERTISSEUR 6 (6.0.3.0421)Xilisoft HD Vidéo Convertisseur est un outil professionnel de conversion HDTV, conçu pour transfo... Cliquez pour télécharger Xilisoft HD Vidéo Convertisseur 6 Xilisoft MP4 Convertisseur 6 (6.0.2.0415)XILISOFT MP4 CONVERTISSEUR 6 (6.0.2.0415)Xilisoft MP4 Convertisseur est un outil puissant pour la conversion de vidéo MP4, qui peut conver... Cliquez pour télécharger Xilisoft MP4 Convertisseur 6 Vade Retro Desktop (3.03)VADE RETRO DESKTOP (3.03)Le logiciel antispam Vade Retro pour Microsoft Outlook®, Outlook Express® et Windows Mail®(Vista)... Cliquez pour télécharger Vade Retro Desktop Malwarebytes Anti Malwares (1.46)MALWAREBYTES ANTI MALWARES (1.46)Malwarebytes' Anti-Malware est un anti-malware qui peut éliminer même les plus avancés des logic... Cliquez pour télécharger Malwarebytes Anti Malwares
|