mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-07-09 03:04:24 -04:00
update probing
This commit is contained in:
parent
232da3f17b
commit
f5467021b0
@ -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
|
return new[]
|
||||||
var startHour = new Random(_appHost.SystemId.GetHashCode()).Next(0, 8);
|
{
|
||||||
|
|
||||||
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
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
try
|
||||||
using (var reader = XmlReader.Create(streamReader))
|
|
||||||
{
|
{
|
||||||
reader.MoveToContent();
|
// Use XmlReader for best performance
|
||||||
reader.Read();
|
using (var reader = XmlReader.Create(streamReader))
|
||||||
|
|
||||||
// Loop through each element
|
|
||||||
while (!reader.EOF)
|
|
||||||
{
|
{
|
||||||
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":
|
switch (reader.Name)
|
||||||
using (var subtree = reader.ReadSubtree())
|
{
|
||||||
{
|
case "dict":
|
||||||
ReadFromDictNode(subtree, info);
|
using (var subtree = reader.ReadSubtree())
|
||||||
}
|
{
|
||||||
break;
|
ReadFromDictNode(subtree, info);
|
||||||
default:
|
}
|
||||||
reader.Skip();
|
break;
|
||||||
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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user