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)); }
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)); }