public static async Task Main(string[] args) { // mettre son fichier srt ici string link = (Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\Jad\Films\Tangled.srt"); // J'ai ici essayé de lancer un fichier mp4 sans wpf en utilisant le lanceur Windows mais sans succès. // System.Diagnostics.Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\Jad\Films\Tangled.2010.1080p.BluRay.x264.YIFY.mp4"); Srt srt = new Srt(); Sous_titre st = new Sous_titre(link); Task.WaitAll(srt.FindSRTAsync(st)); }
public async Task FindSRTAsync(Sous_titre st) { string result = ""; using (StreamReader sr = new StreamReader(st.Link)) { string print = ""; DateTime startTime = DateTime.Now; result = sr.ReadLine(); while (!sr.EndOfStream) { await countSeconds(startTime, sr); if ((result == "") && (st.subtValueCount != 1)) { if (st.totalTimePassed != st.totalShowTime) // si c'est l'heure de montrer le sous-titre { await Task.Delay(st.totalShowTime - st.totalTimePassed); // On attend que ce soit l'heure de montrer le sous-titre st.totalTimePassed = st.totalShowTime; } if (st.totalTimePassed == st.totalShowTime) { if (print.Length >= 50) // Ajout de saut de ligne si l'affichage est trop long { int index = print.LastIndexOf(" ", 49); print.Insert(index - 1, "\n"); Console.ForegroundColor = ConsoleColor.DarkGreen; } else { Console.ForegroundColor = ConsoleColor.White; } Console.WriteLine(print); await Task.Delay(st.totalByeTime - st.totalShowTime); // le temps de laisser le sous-titre affiché Console.Clear(); st.totalTimePassed = st.totalByeTime; st.subtValueCount = 1; st.subtCount++; print = ""; } } else if (st.subtValueCount == 1) { st.subtValueCount++; } else if (st.subtValueCount == 2) { st.subtValueCount++; string[] subtTimes = result.Split(" --> "); // sépare la ligne entre le temps d'affichage et de faire disparaitre le sous-titre string subtShowTime = subtTimes[0]; string subtByeTime = subtTimes[1]; subtShowTime = subtShowTime.Replace(":", ","); subtByeTime = subtByeTime.Replace(":", ","); string[] subtShowTimeSplit = subtShowTime.Split(','); // sépare les valeures individuelles pour les calculer en millisecondes pour le await string[] subtByeTimeSplit = subtByeTime.Split(','); st.totalShowTime = int.Parse(subtShowTimeSplit[0]) * 3600000 + int.Parse(subtShowTimeSplit[1]) * 60000 + int.Parse(subtShowTimeSplit[2]) * 1000 + int.Parse(subtShowTimeSplit[3]); // on convertit directement le temps en millisecondes. st.totalByeTime = int.Parse(subtByeTimeSplit[0]) * 3600000 + int.Parse(subtByeTimeSplit[1]) * 60000 + int.Parse(subtByeTimeSplit[2]) * 1000 + int.Parse(subtByeTimeSplit[3]); } else if (st.subtValueCount >= 3) { st.subtValueCount++; print += result; } result = sr.ReadLine(); } } }