mirror of
https://github.com/lidarr/lidarr.git
synced 2025-08-22 14:33:30 -07:00
WIP
This commit is contained in:
parent
60a6f36031
commit
b7f53f7e26
2 changed files with 33 additions and 48 deletions
|
@ -11,13 +11,12 @@ using NzbDrone.Core.MediaFiles;
|
|||
using NzbDrone.Core.MediaFiles.Events;
|
||||
using NzbDrone.Core.Messaging.Events;
|
||||
using NzbDrone.Core.Music;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
|
||||
namespace NzbDrone.Core.Extras
|
||||
{
|
||||
public interface IExtraService
|
||||
{
|
||||
void ImportTrack(LocalTrack localTrack, TrackFile trackFile, bool isReadOnly);
|
||||
void ImportExtraFiles(string sourceFolder, TrackFile trackFile, bool isReadOnly);
|
||||
}
|
||||
|
||||
public class ExtraService : IExtraService,
|
||||
|
@ -51,30 +50,24 @@ namespace NzbDrone.Core.Extras
|
|||
_logger = logger;
|
||||
}
|
||||
|
||||
public void ImportTrack(LocalTrack localTrack, TrackFile trackFile, bool isReadOnly)
|
||||
{
|
||||
ImportExtraFiles(localTrack, trackFile, isReadOnly);
|
||||
|
||||
CreateAfterTrackImport(localTrack.Artist, trackFile);
|
||||
}
|
||||
|
||||
public void ImportExtraFiles(LocalTrack localTrack, TrackFile trackFile, bool isReadOnly)
|
||||
public void ImportExtraFiles(string sourceFolder, TrackFile trackFile, bool isReadOnly)
|
||||
{
|
||||
if (!_configService.ImportExtraFiles)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var sourcePath = localTrack.Path;
|
||||
var sourceFolder = _diskProvider.GetParentFolder(sourcePath);
|
||||
var sourceFileName = Path.GetFileNameWithoutExtension(sourcePath);
|
||||
var sourceFileName = Path.GetFileNameWithoutExtension(trackFile.Path);
|
||||
var files = _diskProvider.GetFiles(sourceFolder, false);
|
||||
|
||||
var wantedExtensions = _configService.ExtraFileExtensions.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
|
||||
.Select(e => e.Trim(' ', '.'))
|
||||
.ToList();
|
||||
var wantedExtensions = _configService.ExtraFileExtensions
|
||||
.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
|
||||
.Select(e => e.Trim(' ', '.'))
|
||||
.ToList();
|
||||
|
||||
var matchingFilenames = files.Where(f => Path.GetFileNameWithoutExtension(f).StartsWith(sourceFileName, StringComparison.InvariantCultureIgnoreCase)).ToList();
|
||||
var matchingFilenames = files.Where(f =>
|
||||
Path.GetFileNameWithoutExtension(f)
|
||||
.StartsWith(sourceFileName, StringComparison.InvariantCultureIgnoreCase)).ToList();
|
||||
var filteredFilenames = new List<string>();
|
||||
var hasNfo = false;
|
||||
|
||||
|
@ -105,10 +98,10 @@ namespace NzbDrone.Core.Extras
|
|||
|
||||
try
|
||||
{
|
||||
foreach (var extraFileManager in _extraFileManagers)
|
||||
foreach (var extraFileManager1 in _extraFileManagers)
|
||||
{
|
||||
var extension = Path.GetExtension(matchingFilename);
|
||||
var extraFile = extraFileManager.Import(localTrack.Artist, trackFile, matchingFilename, extension, isReadOnly);
|
||||
var extraFile = extraFileManager1.Import(trackFile.Artist, trackFile, matchingFilename, extension, isReadOnly);
|
||||
|
||||
if (extraFile != null)
|
||||
{
|
||||
|
@ -123,14 +116,6 @@ namespace NzbDrone.Core.Extras
|
|||
}
|
||||
}
|
||||
|
||||
private void CreateAfterTrackImport(Artist artist, TrackFile trackFile)
|
||||
{
|
||||
foreach (var extraFileManager in _extraFileManagers)
|
||||
{
|
||||
extraFileManager.CreateAfterTrackImport(artist, trackFile);
|
||||
}
|
||||
}
|
||||
|
||||
public void Handle(MediaCoversUpdatedEvent message)
|
||||
{
|
||||
if (message.Updated)
|
||||
|
|
|
@ -9,6 +9,7 @@ using NzbDrone.Common.Instrumentation.Extensions;
|
|||
using NzbDrone.Core.DecisionEngine;
|
||||
using NzbDrone.Core.Download;
|
||||
using NzbDrone.Core.Extras;
|
||||
using NzbDrone.Core.Extras.Files;
|
||||
using NzbDrone.Core.MediaFiles.Events;
|
||||
using NzbDrone.Core.Messaging.Commands;
|
||||
using NzbDrone.Core.Messaging.Events;
|
||||
|
@ -43,6 +44,7 @@ namespace NzbDrone.Core.MediaFiles.TrackImport
|
|||
private readonly IReleaseService _releaseService;
|
||||
private readonly IEventAggregator _eventAggregator;
|
||||
private readonly IManageCommandQueue _commandQueueManager;
|
||||
private readonly List<IManageExtraFiles> _extraFileManagers;
|
||||
private readonly Logger _logger;
|
||||
|
||||
public ImportApprovedTracks(IUpgradeMediaFiles trackFileUpgrader,
|
||||
|
@ -60,6 +62,7 @@ namespace NzbDrone.Core.MediaFiles.TrackImport
|
|||
IReleaseService releaseService,
|
||||
IEventAggregator eventAggregator,
|
||||
IManageCommandQueue commandQueueManager,
|
||||
IEnumerable<IManageExtraFiles> extraFileManagers,
|
||||
Logger logger)
|
||||
{
|
||||
_trackFileUpgrader = trackFileUpgrader;
|
||||
|
@ -77,6 +80,7 @@ namespace NzbDrone.Core.MediaFiles.TrackImport
|
|||
_releaseService = releaseService;
|
||||
_eventAggregator = eventAggregator;
|
||||
_commandQueueManager = commandQueueManager;
|
||||
_extraFileManagers = extraFileManagers.OrderBy(e => e.Order).ToList();
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
|
@ -143,6 +147,13 @@ namespace NzbDrone.Core.MediaFiles.TrackImport
|
|||
var albumReleasesDict = new Dictionary<int, List<AlbumRelease>>(albumDecisions.Count);
|
||||
var trackImportedEvents = new List<TrackImportedEvent>(qualifiedImports.Count);
|
||||
|
||||
var copyOnly = importMode switch
|
||||
{
|
||||
ImportMode.Move => false,
|
||||
ImportMode.Copy => true,
|
||||
_ => downloadClientItem is { CanMoveFiles: false },
|
||||
};
|
||||
|
||||
foreach (var importDecision in qualifiedImports.OrderBy(e => e.Item.Tracks.Select(track => track.AbsoluteTrackNumber).MinOrDefault())
|
||||
.ThenByDescending(e => e.Item.Size))
|
||||
{
|
||||
|
@ -197,21 +208,6 @@ namespace NzbDrone.Core.MediaFiles.TrackImport
|
|||
Tracks = localTrack.Tracks
|
||||
};
|
||||
|
||||
bool copyOnly;
|
||||
switch (importMode)
|
||||
{
|
||||
default:
|
||||
case ImportMode.Auto:
|
||||
copyOnly = downloadClientItem != null && !downloadClientItem.CanMoveFiles;
|
||||
break;
|
||||
case ImportMode.Move:
|
||||
copyOnly = false;
|
||||
break;
|
||||
case ImportMode.Copy:
|
||||
copyOnly = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!localTrack.ExistingFile)
|
||||
{
|
||||
trackFile.SceneName = localTrack.SceneName;
|
||||
|
@ -235,12 +231,6 @@ namespace NzbDrone.Core.MediaFiles.TrackImport
|
|||
|
||||
filesToAdd.Add(trackFile);
|
||||
importResults.Add(new ImportResult(importDecision));
|
||||
|
||||
if (!localTrack.ExistingFile)
|
||||
{
|
||||
_extraService.ImportTrack(localTrack, trackFile, copyOnly);
|
||||
}
|
||||
|
||||
allImportedTrackFiles.Add(trackFile);
|
||||
allOldTrackFiles.AddRange(oldFiles);
|
||||
|
||||
|
@ -281,6 +271,16 @@ namespace NzbDrone.Core.MediaFiles.TrackImport
|
|||
}
|
||||
}
|
||||
|
||||
// _extraService.ImportExtraFiles(sourceFolder, track, copyOnly);
|
||||
|
||||
foreach (var track in allImportedTrackFiles)
|
||||
{
|
||||
foreach (var extraFileManager in _extraFileManagers)
|
||||
{
|
||||
extraFileManager.CreateAfterTrackImport(track.Artist, track);
|
||||
}
|
||||
}
|
||||
|
||||
var watch = new System.Diagnostics.Stopwatch();
|
||||
watch.Start();
|
||||
_mediaFileService.AddMany(filesToAdd);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue