Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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();
                }
            }
        }