public string GetTotalDurationString() { return(Adapter.GetDurationString(GetTotalDuration())); }
private void ReadDirectory() { // if a folder then read all media files // append all the durations and save in Duration if (Directory.Exists(Location)) { // get largest file FileCollection = GetFilesToProcess(Location); List <FileInfo> listFileInfo = new List <FileInfo>(); foreach (string fp in FileCollection) { listFileInfo.Add(new FileInfo(fp)); } // Subtitles, Format: DVD Video using VTS_01_0.IFO string[] ifo = Directory.GetFiles(Location, "VTS_01_0.IFO", SearchOption.AllDirectories); if (ifo.Length == 1) // CHECK IF A DVD { this.Options.MediaTypeChoice = MediaType.MediaDisc; MediaInfoLib.MediaInfo mi = new MediaInfoLib.MediaInfo(); this.DiscType = TDMakerLib.SourceType.DVD; mi.Open(ifo[0]); // most prolly this will be: DVD Video this.Overall.Format = mi.Get(StreamKind.General, 0, "Format"); int subCount = 0; int.TryParse(mi.Get(StreamKind.Text, 0, "StreamCount"), out subCount); if (subCount > 0) { List <string> langs = new List <string>(); for (int i = 0; i < subCount; i++) { string lang = mi.Get(StreamKind.Text, i, "Language/String"); if (!string.IsNullOrEmpty(lang)) { // System.Windows.Forms.MessageBox.Show(lang); if (!langs.Contains(lang)) { langs.Add(lang); } } } StringBuilder sbLangs = new StringBuilder(); for (int i = 0; i < langs.Count; i++) { sbLangs.Append(langs[i]); if (i < langs.Count - 1) { sbLangs.Append(", "); } } this.Overall.Subtitles = sbLangs.ToString(); } // close ifo file mi.Close(); // AFTER IDENTIFIED THE MEDIA TYPE IS A DVD listFileInfo.RemoveAll(x => x.Length < 1000000000); } // Set Media Type bool allAudio = Adapter.MediaIsAudio(FileCollection); if (allAudio) { this.Options.MediaTypeChoice = MediaType.MusicAudioAlbum; } if (FileCollection.Count > 0) { foreach (FileInfo fi in listFileInfo) { this.AddMedia(new MediaFile(fi.FullName, this.Source)); } this.Overall = new MediaFile(FileSystemHelper.GetLargestFilePathFromDir(Location), this.Source); // Set Overall File Name this.Overall.FileName = Path.GetFileName(Location); if (Overall.FileName.ToUpper().Equals("VIDEO_TS")) { Overall.FileName = Path.GetFileName(Path.GetDirectoryName(Location)); } if (string.IsNullOrEmpty(Title)) { this.Title = this.Overall.FileName; } } // DVD Video // Combined Duration and File Size if (Options.MediaTypeChoice == MediaType.MediaDisc) { if (listFileInfo.Count > 0) { long dura = 0; double size = 0; foreach (FileInfo fiVob in listFileInfo) { MediaInfoLib.MediaInfo mi = new MediaInfoLib.MediaInfo(); mi.Open(fiVob.FullName); string temp = mi.Get(0, 0, "Duration"); if (!string.IsNullOrEmpty(temp)) { long d = 0; long.TryParse(temp, out d); dura += d; } // we are interested in combined file size only for VOB files // thats why we dont calculate FileSize in FileInfo while determining largest file double sz = 0; double.TryParse(mi.Get(0, 0, "FileSize"), out sz); size += sz; // close vob file mi.Close(); } this.Overall.FileSize = size; // override any previous file size this.Overall.FileSizeString = string.Format("{0} MiB", (this.Overall.FileSize / 1024.0 / 1024.0).ToString("0.00")); this.Overall.Duration = dura; this.Overall.DurationString2 = App.GetDurationString(dura); } } } // if Location is a directory }