mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-12-18 23:13:06 +03:00
sync updates
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
using MediaBrowser.Common;
|
||||
using MediaBrowser.Common.Configuration;
|
||||
using MediaBrowser.Common.Extensions;
|
||||
using MediaBrowser.Common.IO;
|
||||
using MediaBrowser.Controller.Channels;
|
||||
@@ -13,6 +14,7 @@ using MediaBrowser.Controller.MediaEncoding;
|
||||
using MediaBrowser.Controller.Sync;
|
||||
using MediaBrowser.Controller.TV;
|
||||
using MediaBrowser.Model.Dlna;
|
||||
using MediaBrowser.Model.Dto;
|
||||
using MediaBrowser.Model.Entities;
|
||||
using MediaBrowser.Model.Logging;
|
||||
using MediaBrowser.Model.Querying;
|
||||
@@ -41,10 +43,11 @@ namespace MediaBrowser.Server.Implementations.Sync
|
||||
private readonly Func<IMediaEncoder> _mediaEncoder;
|
||||
private readonly IFileSystem _fileSystem;
|
||||
private readonly Func<ISubtitleEncoder> _subtitleEncoder;
|
||||
private readonly IConfigurationManager _config;
|
||||
|
||||
private ISyncProvider[] _providers = { };
|
||||
|
||||
public SyncManager(ILibraryManager libraryManager, ISyncRepository repo, IImageProcessor imageProcessor, ILogger logger, IUserManager userManager, Func<IDtoService> dtoService, IApplicationHost appHost, ITVSeriesManager tvSeriesManager, Func<IMediaEncoder> mediaEncoder, IFileSystem fileSystem, Func<ISubtitleEncoder> subtitleEncoder)
|
||||
public SyncManager(ILibraryManager libraryManager, ISyncRepository repo, IImageProcessor imageProcessor, ILogger logger, IUserManager userManager, Func<IDtoService> dtoService, IApplicationHost appHost, ITVSeriesManager tvSeriesManager, Func<IMediaEncoder> mediaEncoder, IFileSystem fileSystem, Func<ISubtitleEncoder> subtitleEncoder, IConfigurationManager config)
|
||||
{
|
||||
_libraryManager = libraryManager;
|
||||
_repo = repo;
|
||||
@@ -57,6 +60,7 @@ namespace MediaBrowser.Server.Implementations.Sync
|
||||
_mediaEncoder = mediaEncoder;
|
||||
_fileSystem = fileSystem;
|
||||
_subtitleEncoder = subtitleEncoder;
|
||||
_config = config;
|
||||
}
|
||||
|
||||
public void AddParts(IEnumerable<ISyncProvider> providers)
|
||||
@@ -66,7 +70,7 @@ namespace MediaBrowser.Server.Implementations.Sync
|
||||
|
||||
public async Task<SyncJobCreationResult> CreateJob(SyncJobRequest request)
|
||||
{
|
||||
var processor = new SyncJobProcessor(_libraryManager, _repo, this, _logger, _userManager, _tvSeriesManager, _mediaEncoder(), _subtitleEncoder());
|
||||
var processor = GetSyncJobProcessor();
|
||||
|
||||
var user = _userManager.GetUserById(request.UserId);
|
||||
|
||||
@@ -129,7 +133,7 @@ namespace MediaBrowser.Server.Implementations.Sync
|
||||
await _repo.Create(job).ConfigureAwait(false);
|
||||
|
||||
await processor.EnsureJobItems(job).ConfigureAwait(false);
|
||||
|
||||
|
||||
// If it already has a converting status then is must have been aborted during conversion
|
||||
var jobItemsResult = _repo.GetJobItems(new SyncJobItemQuery
|
||||
{
|
||||
@@ -180,7 +184,7 @@ namespace MediaBrowser.Server.Implementations.Sync
|
||||
|
||||
if (item == null)
|
||||
{
|
||||
var processor = new SyncJobProcessor(_libraryManager, _repo, this, _logger, _userManager, _tvSeriesManager, _mediaEncoder(), _subtitleEncoder());
|
||||
var processor = GetSyncJobProcessor();
|
||||
|
||||
var user = _userManager.GetUserById(job.UserId);
|
||||
|
||||
@@ -408,11 +412,14 @@ namespace MediaBrowser.Server.Implementations.Sync
|
||||
jobItem.Status = SyncJobItemStatus.Synced;
|
||||
jobItem.Progress = 100;
|
||||
|
||||
if (jobItem.RequiresConversion)
|
||||
if (!string.IsNullOrWhiteSpace(jobItem.TemporaryPath))
|
||||
{
|
||||
try
|
||||
{
|
||||
_fileSystem.DeleteFile(jobItem.OutputPath);
|
||||
_fileSystem.DeleteDirectory(jobItem.TemporaryPath, true);
|
||||
}
|
||||
catch (DirectoryNotFoundException)
|
||||
{
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -422,11 +429,16 @@ namespace MediaBrowser.Server.Implementations.Sync
|
||||
|
||||
await _repo.Update(jobItem).ConfigureAwait(false);
|
||||
|
||||
var processor = new SyncJobProcessor(_libraryManager, _repo, this, _logger, _userManager, _tvSeriesManager, _mediaEncoder(), _subtitleEncoder());
|
||||
var processor = GetSyncJobProcessor();
|
||||
|
||||
await processor.UpdateJobStatus(jobItem.JobId).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
private SyncJobProcessor GetSyncJobProcessor()
|
||||
{
|
||||
return new SyncJobProcessor(_libraryManager, _repo, this, _logger, _userManager, _tvSeriesManager, _mediaEncoder(), _subtitleEncoder(), _config, _fileSystem);
|
||||
}
|
||||
|
||||
public SyncJobItem GetJobItem(string id)
|
||||
{
|
||||
return _repo.GetJobItem(id);
|
||||
@@ -455,7 +467,15 @@ namespace MediaBrowser.Server.Implementations.Sync
|
||||
SyncJobId = jobItem.JobId,
|
||||
SyncJobItemId = jobItem.Id,
|
||||
ServerId = _appHost.SystemId,
|
||||
UserId = job.UserId
|
||||
UserId = job.UserId,
|
||||
AdditionalFiles = jobItem.AdditionalFiles.Select(i => new ItemFileInfo
|
||||
{
|
||||
ImageType = i.ImageType,
|
||||
Name = i.Name,
|
||||
Type = i.Type,
|
||||
Index = i.Index
|
||||
|
||||
}).ToList()
|
||||
};
|
||||
|
||||
var dtoOptions = new DtoOptions();
|
||||
@@ -472,14 +492,11 @@ namespace MediaBrowser.Server.Implementations.Sync
|
||||
|
||||
syncedItem.Item = _dtoService().GetBaseItemDto(libraryItem, dtoOptions);
|
||||
|
||||
// TODO: this should be the media source of the transcoded output
|
||||
syncedItem.Item.MediaSources = syncedItem.Item.MediaSources
|
||||
.Where(i => string.Equals(i.Id, jobItem.MediaSourceId))
|
||||
.ToList();
|
||||
|
||||
var mediaSource = syncedItem.Item.MediaSources
|
||||
.FirstOrDefault(i => string.Equals(i.Id, jobItem.MediaSourceId));
|
||||
|
||||
syncedItem.Item.MediaSources = new List<MediaSourceInfo>();
|
||||
|
||||
// This will be null for items that are not audio/video
|
||||
if (mediaSource == null)
|
||||
{
|
||||
@@ -488,6 +505,7 @@ namespace MediaBrowser.Server.Implementations.Sync
|
||||
else
|
||||
{
|
||||
syncedItem.OriginalFileName = Path.GetFileName(mediaSource.Path);
|
||||
syncedItem.Item.MediaSources.Add(mediaSource);
|
||||
}
|
||||
|
||||
return syncedItem;
|
||||
|
||||
Reference in New Issue
Block a user