mirror of https://github.com/jellyfin/jellyfin.git
update interval trigger
This commit is contained in:
parent
d4050fbf2c
commit
5b21ec6747
|
@ -72,6 +72,7 @@ namespace MediaBrowser.Api
|
||||||
_config.Configuration.EnableUserSpecificUserViews = true;
|
_config.Configuration.EnableUserSpecificUserViews = true;
|
||||||
_config.Configuration.EnableCustomPathSubFolders = true;
|
_config.Configuration.EnableCustomPathSubFolders = true;
|
||||||
_config.Configuration.DisableXmlSavers = true;
|
_config.Configuration.DisableXmlSavers = true;
|
||||||
|
_config.Configuration.DisableStartupScan = true;
|
||||||
_config.SaveConfiguration();
|
_config.SaveConfiguration();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,17 @@ namespace MediaBrowser.Common.ScheduledTasks
|
||||||
/// </value>
|
/// </value>
|
||||||
public TaskExecutionOptions TaskOptions { get; set; }
|
public TaskExecutionOptions TaskOptions { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets the first run delay.
|
||||||
|
/// </summary>
|
||||||
|
/// <value>The first run delay.</value>
|
||||||
|
public TimeSpan FirstRunDelay { get; set; }
|
||||||
|
|
||||||
|
public IntervalTrigger()
|
||||||
|
{
|
||||||
|
FirstRunDelay = TimeSpan.FromHours(1);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Stars waiting for the trigger action
|
/// Stars waiting for the trigger action
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -41,7 +52,7 @@ namespace MediaBrowser.Common.ScheduledTasks
|
||||||
|
|
||||||
var triggerDate = lastResult != null ?
|
var triggerDate = lastResult != null ?
|
||||||
lastResult.EndTimeUtc.Add(Interval) :
|
lastResult.EndTimeUtc.Add(Interval) :
|
||||||
DateTime.UtcNow.Add(Interval);
|
DateTime.UtcNow.Add(FirstRunDelay);
|
||||||
|
|
||||||
if (DateTime.UtcNow > triggerDate)
|
if (DateTime.UtcNow > triggerDate)
|
||||||
{
|
{
|
||||||
|
|
|
@ -142,7 +142,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
public virtual string Path { get; set; }
|
public virtual string Path { get; set; }
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[IgnoreDataMember]
|
||||||
protected internal bool IsOffline { get; set; }
|
public bool IsOffline { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the folder containing the item.
|
/// Returns the folder containing the item.
|
||||||
|
|
|
@ -547,7 +547,8 @@ namespace MediaBrowser.Dlna
|
||||||
new DefaultProfile(),
|
new DefaultProfile(),
|
||||||
new PopcornHourProfile(),
|
new PopcornHourProfile(),
|
||||||
new VlcProfile(),
|
new VlcProfile(),
|
||||||
new BubbleUpnpProfile()
|
new BubbleUpnpProfile(),
|
||||||
|
new KodiProfile()
|
||||||
};
|
};
|
||||||
|
|
||||||
foreach (var item in list)
|
foreach (var item in list)
|
||||||
|
|
|
@ -166,7 +166,9 @@
|
||||||
<EmbeddedResource Include="Profiles\Xml\Sony Bravia %282010%29.xml" />
|
<EmbeddedResource Include="Profiles\Xml\Sony Bravia %282010%29.xml" />
|
||||||
<EmbeddedResource Include="Profiles\Xml\Sony Bravia %282011%29.xml" />
|
<EmbeddedResource Include="Profiles\Xml\Sony Bravia %282011%29.xml" />
|
||||||
<EmbeddedResource Include="Profiles\Xml\Sony Bravia %282012%29.xml" />
|
<EmbeddedResource Include="Profiles\Xml\Sony Bravia %282012%29.xml" />
|
||||||
<EmbeddedResource Include="Profiles\Xml\Sony Bravia %282013%29.xml" />
|
<EmbeddedResource Include="Profiles\Xml\Sony Bravia %282013%29.xml">
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</EmbeddedResource>
|
||||||
<EmbeddedResource Include="Profiles\Xml\Sony PlayStation 3.xml" />
|
<EmbeddedResource Include="Profiles\Xml\Sony PlayStation 3.xml" />
|
||||||
<EmbeddedResource Include="Profiles\Xml\WDTV Live.xml" />
|
<EmbeddedResource Include="Profiles\Xml\WDTV Live.xml" />
|
||||||
<EmbeddedResource Include="Profiles\Xml\Xbox 360.xml">
|
<EmbeddedResource Include="Profiles\Xml\Xbox 360.xml">
|
||||||
|
|
|
@ -0,0 +1,97 @@
|
||||||
|
using MediaBrowser.Model.Dlna;
|
||||||
|
using System.Xml.Serialization;
|
||||||
|
|
||||||
|
namespace MediaBrowser.Dlna.Profiles
|
||||||
|
{
|
||||||
|
[XmlRoot("Profile")]
|
||||||
|
public class KodiProfile : DefaultProfile
|
||||||
|
{
|
||||||
|
public KodiProfile()
|
||||||
|
{
|
||||||
|
Name = "Kodi";
|
||||||
|
|
||||||
|
MaxStreamingBitrate = 100000000;
|
||||||
|
MaxStaticBitrate = 100000000;
|
||||||
|
MusicStreamingTranscodingBitrate = 1280000;
|
||||||
|
MusicSyncBitrate = 1280000;
|
||||||
|
|
||||||
|
TimelineOffsetSeconds = 5;
|
||||||
|
|
||||||
|
Identification = new DeviceIdentification
|
||||||
|
{
|
||||||
|
ModelName = "Kodi",
|
||||||
|
|
||||||
|
Headers = new[]
|
||||||
|
{
|
||||||
|
new HttpHeaderInfo {Name = "User-Agent", Value = "Kodi", Match = HeaderMatchType.Substring}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
TranscodingProfiles = new[]
|
||||||
|
{
|
||||||
|
new TranscodingProfile
|
||||||
|
{
|
||||||
|
Container = "mp3",
|
||||||
|
AudioCodec = "mp3",
|
||||||
|
Type = DlnaProfileType.Audio
|
||||||
|
},
|
||||||
|
|
||||||
|
new TranscodingProfile
|
||||||
|
{
|
||||||
|
Container = "ts",
|
||||||
|
Type = DlnaProfileType.Video,
|
||||||
|
AudioCodec = "aac",
|
||||||
|
VideoCodec = "h264"
|
||||||
|
},
|
||||||
|
|
||||||
|
new TranscodingProfile
|
||||||
|
{
|
||||||
|
Container = "jpeg",
|
||||||
|
Type = DlnaProfileType.Photo
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
DirectPlayProfiles = new[]
|
||||||
|
{
|
||||||
|
new DirectPlayProfile
|
||||||
|
{
|
||||||
|
Container = "",
|
||||||
|
Type = DlnaProfileType.Video
|
||||||
|
},
|
||||||
|
|
||||||
|
new DirectPlayProfile
|
||||||
|
{
|
||||||
|
Container = "",
|
||||||
|
Type = DlnaProfileType.Audio
|
||||||
|
},
|
||||||
|
|
||||||
|
new DirectPlayProfile
|
||||||
|
{
|
||||||
|
Container = "",
|
||||||
|
Type = DlnaProfileType.Photo,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
ResponseProfiles = new ResponseProfile[] { };
|
||||||
|
|
||||||
|
ContainerProfiles = new ContainerProfile[] { };
|
||||||
|
|
||||||
|
CodecProfiles = new CodecProfile[] { };
|
||||||
|
|
||||||
|
SubtitleProfiles = new[]
|
||||||
|
{
|
||||||
|
new SubtitleProfile
|
||||||
|
{
|
||||||
|
Format = "srt",
|
||||||
|
Method = SubtitleDeliveryMethod.External,
|
||||||
|
},
|
||||||
|
|
||||||
|
new SubtitleProfile
|
||||||
|
{
|
||||||
|
Format = "sub",
|
||||||
|
Method = SubtitleDeliveryMethod.External,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -98,6 +98,12 @@ namespace MediaBrowser.Model.Configuration
|
||||||
/// <value><c>true</c> if [enable localized guids]; otherwise, <c>false</c>.</value>
|
/// <value><c>true</c> if [enable localized guids]; otherwise, <c>false</c>.</value>
|
||||||
public bool EnableLocalizedGuids { get; set; }
|
public bool EnableLocalizedGuids { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets or sets a value indicating whether [disable startup scan].
|
||||||
|
/// </summary>
|
||||||
|
/// <value><c>true</c> if [disable startup scan]; otherwise, <c>false</c>.</value>
|
||||||
|
public bool DisableStartupScan { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets a value indicating whether [enable library metadata sub folder].
|
/// Gets or sets a value indicating whether [enable library metadata sub folder].
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -131,7 +131,7 @@ namespace MediaBrowser.Providers.MediaInfo
|
||||||
{
|
{
|
||||||
return new ITaskTrigger[]
|
return new ITaskTrigger[]
|
||||||
{
|
{
|
||||||
new DailyTrigger { TimeOfDay = TimeSpan.FromHours(3) },
|
new IntervalTrigger{ Interval = TimeSpan.FromHours(8)}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ using MediaBrowser.Common.ScheduledTasks;
|
||||||
using MediaBrowser.Controller.Configuration;
|
using MediaBrowser.Controller.Configuration;
|
||||||
using MediaBrowser.Controller.Entities;
|
using MediaBrowser.Controller.Entities;
|
||||||
using MediaBrowser.Controller.Library;
|
using MediaBrowser.Controller.Library;
|
||||||
|
using MediaBrowser.Controller.Plugins;
|
||||||
using MediaBrowser.Model.Configuration;
|
using MediaBrowser.Model.Configuration;
|
||||||
using MediaBrowser.Model.Logging;
|
using MediaBrowser.Model.Logging;
|
||||||
using MediaBrowser.Server.Implementations.ScheduledTasks;
|
using MediaBrowser.Server.Implementations.ScheduledTasks;
|
||||||
|
@ -700,4 +701,23 @@ namespace MediaBrowser.Server.Implementations.IO
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class LibraryMonitorStartup : IServerEntryPoint
|
||||||
|
{
|
||||||
|
private readonly ILibraryMonitor _monitor;
|
||||||
|
|
||||||
|
public LibraryMonitorStartup(ILibraryMonitor monitor)
|
||||||
|
{
|
||||||
|
_monitor = monitor;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Run()
|
||||||
|
{
|
||||||
|
_monitor.Start();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -438,8 +438,6 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings
|
||||||
return lineups;
|
return lineups;
|
||||||
}
|
}
|
||||||
|
|
||||||
_logger.Info("Headends on account ");
|
|
||||||
|
|
||||||
var options = new HttpRequestOptions()
|
var options = new HttpRequestOptions()
|
||||||
{
|
{
|
||||||
Url = ApiUrl + "/headends?country=" + country + "&postalcode=" + location,
|
Url = ApiUrl + "/headends?country=" + country + "&postalcode=" + location,
|
||||||
|
@ -454,16 +452,13 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings
|
||||||
using (Stream responce = await _httpClient.Get(options).ConfigureAwait(false))
|
using (Stream responce = await _httpClient.Get(options).ConfigureAwait(false))
|
||||||
{
|
{
|
||||||
var root = _jsonSerializer.DeserializeFromStream<List<ScheduleDirect.Headends>>(responce);
|
var root = _jsonSerializer.DeserializeFromStream<List<ScheduleDirect.Headends>>(responce);
|
||||||
_logger.Info("Lineups on account ");
|
|
||||||
if (root != null)
|
if (root != null)
|
||||||
{
|
{
|
||||||
foreach (ScheduleDirect.Headends headend in root)
|
foreach (ScheduleDirect.Headends headend in root)
|
||||||
{
|
{
|
||||||
_logger.Info("Headend: " + headend.headend);
|
|
||||||
foreach (ScheduleDirect.Lineup lineup in headend.lineups)
|
foreach (ScheduleDirect.Lineup lineup in headend.lineups)
|
||||||
{
|
{
|
||||||
_logger.Info("Headend: " + lineup.uri);
|
|
||||||
|
|
||||||
lineups.Add(new NameIdPair
|
lineups.Add(new NameIdPair
|
||||||
{
|
{
|
||||||
Name = string.IsNullOrWhiteSpace(lineup.name) ? lineup.lineup : lineup.name,
|
Name = string.IsNullOrWhiteSpace(lineup.name) ? lineup.lineup : lineup.name,
|
||||||
|
@ -474,7 +469,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.Listings
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_logger.Info("No lineups on account");
|
_logger.Info("No lineups available");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,14 +1,15 @@
|
||||||
using MediaBrowser.Common.Progress;
|
using MediaBrowser.Common.Progress;
|
||||||
using MediaBrowser.Common.ScheduledTasks;
|
using MediaBrowser.Common.ScheduledTasks;
|
||||||
|
using MediaBrowser.Controller.Configuration;
|
||||||
using MediaBrowser.Controller.Entities;
|
using MediaBrowser.Controller.Entities;
|
||||||
using MediaBrowser.Controller.Library;
|
using MediaBrowser.Controller.Library;
|
||||||
using MediaBrowser.Controller.LiveTv;
|
using MediaBrowser.Controller.LiveTv;
|
||||||
using MediaBrowser.Controller.Persistence;
|
using MediaBrowser.Controller.Persistence;
|
||||||
|
using MediaBrowser.Model.Logging;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using MediaBrowser.Model.Logging;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Server.Implementations.Persistence
|
namespace MediaBrowser.Server.Implementations.Persistence
|
||||||
{
|
{
|
||||||
|
@ -17,12 +18,14 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||||
private readonly ILibraryManager _libraryManager;
|
private readonly ILibraryManager _libraryManager;
|
||||||
private readonly IItemRepository _itemRepo;
|
private readonly IItemRepository _itemRepo;
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
|
private readonly IServerConfigurationManager _config;
|
||||||
|
|
||||||
public CleanDatabaseScheduledTask(ILibraryManager libraryManager, IItemRepository itemRepo, ILogger logger)
|
public CleanDatabaseScheduledTask(ILibraryManager libraryManager, IItemRepository itemRepo, ILogger logger, IServerConfigurationManager config)
|
||||||
{
|
{
|
||||||
_libraryManager = libraryManager;
|
_libraryManager = libraryManager;
|
||||||
_itemRepo = itemRepo;
|
_itemRepo = itemRepo;
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
|
_config = config;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string Name
|
public string Name
|
||||||
|
@ -53,7 +56,6 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||||
var itemIds = _libraryManager.GetItemIds(new InternalItemsQuery
|
var itemIds = _libraryManager.GetItemIds(new InternalItemsQuery
|
||||||
{
|
{
|
||||||
IsCurrentSchema = false,
|
IsCurrentSchema = false,
|
||||||
Limit = 100000,
|
|
||||||
|
|
||||||
// These are constantly getting regenerated so don't bother with them here
|
// These are constantly getting regenerated so don't bother with them here
|
||||||
ExcludeItemTypes = new[] { typeof(LiveTvProgram).Name }
|
ExcludeItemTypes = new[] { typeof(LiveTvProgram).Name }
|
||||||
|
@ -81,6 +83,12 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||||
progress.Report(percent * 100);
|
progress.Report(percent * 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!_config.Configuration.DisableStartupScan)
|
||||||
|
{
|
||||||
|
_config.Configuration.DisableStartupScan = true;
|
||||||
|
_config.SaveConfiguration();
|
||||||
|
}
|
||||||
|
|
||||||
progress.Report(100);
|
progress.Report(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -72,7 +72,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||||
private IDbCommand _deletePeopleCommand;
|
private IDbCommand _deletePeopleCommand;
|
||||||
private IDbCommand _savePersonCommand;
|
private IDbCommand _savePersonCommand;
|
||||||
|
|
||||||
private const int LatestSchemaVersion = 4;
|
private const int LatestSchemaVersion = 6;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="SqliteItemRepository"/> class.
|
/// Initializes a new instance of the <see cref="SqliteItemRepository"/> class.
|
||||||
|
@ -173,6 +173,9 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||||
_connection.AddColumn(_logger, "TypedBaseItems", "DateCreated", "DATETIME");
|
_connection.AddColumn(_logger, "TypedBaseItems", "DateCreated", "DATETIME");
|
||||||
_connection.AddColumn(_logger, "TypedBaseItems", "DateModified", "DATETIME");
|
_connection.AddColumn(_logger, "TypedBaseItems", "DateModified", "DATETIME");
|
||||||
|
|
||||||
|
_connection.AddColumn(_logger, "TypedBaseItems", "ForcedSortName", "Text");
|
||||||
|
_connection.AddColumn(_logger, "TypedBaseItems", "IsOffline", "BIT");
|
||||||
|
|
||||||
PrepareStatements();
|
PrepareStatements();
|
||||||
|
|
||||||
_mediaStreamsRepository.Initialize();
|
_mediaStreamsRepository.Initialize();
|
||||||
|
@ -223,7 +226,9 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||||
"VoteCount",
|
"VoteCount",
|
||||||
"DisplayMediaType",
|
"DisplayMediaType",
|
||||||
"DateCreated",
|
"DateCreated",
|
||||||
"DateModified"
|
"DateModified",
|
||||||
|
"ForcedSortName",
|
||||||
|
"IsOffline"
|
||||||
};
|
};
|
||||||
_saveItemCommand = _connection.CreateCommand();
|
_saveItemCommand = _connection.CreateCommand();
|
||||||
_saveItemCommand.CommandText = "replace into TypedBaseItems (" + string.Join(",", saveColumns.ToArray()) + ") values (";
|
_saveItemCommand.CommandText = "replace into TypedBaseItems (" + string.Join(",", saveColumns.ToArray()) + ") values (";
|
||||||
|
@ -391,6 +396,9 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||||
_saveItemCommand.GetParameter(index++).Value = item.DateCreated;
|
_saveItemCommand.GetParameter(index++).Value = item.DateCreated;
|
||||||
_saveItemCommand.GetParameter(index++).Value = item.DateModified;
|
_saveItemCommand.GetParameter(index++).Value = item.DateModified;
|
||||||
|
|
||||||
|
_saveItemCommand.GetParameter(index++).Value = item.ForcedSortName;
|
||||||
|
_saveItemCommand.GetParameter(index++).Value = item.IsOffline;
|
||||||
|
|
||||||
_saveItemCommand.Transaction = transaction;
|
_saveItemCommand.Transaction = transaction;
|
||||||
|
|
||||||
_saveItemCommand.ExecuteNonQuery();
|
_saveItemCommand.ExecuteNonQuery();
|
||||||
|
@ -948,7 +956,6 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||||
}
|
}
|
||||||
|
|
||||||
var includeTypes = query.IncludeItemTypes.SelectMany(MapIncludeItemTypes).ToArray();
|
var includeTypes = query.IncludeItemTypes.SelectMany(MapIncludeItemTypes).ToArray();
|
||||||
|
|
||||||
if (includeTypes.Length == 1)
|
if (includeTypes.Length == 1)
|
||||||
{
|
{
|
||||||
whereClauses.Add("type=@type");
|
whereClauses.Add("type=@type");
|
||||||
|
@ -959,6 +966,19 @@ namespace MediaBrowser.Server.Implementations.Persistence
|
||||||
var inClause = string.Join(",", includeTypes.Select(i => "'" + i + "'").ToArray());
|
var inClause = string.Join(",", includeTypes.Select(i => "'" + i + "'").ToArray());
|
||||||
whereClauses.Add(string.Format("type in ({0})", inClause));
|
whereClauses.Add(string.Format("type in ({0})", inClause));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var excludeTypes = query.ExcludeItemTypes.SelectMany(MapIncludeItemTypes).ToArray();
|
||||||
|
if (excludeTypes.Length == 1)
|
||||||
|
{
|
||||||
|
whereClauses.Add("type<>@type");
|
||||||
|
cmd.Parameters.Add(cmd, "@type", DbType.String).Value = excludeTypes[0];
|
||||||
|
}
|
||||||
|
else if (excludeTypes.Length > 1)
|
||||||
|
{
|
||||||
|
var inClause = string.Join(",", excludeTypes.Select(i => "'" + i + "'").ToArray());
|
||||||
|
whereClauses.Add(string.Format("type not in ({0})", inClause));
|
||||||
|
}
|
||||||
|
|
||||||
if (query.ChannelIds.Length == 1)
|
if (query.ChannelIds.Length == 1)
|
||||||
{
|
{
|
||||||
whereClauses.Add("ChannelId=@ChannelId");
|
whereClauses.Add("ChannelId=@ChannelId");
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
using MediaBrowser.Common.ScheduledTasks;
|
using System.Linq;
|
||||||
|
using MediaBrowser.Common.ScheduledTasks;
|
||||||
|
using MediaBrowser.Controller.Configuration;
|
||||||
using MediaBrowser.Controller.Library;
|
using MediaBrowser.Controller.Library;
|
||||||
using MediaBrowser.Server.Implementations.Library;
|
using MediaBrowser.Server.Implementations.Library;
|
||||||
using System;
|
using System;
|
||||||
|
@ -17,14 +19,16 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks
|
||||||
/// The _library manager
|
/// The _library manager
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private readonly ILibraryManager _libraryManager;
|
private readonly ILibraryManager _libraryManager;
|
||||||
|
private readonly IServerConfigurationManager _config;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="RefreshMediaLibraryTask" /> class.
|
/// Initializes a new instance of the <see cref="RefreshMediaLibraryTask" /> class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="libraryManager">The library manager.</param>
|
/// <param name="libraryManager">The library manager.</param>
|
||||||
public RefreshMediaLibraryTask(ILibraryManager libraryManager)
|
public RefreshMediaLibraryTask(ILibraryManager libraryManager, IServerConfigurationManager config)
|
||||||
{
|
{
|
||||||
_libraryManager = libraryManager;
|
_libraryManager = libraryManager;
|
||||||
|
_config = config;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -33,12 +37,18 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks
|
||||||
/// <returns>IEnumerable{BaseTaskTrigger}.</returns>
|
/// <returns>IEnumerable{BaseTaskTrigger}.</returns>
|
||||||
public IEnumerable<ITaskTrigger> GetDefaultTriggers()
|
public IEnumerable<ITaskTrigger> GetDefaultTriggers()
|
||||||
{
|
{
|
||||||
return new ITaskTrigger[] {
|
var list = new ITaskTrigger[] {
|
||||||
|
|
||||||
new StartupTrigger(),
|
|
||||||
|
|
||||||
new IntervalTrigger{ Interval = TimeSpan.FromHours(8)}
|
new IntervalTrigger{ Interval = TimeSpan.FromHours(8)}
|
||||||
};
|
|
||||||
|
}.ToList();
|
||||||
|
|
||||||
|
if (!_config.Configuration.DisableStartupScan)
|
||||||
|
{
|
||||||
|
list.Add(new StartupTrigger());
|
||||||
|
}
|
||||||
|
|
||||||
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
Loading…
Reference in New Issue