Переглянути джерело

support embedded wtv info

Luke Pulverenti 12 роки тому
батько
коміт
0e55f3de58

+ 64 - 2
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;
-        
+
         /// <summary>
         /// Returns true or false indicating if the provider should refresh when the contents of it's directory changes
         /// </summary>
@@ -232,6 +233,67 @@ namespace MediaBrowser.Providers.MediaInfo
             }
 
             AddExternalSubtitles(video);
+
+            FetchWtvInfo(video, data);
+        }
+
+        /// <summary>
+        /// Fetches the WTV info.
+        /// </summary>
+        /// <param name="video">The video.</param>
+        /// <param name="data">The data.</param>
+        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;
+                }
+            }
         }
 
         /// <summary>