From 0e55f3de58496e867f1744d3e1690cf2d3fc5062 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Tue, 11 Jun 2013 20:19:56 -0400 Subject: [PATCH] support embedded wtv info --- .../MediaInfo/FFProbeVideoInfoProvider.cs | 66 ++++++++++++++++++- 1 file changed, 64 insertions(+), 2 deletions(-) diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfoProvider.cs b/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfoProvider.cs index 5f24aa1e04..2a9495fd84 100644 --- a/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfoProvider.cs +++ b/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfoProvider.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Common.IO; +using System.Globalization; +using MediaBrowser.Common.IO; using MediaBrowser.Common.MediaInfo; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Entities; @@ -51,7 +52,7 @@ namespace MediaBrowser.Providers.MediaInfo private readonly IIsoManager _isoManager; private readonly ILocalizationManager _localization; - + /// /// Returns true or false indicating if the provider should refresh when the contents of it's directory changes /// @@ -232,6 +233,67 @@ namespace MediaBrowser.Providers.MediaInfo } AddExternalSubtitles(video); + + FetchWtvInfo(video, data); + } + + /// + /// Fetches the WTV info. + /// + /// The video. + /// The data. + private void FetchWtvInfo(Video video, MediaInfoResult data) + { + if (data.format.tags == null) + { + return; + } + + var genres = GetDictionaryValue(data.format.tags, "genre"); + + if (!string.IsNullOrEmpty(genres)) + { + video.Genres = genres.Split(new[] { ';', '/' }, StringSplitOptions.RemoveEmptyEntries) + .Where(i => !string.IsNullOrWhiteSpace(i)) + .Select(i => i.Trim()) + .ToList(); + } + + var overview = GetDictionaryValue(data.format.tags, "WM/SubTitleDescription"); + + if (!string.IsNullOrWhiteSpace(overview)) + { + video.Overview = overview; + } + + var officialRating = GetDictionaryValue(data.format.tags, "WM/ParentalRating"); + + if (!string.IsNullOrWhiteSpace(officialRating)) + { + video.OfficialRating = officialRating; + } + + var people = GetDictionaryValue(data.format.tags, "WM/MediaCredits"); + + if (!string.IsNullOrEmpty(people)) + { + video.People = people.Split(new[] { ';', '/' }, StringSplitOptions.RemoveEmptyEntries) + .Where(i => !string.IsNullOrWhiteSpace(i)) + .Select(i => new PersonInfo { Name = i.Trim(), Type = PersonType.Actor }) + .ToList(); + } + + var year = GetDictionaryValue(data.format.tags, "WM/OriginalReleaseTime"); + + if (!string.IsNullOrWhiteSpace(year)) + { + int val; + + if (int.TryParse(year, NumberStyles.Integer, UsCulture, out val)) + { + video.ProductionYear = val; + } + } } ///