private MovieInfo ReadInternal() { string json = InspectFile(); if (String.IsNullOrEmpty(json) || json.Length <= 10) { return(null); } CoreRoot core = JsonConvert.DeserializeObject <CoreRoot>(json); if (core != null) { MovieInfo movieInfo = ConvertCoreObject(core); return(movieInfo); } return(null); }
private MovieInfo ConvertCoreObject(CoreRoot core) { MovieInfo movieInfo = new MovieInfo(); if (core.Streams != null && core.Streams.Any()) { foreach (CoreStream coreStream in core.Streams) { try { BaseStream baseStream = GenerateBaseStream(coreStream); switch (baseStream.StreamType) { case StreamType.None: break; case StreamType.Subtitle: SubtitleStream subtitleStream = new SubtitleStream(baseStream); subtitleStream.Duration = ParseTimeSpan(coreStream.Duration); subtitleStream.DurationTs = coreStream.DurationTs; movieInfo.SubtitleStreams.Add(subtitleStream); break; case StreamType.Audio: AudioStream audioStream = GenerateAudioStream(baseStream, coreStream); movieInfo.AudioStreams.Add(audioStream); break; case StreamType.Video: VideoStream videoStream = GenerateVideoStream(baseStream, coreStream); movieInfo.VideoStreams.Add(videoStream); break; case StreamType.Data: DataStream dataStream = new DataStream(); movieInfo.DataStreams.Add(dataStream); break; case StreamType.Attachment: AttachmentStream attachmentStream = new AttachmentStream(); movieInfo.AttachmentStreams.Add(attachmentStream); break; } } catch (Exception ex) { Console.WriteLine("ERROR: Unhandled Exception while parsing streams:"); Console.WriteLine(ex.Message); Console.WriteLine(ex.Source); Console.WriteLine(ex.StackTrace); } } } if (core.Chapters != null && core.Chapters.Any()) { foreach (CoreChapter coreChapter in core.Chapters) { try { Chapter chapter = new Chapter(); chapter.Id = coreChapter.Id; chapter.End = coreChapter.End; chapter.Start = coreChapter.Start; chapter.TimeBase = coreChapter.TimeBase; chapter.Tags = coreChapter.Tags; chapter.StartTime = ParseTimeSpan(coreChapter.StartTime); chapter.EndTime = ParseTimeSpan(coreChapter.EndTime); if (coreChapter.Tags != null && coreChapter.Tags.Any()) { if (coreChapter.Tags.ContainsKey("title")) { chapter.Title = coreChapter.Tags .FirstOrDefault(x => x.Key.Equals("title", StringComparison.OrdinalIgnoreCase)).Value; } } movieInfo.Chapters.Add(chapter); } catch (Exception ex) { Console.WriteLine("ERROR: Unhandled Exception while parsing streams:"); Console.WriteLine(ex.Message); Console.WriteLine(ex.Source); Console.WriteLine(ex.StackTrace); } } } return(movieInfo); }