コード例 #1
0
ファイル: JoinFiles.cs プロジェクト: rasoulian/SubtitleTools
        public static void JoinTwoFiles(string file1, string file2, TimeSpan file2StartTsSelectedByUser)
        {
            LogWindow.AddMessage(LogType.Info, "JoinTwoFiles Start");
            var file1Items = new ParseSrt().ToObservableCollectionFromFile(file1);
            var file2Items = new ParseSrt().ToObservableCollectionFromFile(file2);

            var file1LastItem  = file1Items.OrderByDescending(o => o.Number).FirstOrDefault();
            var file2FirstItem = file2Items.OrderBy(o => o.Number).FirstOrDefault();
            var delta          = file2StartTsSelectedByUser - file2FirstItem.StartTs;

            for (int i = 0; i < file2Items.Count; i++)
            {
                //Correct file2's numbers
                file2Items[i].Number = i + 1 + file1LastItem.Number;
                //shift file2's items
                file2Items[i].StartTs += delta;
                file2Items[i].EndTs   += delta;
                //write it back
                file2Items[i].Time =
                    string.Format("{0} --> {1}", ParseSrt.TimeSpanToString(file2Items[i].StartTs), ParseSrt.TimeSpanToString(file2Items[i].EndTs));
            }

            var newShiftedFile2 = ParseSrt.SubitemsToString(file2Items);

            //Create a single file
            var fileName     = string.Format("{0}\\JoinedFile{1}", Path.GetDirectoryName(file1), Path.GetExtension(file1));
            var file1Content = File.ReadAllText(file1);

            File.WriteAllText(fileName, file1Content.ApplyCorrectYeKe(), Encoding.UTF8);
            File.AppendAllText(fileName, newShiftedFile2.ApplyCorrectYeKe(), Encoding.UTF8);
            LogWindow.AddMessage(LogType.Announcement, string.Format("Saved to:  {0}", fileName));
        }
コード例 #2
0
        public static string ShiftThisTime(string line, TimeSpan delta, bool add)
        {
            var lineTs = ParseSrt.ConvertStringToTimeSpan(line);

            if (add)
            {
                lineTs += delta;
            }
            else
            {
                lineTs -= delta;
            }

            return(ParseSrt.TimeSpanToString(lineTs));
        }