Browse Source

update probing

Luke Pulverenti 8 năm trước cách đây
mục cha
commit
f5467021b0

+ 7 - 6
Emby.Server.Implementations/ScheduledTasks/PeopleValidationTask.cs

@@ -35,13 +35,14 @@ namespace Emby.Server.Implementations.ScheduledTasks
         /// </summary>
         /// </summary>
         public IEnumerable<TaskTriggerInfo> GetDefaultTriggers()
         public IEnumerable<TaskTriggerInfo> GetDefaultTriggers()
         {
         {
-            // Randomize the default start hour because this operation can really hammer internet metadata providers
-            var startHour = new Random(_appHost.SystemId.GetHashCode()).Next(0, 8);
-
-            return new[] { 
-            
+            return new[] 
+            { 
                 // Every so often
                 // Every so often
-                new TaskTriggerInfo { Type = TaskTriggerInfo.TriggerDaily, TimeOfDayTicks = TimeSpan.FromHours(startHour).Ticks}
+                new TaskTriggerInfo
+                {
+                    Type = TaskTriggerInfo.TriggerInterval,
+                    IntervalTicks = TimeSpan.FromDays(7).Ticks
+                }
             };
             };
         }
         }
 
 

+ 30 - 22
MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs

@@ -202,36 +202,44 @@ namespace MediaBrowser.MediaEncoding.Probing
             {
             {
                 using (var streamReader = new StreamReader(stream))
                 using (var streamReader = new StreamReader(stream))
                 {
                 {
-                    // Use XmlReader for best performance
-                    using (var reader = XmlReader.Create(streamReader))
+                    try
                     {
                     {
-                        reader.MoveToContent();
-                        reader.Read();
-
-                        // Loop through each element
-                        while (!reader.EOF)
+                        // Use XmlReader for best performance
+                        using (var reader = XmlReader.Create(streamReader))
                         {
                         {
-                            if (reader.NodeType == XmlNodeType.Element)
+                            reader.MoveToContent();
+                            reader.Read();
+
+                            // Loop through each element
+                            while (!reader.EOF)
                             {
                             {
-                                switch (reader.Name)
+                                if (reader.NodeType == XmlNodeType.Element)
                                 {
                                 {
-                                    case "dict":
-                                        using (var subtree = reader.ReadSubtree())
-                                        {
-                                            ReadFromDictNode(subtree, info);
-                                        }
-                                        break;
-                                    default:
-                                        reader.Skip();
-                                        break;
+                                    switch (reader.Name)
+                                    {
+                                        case "dict":
+                                            using (var subtree = reader.ReadSubtree())
+                                            {
+                                                ReadFromDictNode(subtree, info);
+                                            }
+                                            break;
+                                        default:
+                                            reader.Skip();
+                                            break;
+                                    }
+                                }
+                                else
+                                {
+                                    reader.Read();
                                 }
                                 }
-                            }
-                            else
-                            {
-                                reader.Read();
                             }
                             }
                         }
                         }
                     }
                     }
+                    catch (XmlException)
+                    {
+                        // I've seen probe examples where the iTunMOVI value is just "<"
+                        // So we should not allow this to fail the entire probing operation
+                    }
                 }
                 }
             }
             }
         }
         }

+ 4 - 4
MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesProvider.cs

@@ -377,7 +377,7 @@ namespace MediaBrowser.Providers.TV
         internal static bool IsValidSeries(Dictionary<string, string> seriesProviderIds)
         internal static bool IsValidSeries(Dictionary<string, string> seriesProviderIds)
         {
         {
             string id;
             string id;
-            if (seriesProviderIds.TryGetValue(MetadataProviders.Tvdb.ToString(), out id) && !string.IsNullOrEmpty(id))
+            if (seriesProviderIds.TryGetValue(MetadataProviders.Tvdb.ToString(), out id))
             {
             {
                 // This check should ideally never be necessary but we're seeing some cases of this and haven't tracked them down yet.
                 // This check should ideally never be necessary but we're seeing some cases of this and haven't tracked them down yet.
                 if (!string.IsNullOrWhiteSpace(id))
                 if (!string.IsNullOrWhiteSpace(id))
@@ -386,7 +386,7 @@ namespace MediaBrowser.Providers.TV
                 }
                 }
             }
             }
 
 
-            if (seriesProviderIds.TryGetValue(MetadataProviders.Imdb.ToString(), out id) && !string.IsNullOrEmpty(id))
+            if (seriesProviderIds.TryGetValue(MetadataProviders.Imdb.ToString(), out id))
             {
             {
                 // This check should ideally never be necessary but we're seeing some cases of this and haven't tracked them down yet.
                 // This check should ideally never be necessary but we're seeing some cases of this and haven't tracked them down yet.
                 if (!string.IsNullOrWhiteSpace(id))
                 if (!string.IsNullOrWhiteSpace(id))
@@ -405,7 +405,7 @@ namespace MediaBrowser.Providers.TV
             try
             try
             {
             {
                 string seriesId;
                 string seriesId;
-                if (seriesProviderIds.TryGetValue(MetadataProviders.Tvdb.ToString(), out seriesId) && !string.IsNullOrEmpty(seriesId))
+                if (seriesProviderIds.TryGetValue(MetadataProviders.Tvdb.ToString(), out seriesId) && !string.IsNullOrWhiteSpace(seriesId))
                 {
                 {
                     var seriesDataPath = GetSeriesDataPath(_config.ApplicationPaths, seriesProviderIds);
                     var seriesDataPath = GetSeriesDataPath(_config.ApplicationPaths, seriesProviderIds);
 
 
@@ -419,7 +419,7 @@ namespace MediaBrowser.Providers.TV
                     return seriesDataPath;
                     return seriesDataPath;
                 }
                 }
 
 
-                if (seriesProviderIds.TryGetValue(MetadataProviders.Imdb.ToString(), out seriesId) && !string.IsNullOrEmpty(seriesId))
+                if (seriesProviderIds.TryGetValue(MetadataProviders.Imdb.ToString(), out seriesId) && !string.IsNullOrWhiteSpace(seriesId))
                 {
                 {
                     var seriesDataPath = GetSeriesDataPath(_config.ApplicationPaths, seriesProviderIds);
                     var seriesDataPath = GetSeriesDataPath(_config.ApplicationPaths, seriesProviderIds);