mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-05-24 02:02:29 -04:00
Merge pull request #14028 from Shadowghost/cleanup-tasks
Cleanup Tasks and Validators
This commit is contained in:
commit
b4a58ee13a
@ -5,8 +5,8 @@ using MediaBrowser.Controller.Library;
|
||||
using MediaBrowser.Controller.Persistence;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Emby.Server.Implementations.Library.Validators
|
||||
{
|
||||
namespace Emby.Server.Implementations.Library.Validators;
|
||||
|
||||
/// <summary>
|
||||
/// Class ArtistsPostScanTask.
|
||||
/// </summary>
|
||||
@ -46,4 +46,3 @@ namespace Emby.Server.Implementations.Library.Validators
|
||||
return new ArtistsValidator(_libraryManager, _logger, _itemRepo).Run(progress, cancellationToken);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -10,8 +10,8 @@ using MediaBrowser.Controller.Library;
|
||||
using MediaBrowser.Controller.Persistence;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Emby.Server.Implementations.Library.Validators
|
||||
{
|
||||
namespace Emby.Server.Implementations.Library.Validators;
|
||||
|
||||
/// <summary>
|
||||
/// Class ArtistsValidator.
|
||||
/// </summary>
|
||||
@ -82,7 +82,7 @@ namespace Emby.Server.Implementations.Library.Validators
|
||||
|
||||
var deadEntities = _libraryManager.GetItemList(new InternalItemsQuery
|
||||
{
|
||||
IncludeItemTypes = new[] { BaseItemKind.MusicArtist },
|
||||
IncludeItemTypes = [BaseItemKind.MusicArtist],
|
||||
IsDeadArtist = true,
|
||||
IsLocked = false
|
||||
}).Cast<MusicArtist>().ToList();
|
||||
@ -94,7 +94,7 @@ namespace Emby.Server.Implementations.Library.Validators
|
||||
continue;
|
||||
}
|
||||
|
||||
_logger.LogInformation("Deleting dead {2} {0} {1}.", item.Id.ToString("N", CultureInfo.InvariantCulture), item.Name, item.GetType().Name);
|
||||
_logger.LogInformation("Deleting dead {ItemType} {ItemId} {ItemName}", item.GetType().Name, item.Id.ToString("N", CultureInfo.InvariantCulture), item.Name);
|
||||
|
||||
_libraryManager.DeleteItem(
|
||||
item,
|
||||
@ -108,4 +108,3 @@ namespace Emby.Server.Implementations.Library.Validators
|
||||
progress.Report(100);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -9,12 +9,10 @@ using MediaBrowser.Controller.Collections;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Entities.Movies;
|
||||
using MediaBrowser.Controller.Library;
|
||||
using MediaBrowser.Model.Entities;
|
||||
using MediaBrowser.Model.Querying;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Emby.Server.Implementations.Library.Validators
|
||||
{
|
||||
namespace Emby.Server.Implementations.Library.Validators;
|
||||
|
||||
/// <summary>
|
||||
/// Class CollectionPostScanTask.
|
||||
/// </summary>
|
||||
@ -64,10 +62,10 @@ namespace Emby.Server.Implementations.Library.Validators
|
||||
{
|
||||
var movies = _libraryManager.GetItemList(new InternalItemsQuery
|
||||
{
|
||||
MediaTypes = new[] { MediaType.Video },
|
||||
IncludeItemTypes = new[] { BaseItemKind.Movie },
|
||||
MediaTypes = [MediaType.Video],
|
||||
IncludeItemTypes = [BaseItemKind.Movie],
|
||||
IsVirtualItem = false,
|
||||
OrderBy = new[] { (ItemSortBy.SortName, SortOrder.Ascending) },
|
||||
OrderBy = [(ItemSortBy.SortName, SortOrder.Ascending)],
|
||||
Parent = library,
|
||||
StartIndex = startIndex,
|
||||
Limit = pagesize,
|
||||
@ -109,7 +107,7 @@ namespace Emby.Server.Implementations.Library.Validators
|
||||
|
||||
var boxSets = _libraryManager.GetItemList(new InternalItemsQuery
|
||||
{
|
||||
IncludeItemTypes = new[] { BaseItemKind.BoxSet },
|
||||
IncludeItemTypes = [BaseItemKind.BoxSet],
|
||||
CollapseBoxSetItems = false,
|
||||
Recursive = true
|
||||
});
|
||||
@ -128,14 +126,14 @@ namespace Emby.Server.Implementations.Library.Validators
|
||||
{
|
||||
Name = collectionName,
|
||||
IsLocked = true
|
||||
});
|
||||
}).ConfigureAwait(false);
|
||||
|
||||
await _collectionManager.AddToCollectionAsync(boxSet.Id, movieIds);
|
||||
await _collectionManager.AddToCollectionAsync(boxSet.Id, movieIds).ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
await _collectionManager.AddToCollectionAsync(boxSet.Id, movieIds);
|
||||
await _collectionManager.AddToCollectionAsync(boxSet.Id, movieIds).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
numComplete++;
|
||||
@ -154,4 +152,3 @@ namespace Emby.Server.Implementations.Library.Validators
|
||||
progress.Report(100);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -5,8 +5,8 @@ using MediaBrowser.Controller.Library;
|
||||
using MediaBrowser.Controller.Persistence;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Emby.Server.Implementations.Library.Validators
|
||||
{
|
||||
namespace Emby.Server.Implementations.Library.Validators;
|
||||
|
||||
/// <summary>
|
||||
/// Class GenresPostScanTask.
|
||||
/// </summary>
|
||||
@ -46,4 +46,3 @@ namespace Emby.Server.Implementations.Library.Validators
|
||||
return new GenresValidator(_libraryManager, _logger, _itemRepo).Run(progress, cancellationToken);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -8,8 +8,8 @@ using MediaBrowser.Controller.Library;
|
||||
using MediaBrowser.Controller.Persistence;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Emby.Server.Implementations.Library.Validators
|
||||
{
|
||||
namespace Emby.Server.Implementations.Library.Validators;
|
||||
|
||||
/// <summary>
|
||||
/// Class GenresValidator.
|
||||
/// </summary>
|
||||
@ -101,4 +101,3 @@ namespace Emby.Server.Implementations.Library.Validators
|
||||
progress.Report(100);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -5,8 +5,8 @@ using MediaBrowser.Controller.Library;
|
||||
using MediaBrowser.Controller.Persistence;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Emby.Server.Implementations.Library.Validators
|
||||
{
|
||||
namespace Emby.Server.Implementations.Library.Validators;
|
||||
|
||||
/// <summary>
|
||||
/// Class MusicGenresPostScanTask.
|
||||
/// </summary>
|
||||
@ -46,4 +46,3 @@ namespace Emby.Server.Implementations.Library.Validators
|
||||
return new MusicGenresValidator(_libraryManager, _logger, _itemRepo).Run(progress, cancellationToken);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -5,8 +5,8 @@ using MediaBrowser.Controller.Library;
|
||||
using MediaBrowser.Controller.Persistence;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Emby.Server.Implementations.Library.Validators
|
||||
{
|
||||
namespace Emby.Server.Implementations.Library.Validators;
|
||||
|
||||
/// <summary>
|
||||
/// Class MusicGenresValidator.
|
||||
/// </summary>
|
||||
@ -78,4 +78,3 @@ namespace Emby.Server.Implementations.Library.Validators
|
||||
progress.Report(100);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -9,8 +9,8 @@ using MediaBrowser.Controller.Providers;
|
||||
using MediaBrowser.Model.IO;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Emby.Server.Implementations.Library.Validators
|
||||
{
|
||||
namespace Emby.Server.Implementations.Library.Validators;
|
||||
|
||||
/// <summary>
|
||||
/// Class PeopleValidator.
|
||||
/// </summary>
|
||||
@ -55,7 +55,7 @@ namespace Emby.Server.Implementations.Library.Validators
|
||||
|
||||
var numPeople = people.Count;
|
||||
|
||||
_logger.LogDebug("Will refresh {0} people", numPeople);
|
||||
_logger.LogDebug("Will refresh {Amount} people", numPeople);
|
||||
|
||||
foreach (var person in people)
|
||||
{
|
||||
@ -104,11 +104,7 @@ namespace Emby.Server.Implementations.Library.Validators
|
||||
|
||||
foreach (var item in deadEntities)
|
||||
{
|
||||
_logger.LogInformation(
|
||||
"Deleting dead {2} {0} {1}.",
|
||||
item.Id.ToString("N", CultureInfo.InvariantCulture),
|
||||
item.Name,
|
||||
item.GetType().Name);
|
||||
_logger.LogInformation("Deleting dead {ItemType} {ItemId} {ItemName}", item.GetType().Name, item.Id.ToString("N", CultureInfo.InvariantCulture), item.Name);
|
||||
|
||||
_libraryManager.DeleteItem(
|
||||
item,
|
||||
@ -124,4 +120,3 @@ namespace Emby.Server.Implementations.Library.Validators
|
||||
_logger.LogInformation("People validation complete");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -5,8 +5,8 @@ using MediaBrowser.Controller.Library;
|
||||
using MediaBrowser.Controller.Persistence;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Emby.Server.Implementations.Library.Validators
|
||||
{
|
||||
namespace Emby.Server.Implementations.Library.Validators;
|
||||
|
||||
/// <summary>
|
||||
/// Class MusicGenresPostScanTask.
|
||||
/// </summary>
|
||||
@ -47,4 +47,3 @@ namespace Emby.Server.Implementations.Library.Validators
|
||||
return new StudiosValidator(_libraryManager, _logger, _itemRepo).Run(progress, cancellationToken);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -8,8 +8,8 @@ using MediaBrowser.Controller.Library;
|
||||
using MediaBrowser.Controller.Persistence;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Emby.Server.Implementations.Library.Validators
|
||||
{
|
||||
namespace Emby.Server.Implementations.Library.Validators;
|
||||
|
||||
/// <summary>
|
||||
/// Class StudiosValidator.
|
||||
/// </summary>
|
||||
@ -81,7 +81,7 @@ namespace Emby.Server.Implementations.Library.Validators
|
||||
|
||||
var deadEntities = _libraryManager.GetItemList(new InternalItemsQuery
|
||||
{
|
||||
IncludeItemTypes = new[] { BaseItemKind.Studio },
|
||||
IncludeItemTypes = [BaseItemKind.Studio],
|
||||
IsDeadStudio = true,
|
||||
IsLocked = false
|
||||
});
|
||||
@ -102,4 +102,3 @@ namespace Emby.Server.Implementations.Library.Validators
|
||||
progress.Report(100);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -16,8 +16,8 @@ using MediaBrowser.Common.Extensions;
|
||||
using MediaBrowser.Model.Tasks;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Emby.Server.Implementations.ScheduledTasks
|
||||
{
|
||||
namespace Emby.Server.Implementations.ScheduledTasks;
|
||||
|
||||
/// <summary>
|
||||
/// Class ScheduledTaskWorker.
|
||||
/// </summary>
|
||||
@ -676,4 +676,3 @@ namespace Emby.Server.Implementations.ScheduledTasks
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -8,8 +8,8 @@ using MediaBrowser.Common.Configuration;
|
||||
using MediaBrowser.Model.Tasks;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Emby.Server.Implementations.ScheduledTasks
|
||||
{
|
||||
namespace Emby.Server.Implementations.ScheduledTasks;
|
||||
|
||||
/// <summary>
|
||||
/// Class TaskManager.
|
||||
/// </summary>
|
||||
@ -36,7 +36,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
|
||||
_applicationPaths = applicationPaths;
|
||||
_logger = logger;
|
||||
|
||||
ScheduledTasks = Array.Empty<IScheduledTaskWorker>();
|
||||
ScheduledTasks = [];
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
@ -81,7 +81,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
|
||||
|
||||
if (scheduledTask is null)
|
||||
{
|
||||
_logger.LogError("Unable to find scheduled task of type {0} in QueueScheduledTask.", typeof(T).Name);
|
||||
_logger.LogError("Unable to find scheduled task of type {Type} in QueueScheduledTask.", typeof(T).Name);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -116,13 +116,13 @@ namespace Emby.Server.Implementations.ScheduledTasks
|
||||
|
||||
if (scheduledTask is null)
|
||||
{
|
||||
_logger.LogError("Unable to find scheduled task of type {0} in Execute.", typeof(T).Name);
|
||||
_logger.LogError("Unable to find scheduled task of type {Type} in Execute.", typeof(T).Name);
|
||||
}
|
||||
else
|
||||
{
|
||||
var type = scheduledTask.ScheduledTask.GetType();
|
||||
|
||||
_logger.LogDebug("Queuing task {0}", type.Name);
|
||||
_logger.LogDebug("Queuing task {Name}", type.Name);
|
||||
|
||||
lock (_taskQueue)
|
||||
{
|
||||
@ -141,7 +141,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
|
||||
|
||||
if (scheduledTask is null)
|
||||
{
|
||||
_logger.LogError("Unable to find scheduled task of type {0} in QueueScheduledTask.", task.GetType().Name);
|
||||
_logger.LogError("Unable to find scheduled task of type {Type} in QueueScheduledTask.", task.GetType().Name);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -158,7 +158,7 @@ namespace Emby.Server.Implementations.ScheduledTasks
|
||||
{
|
||||
var type = task.ScheduledTask.GetType();
|
||||
|
||||
_logger.LogDebug("Queuing task {0}", type.Name);
|
||||
_logger.LogDebug("Queuing task {Name}", type.Name);
|
||||
|
||||
lock (_taskQueue)
|
||||
{
|
||||
@ -261,4 +261,3 @@ namespace Emby.Server.Implementations.ScheduledTasks
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -156,14 +156,11 @@ public partial class AudioNormalizationTask : IScheduledTask
|
||||
/// <inheritdoc />
|
||||
public IEnumerable<TaskTriggerInfo> GetDefaultTriggers()
|
||||
{
|
||||
return
|
||||
[
|
||||
new TaskTriggerInfo
|
||||
yield return new TaskTriggerInfo
|
||||
{
|
||||
Type = TaskTriggerInfoType.IntervalTrigger,
|
||||
IntervalTicks = TimeSpan.FromHours(24).Ticks
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
private async Task<float?> CalculateLUFSAsync(string inputArgs, bool waitForExit, CancellationToken cancellationToken)
|
||||
@ -194,7 +191,7 @@ public partial class AudioNormalizationTask : IScheduledTask
|
||||
|
||||
using var reader = process.StandardError;
|
||||
float? lufs = null;
|
||||
await foreach (var line in reader.ReadAllLinesAsync(cancellationToken))
|
||||
await foreach (var line in reader.ReadAllLinesAsync(cancellationToken).ConfigureAwait(false))
|
||||
{
|
||||
Match match = LUFSRegex().Match(line);
|
||||
if (match.Success)
|
||||
|
@ -17,8 +17,8 @@ using MediaBrowser.Model.IO;
|
||||
using MediaBrowser.Model.Tasks;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Emby.Server.Implementations.ScheduledTasks.Tasks
|
||||
{
|
||||
namespace Emby.Server.Implementations.ScheduledTasks.Tasks;
|
||||
|
||||
/// <summary>
|
||||
/// Class ChapterImagesTask.
|
||||
/// </summary>
|
||||
@ -71,15 +71,12 @@ namespace Emby.Server.Implementations.ScheduledTasks.Tasks
|
||||
/// <inheritdoc />
|
||||
public IEnumerable<TaskTriggerInfo> GetDefaultTriggers()
|
||||
{
|
||||
return
|
||||
[
|
||||
new TaskTriggerInfo
|
||||
yield return new TaskTriggerInfo
|
||||
{
|
||||
Type = TaskTriggerInfoType.DailyTrigger,
|
||||
TimeOfDayTicks = TimeSpan.FromHours(2).Ticks,
|
||||
MaxRuntimeTicks = TimeSpan.FromHours(4).Ticks
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
@ -169,4 +166,3 @@ namespace Emby.Server.Implementations.ScheduledTasks.Tasks
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -7,8 +7,8 @@ using MediaBrowser.Model.Activity;
|
||||
using MediaBrowser.Model.Globalization;
|
||||
using MediaBrowser.Model.Tasks;
|
||||
|
||||
namespace Emby.Server.Implementations.ScheduledTasks.Tasks
|
||||
{
|
||||
namespace Emby.Server.Implementations.ScheduledTasks.Tasks;
|
||||
|
||||
/// <summary>
|
||||
/// Deletes old activity log entries.
|
||||
/// </summary>
|
||||
@ -74,4 +74,3 @@ namespace Emby.Server.Implementations.ScheduledTasks.Tasks
|
||||
return [];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -27,7 +27,6 @@ public class CleanupCollectionAndPlaylistPathsTask : IScheduledTask
|
||||
private readonly IPlaylistManager _playlistManager;
|
||||
private readonly ILogger<CleanupCollectionAndPlaylistPathsTask> _logger;
|
||||
private readonly IProviderManager _providerManager;
|
||||
private readonly IFileSystem _fileSystem;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="CleanupCollectionAndPlaylistPathsTask"/> class.
|
||||
@ -37,21 +36,18 @@ public class CleanupCollectionAndPlaylistPathsTask : IScheduledTask
|
||||
/// <param name="playlistManager">Instance of the <see cref="IPlaylistManager"/> interface.</param>
|
||||
/// <param name="logger">Instance of the <see cref="ILogger"/> interface.</param>
|
||||
/// <param name="providerManager">Instance of the <see cref="IProviderManager"/> interface.</param>
|
||||
/// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
|
||||
public CleanupCollectionAndPlaylistPathsTask(
|
||||
ILocalizationManager localization,
|
||||
ICollectionManager collectionManager,
|
||||
IPlaylistManager playlistManager,
|
||||
ILogger<CleanupCollectionAndPlaylistPathsTask> logger,
|
||||
IProviderManager providerManager,
|
||||
IFileSystem fileSystem)
|
||||
IProviderManager providerManager)
|
||||
{
|
||||
_localization = localization;
|
||||
_collectionManager = collectionManager;
|
||||
_playlistManager = playlistManager;
|
||||
_logger = logger;
|
||||
_providerManager = providerManager;
|
||||
_fileSystem = fileSystem;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
@ -135,6 +131,9 @@ public class CleanupCollectionAndPlaylistPathsTask : IScheduledTask
|
||||
/// <inheritdoc />
|
||||
public IEnumerable<TaskTriggerInfo> GetDefaultTriggers()
|
||||
{
|
||||
return [new TaskTriggerInfo() { Type = TaskTriggerInfoType.StartupTrigger }];
|
||||
yield return new TaskTriggerInfo
|
||||
{
|
||||
Type = TaskTriggerInfoType.StartupTrigger,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -11,8 +11,8 @@ using MediaBrowser.Model.IO;
|
||||
using MediaBrowser.Model.Tasks;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Emby.Server.Implementations.ScheduledTasks.Tasks
|
||||
{
|
||||
namespace Emby.Server.Implementations.ScheduledTasks.Tasks;
|
||||
|
||||
/// <summary>
|
||||
/// Deletes old cache files.
|
||||
/// </summary>
|
||||
@ -70,11 +70,11 @@ namespace Emby.Server.Implementations.ScheduledTasks.Tasks
|
||||
/// <inheritdoc />
|
||||
public IEnumerable<TaskTriggerInfo> GetDefaultTriggers()
|
||||
{
|
||||
return
|
||||
[
|
||||
// Every so often
|
||||
new TaskTriggerInfo { Type = TaskTriggerInfoType.IntervalTrigger, IntervalTicks = TimeSpan.FromHours(24).Ticks }
|
||||
];
|
||||
yield return new TaskTriggerInfo
|
||||
{
|
||||
Type = TaskTriggerInfoType.IntervalTrigger,
|
||||
IntervalTicks = TimeSpan.FromHours(24).Ticks
|
||||
};
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
@ -141,4 +141,3 @@ namespace Emby.Server.Implementations.ScheduledTasks.Tasks
|
||||
progress.Report(100);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -9,8 +9,8 @@ using MediaBrowser.Model.Globalization;
|
||||
using MediaBrowser.Model.IO;
|
||||
using MediaBrowser.Model.Tasks;
|
||||
|
||||
namespace Emby.Server.Implementations.ScheduledTasks.Tasks
|
||||
{
|
||||
namespace Emby.Server.Implementations.ScheduledTasks.Tasks;
|
||||
|
||||
/// <summary>
|
||||
/// Deletes old log files.
|
||||
/// </summary>
|
||||
@ -60,10 +60,11 @@ namespace Emby.Server.Implementations.ScheduledTasks.Tasks
|
||||
/// <inheritdoc />
|
||||
public IEnumerable<TaskTriggerInfo> GetDefaultTriggers()
|
||||
{
|
||||
return
|
||||
[
|
||||
new TaskTriggerInfo { Type = TaskTriggerInfoType.IntervalTrigger, IntervalTicks = TimeSpan.FromHours(24).Ticks }
|
||||
];
|
||||
yield return new TaskTriggerInfo
|
||||
{
|
||||
Type = TaskTriggerInfoType.IntervalTrigger,
|
||||
IntervalTicks = TimeSpan.FromHours(24).Ticks
|
||||
};
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
@ -98,4 +99,3 @@ namespace Emby.Server.Implementations.ScheduledTasks.Tasks
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -10,8 +10,8 @@ using MediaBrowser.Model.IO;
|
||||
using MediaBrowser.Model.Tasks;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Emby.Server.Implementations.ScheduledTasks.Tasks
|
||||
{
|
||||
namespace Emby.Server.Implementations.ScheduledTasks.Tasks;
|
||||
|
||||
/// <summary>
|
||||
/// Deletes all transcoding temp files.
|
||||
/// </summary>
|
||||
@ -65,18 +65,16 @@ namespace Emby.Server.Implementations.ScheduledTasks.Tasks
|
||||
/// <inheritdoc />
|
||||
public IEnumerable<TaskTriggerInfo> GetDefaultTriggers()
|
||||
{
|
||||
return
|
||||
[
|
||||
new TaskTriggerInfo
|
||||
yield return new TaskTriggerInfo
|
||||
{
|
||||
Type = TaskTriggerInfoType.StartupTrigger
|
||||
},
|
||||
new TaskTriggerInfo
|
||||
};
|
||||
|
||||
yield return new TaskTriggerInfo
|
||||
{
|
||||
Type = TaskTriggerInfoType.IntervalTrigger,
|
||||
IntervalTicks = TimeSpan.FromHours(24).Ticks
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
@ -124,4 +122,3 @@ namespace Emby.Server.Implementations.ScheduledTasks.Tasks
|
||||
progress.Report(100);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -62,11 +62,11 @@ public class MediaSegmentExtractionTask : IScheduledTask
|
||||
|
||||
var query = new InternalItemsQuery
|
||||
{
|
||||
MediaTypes = new[] { MediaType.Video, MediaType.Audio },
|
||||
MediaTypes = [MediaType.Video, MediaType.Audio],
|
||||
IsVirtualItem = false,
|
||||
IncludeItemTypes = _itemTypes,
|
||||
DtoOptions = new DtoOptions(true),
|
||||
SourceTypes = new[] { SourceType.Library },
|
||||
SourceTypes = [SourceType.Library],
|
||||
Recursive = true,
|
||||
Limit = pagesize
|
||||
};
|
||||
|
@ -5,11 +5,10 @@ using System.Threading.Tasks;
|
||||
using Jellyfin.Database.Implementations;
|
||||
using MediaBrowser.Model.Globalization;
|
||||
using MediaBrowser.Model.Tasks;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Emby.Server.Implementations.ScheduledTasks.Tasks
|
||||
{
|
||||
namespace Emby.Server.Implementations.ScheduledTasks.Tasks;
|
||||
|
||||
/// <summary>
|
||||
/// Optimizes Jellyfin's database by issuing a VACUUM command.
|
||||
/// </summary>
|
||||
@ -17,7 +16,6 @@ namespace Emby.Server.Implementations.ScheduledTasks.Tasks
|
||||
{
|
||||
private readonly ILogger<OptimizeDatabaseTask> _logger;
|
||||
private readonly ILocalizationManager _localization;
|
||||
private readonly IDbContextFactory<JellyfinDbContext> _provider;
|
||||
private readonly IJellyfinDatabaseProvider _jellyfinDatabaseProvider;
|
||||
|
||||
/// <summary>
|
||||
@ -25,17 +23,14 @@ namespace Emby.Server.Implementations.ScheduledTasks.Tasks
|
||||
/// </summary>
|
||||
/// <param name="logger">Instance of the <see cref="ILogger"/> interface.</param>
|
||||
/// <param name="localization">Instance of the <see cref="ILocalizationManager"/> interface.</param>
|
||||
/// <param name="provider">Instance of the <see cref="IDbContextFactory{JellyfinDbContext}"/> interface.</param>
|
||||
/// <param name="jellyfinDatabaseProvider">Instance of the JellyfinDatabaseProvider that can be used for provider specific operations.</param>
|
||||
public OptimizeDatabaseTask(
|
||||
ILogger<OptimizeDatabaseTask> logger,
|
||||
ILocalizationManager localization,
|
||||
IDbContextFactory<JellyfinDbContext> provider,
|
||||
IJellyfinDatabaseProvider jellyfinDatabaseProvider)
|
||||
{
|
||||
_logger = logger;
|
||||
_localization = localization;
|
||||
_provider = provider;
|
||||
_jellyfinDatabaseProvider = jellyfinDatabaseProvider;
|
||||
}
|
||||
|
||||
@ -63,11 +58,11 @@ namespace Emby.Server.Implementations.ScheduledTasks.Tasks
|
||||
/// <inheritdoc />
|
||||
public IEnumerable<TaskTriggerInfo> GetDefaultTriggers()
|
||||
{
|
||||
return
|
||||
[
|
||||
// Every so often
|
||||
new TaskTriggerInfo { Type = TaskTriggerInfoType.IntervalTrigger, IntervalTicks = TimeSpan.FromHours(24).Ticks }
|
||||
];
|
||||
yield return new TaskTriggerInfo
|
||||
{
|
||||
Type = TaskTriggerInfoType.IntervalTrigger,
|
||||
IntervalTicks = TimeSpan.FromHours(24).Ticks
|
||||
};
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
@ -85,4 +80,3 @@ namespace Emby.Server.Implementations.ScheduledTasks.Tasks
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -6,8 +6,8 @@ using MediaBrowser.Controller.Library;
|
||||
using MediaBrowser.Model.Globalization;
|
||||
using MediaBrowser.Model.Tasks;
|
||||
|
||||
namespace Emby.Server.Implementations.ScheduledTasks.Tasks
|
||||
{
|
||||
namespace Emby.Server.Implementations.ScheduledTasks.Tasks;
|
||||
|
||||
/// <summary>
|
||||
/// Class PeopleValidationTask.
|
||||
/// </summary>
|
||||
@ -54,13 +54,10 @@ namespace Emby.Server.Implementations.ScheduledTasks.Tasks
|
||||
/// <returns>An <see cref="IEnumerable{TaskTriggerInfo}"/> containing the default trigger infos for this task.</returns>
|
||||
public IEnumerable<TaskTriggerInfo> GetDefaultTriggers()
|
||||
{
|
||||
return new[]
|
||||
{
|
||||
new TaskTriggerInfo
|
||||
yield return new TaskTriggerInfo
|
||||
{
|
||||
Type = TaskTriggerInfoType.IntervalTrigger,
|
||||
IntervalTicks = TimeSpan.FromDays(7).Ticks
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -70,4 +67,3 @@ namespace Emby.Server.Implementations.ScheduledTasks.Tasks
|
||||
return _libraryManager.ValidatePeopleAsync(progress, cancellationToken);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -10,8 +10,8 @@ using MediaBrowser.Model.Globalization;
|
||||
using MediaBrowser.Model.Tasks;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Emby.Server.Implementations.ScheduledTasks.Tasks
|
||||
{
|
||||
namespace Emby.Server.Implementations.ScheduledTasks.Tasks;
|
||||
|
||||
/// <summary>
|
||||
/// Plugin Update Task.
|
||||
/// </summary>
|
||||
@ -59,11 +59,16 @@ namespace Emby.Server.Implementations.ScheduledTasks.Tasks
|
||||
/// <inheritdoc />
|
||||
public IEnumerable<TaskTriggerInfo> GetDefaultTriggers()
|
||||
{
|
||||
// At startup
|
||||
yield return new TaskTriggerInfo { Type = TaskTriggerInfoType.StartupTrigger };
|
||||
yield return new TaskTriggerInfo
|
||||
{
|
||||
Type = TaskTriggerInfoType.StartupTrigger
|
||||
};
|
||||
|
||||
// Every so often
|
||||
yield return new TaskTriggerInfo { Type = TaskTriggerInfoType.IntervalTrigger, IntervalTicks = TimeSpan.FromHours(24).Ticks };
|
||||
yield return new TaskTriggerInfo
|
||||
{
|
||||
Type = TaskTriggerInfoType.IntervalTrigger,
|
||||
IntervalTicks = TimeSpan.FromHours(24).Ticks
|
||||
};
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
@ -96,15 +101,15 @@ namespace Emby.Server.Implementations.ScheduledTasks.Tasks
|
||||
}
|
||||
catch (HttpRequestException ex)
|
||||
{
|
||||
_logger.LogError(ex, "Error downloading {0}", package.Name);
|
||||
_logger.LogError(ex, "Error downloading {Name}", package.Name);
|
||||
}
|
||||
catch (IOException ex)
|
||||
{
|
||||
_logger.LogError(ex, "Error updating {0}", package.Name);
|
||||
_logger.LogError(ex, "Error updating {Name}", package.Name);
|
||||
}
|
||||
catch (InvalidDataException ex)
|
||||
{
|
||||
_logger.LogError(ex, "Error updating {0}", package.Name);
|
||||
_logger.LogError(ex, "Error updating {Name}", package.Name);
|
||||
}
|
||||
|
||||
// Update progress
|
||||
@ -117,4 +122,3 @@ namespace Emby.Server.Implementations.ScheduledTasks.Tasks
|
||||
progress.Report(100);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -7,8 +7,8 @@ using MediaBrowser.Controller.Library;
|
||||
using MediaBrowser.Model.Globalization;
|
||||
using MediaBrowser.Model.Tasks;
|
||||
|
||||
namespace Emby.Server.Implementations.ScheduledTasks.Tasks
|
||||
{
|
||||
namespace Emby.Server.Implementations.ScheduledTasks.Tasks;
|
||||
|
||||
/// <summary>
|
||||
/// Class RefreshMediaLibraryTask.
|
||||
/// </summary>
|
||||
@ -63,4 +63,3 @@ namespace Emby.Server.Implementations.ScheduledTasks.Tasks
|
||||
return ((LibraryManager)_libraryManager).ValidateMediaLibraryInternal(progress, cancellationToken);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3,8 +3,8 @@ using System.Threading;
|
||||
using MediaBrowser.Model.Tasks;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Emby.Server.Implementations.ScheduledTasks.Triggers
|
||||
{
|
||||
namespace Emby.Server.Implementations.ScheduledTasks.Triggers;
|
||||
|
||||
/// <summary>
|
||||
/// Represents a task trigger that fires everyday.
|
||||
/// </summary>
|
||||
@ -12,16 +12,16 @@ namespace Emby.Server.Implementations.ScheduledTasks.Triggers
|
||||
{
|
||||
private readonly TimeSpan _timeOfDay;
|
||||
private Timer? _timer;
|
||||
private bool _disposed = false;
|
||||
private bool _disposed;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="DailyTrigger"/> class.
|
||||
/// </summary>
|
||||
/// <param name="timeofDay">The time of day to trigger the task to run.</param>
|
||||
/// <param name="timeOfDay">The time of day to trigger the task to run.</param>
|
||||
/// <param name="taskOptions">The options of this task.</param>
|
||||
public DailyTrigger(TimeSpan timeofDay, TaskOptions taskOptions)
|
||||
public DailyTrigger(TimeSpan timeOfDay, TaskOptions taskOptions)
|
||||
{
|
||||
_timeOfDay = timeofDay;
|
||||
_timeOfDay = timeOfDay;
|
||||
TaskOptions = taskOptions;
|
||||
}
|
||||
|
||||
@ -84,4 +84,3 @@ namespace Emby.Server.Implementations.ScheduledTasks.Triggers
|
||||
_disposed = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -4,8 +4,8 @@ using System.Threading;
|
||||
using MediaBrowser.Model.Tasks;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Emby.Server.Implementations.ScheduledTasks.Triggers
|
||||
{
|
||||
namespace Emby.Server.Implementations.ScheduledTasks.Triggers;
|
||||
|
||||
/// <summary>
|
||||
/// Represents a task trigger that runs repeatedly on an interval.
|
||||
/// </summary>
|
||||
@ -14,7 +14,7 @@ namespace Emby.Server.Implementations.ScheduledTasks.Triggers
|
||||
private readonly TimeSpan _interval;
|
||||
private DateTime _lastStartDate;
|
||||
private Timer? _timer;
|
||||
private bool _disposed = false;
|
||||
private bool _disposed;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="IntervalTrigger"/> class.
|
||||
@ -104,4 +104,3 @@ namespace Emby.Server.Implementations.ScheduledTasks.Triggers
|
||||
_disposed = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3,8 +3,8 @@ using System.Threading.Tasks;
|
||||
using MediaBrowser.Model.Tasks;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Emby.Server.Implementations.ScheduledTasks.Triggers
|
||||
{
|
||||
namespace Emby.Server.Implementations.ScheduledTasks.Triggers;
|
||||
|
||||
/// <summary>
|
||||
/// Class StartupTaskTrigger.
|
||||
/// </summary>
|
||||
@ -51,4 +51,3 @@ namespace Emby.Server.Implementations.ScheduledTasks.Triggers
|
||||
Triggered?.Invoke(this, EventArgs.Empty);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3,8 +3,8 @@ using System.Threading;
|
||||
using MediaBrowser.Model.Tasks;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
||||
namespace Emby.Server.Implementations.ScheduledTasks.Triggers
|
||||
{
|
||||
namespace Emby.Server.Implementations.ScheduledTasks.Triggers;
|
||||
|
||||
/// <summary>
|
||||
/// Represents a task trigger that fires on a weekly basis.
|
||||
/// </summary>
|
||||
@ -18,12 +18,12 @@ namespace Emby.Server.Implementations.ScheduledTasks.Triggers
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="WeeklyTrigger"/> class.
|
||||
/// </summary>
|
||||
/// <param name="timeofDay">The time of day to trigger the task to run.</param>
|
||||
/// <param name="timeOfDay">The time of day to trigger the task to run.</param>
|
||||
/// <param name="dayOfWeek">The day of week.</param>
|
||||
/// <param name="taskOptions">The options of this task.</param>
|
||||
public WeeklyTrigger(TimeSpan timeofDay, DayOfWeek dayOfWeek, TaskOptions taskOptions)
|
||||
public WeeklyTrigger(TimeSpan timeOfDay, DayOfWeek dayOfWeek, TaskOptions taskOptions)
|
||||
{
|
||||
_timeOfDay = timeofDay;
|
||||
_timeOfDay = timeOfDay;
|
||||
_dayOfWeek = dayOfWeek;
|
||||
TaskOptions = taskOptions;
|
||||
}
|
||||
@ -107,4 +107,3 @@ namespace Emby.Server.Implementations.ScheduledTasks.Triggers
|
||||
_disposed = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user