You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
1.2 KiB
33 lines
1.2 KiB
using Autofac.Features.Indexed;
|
|
using Recyclarr.Cli.Pipelines.Generic;
|
|
using Recyclarr.Cli.Pipelines.MediaNaming.PipelinePhases.Config;
|
|
using Recyclarr.Config.Models;
|
|
using Recyclarr.ServarrApi.MediaNaming;
|
|
using Recyclarr.TrashGuide;
|
|
using Recyclarr.TrashGuide.MediaNaming;
|
|
|
|
namespace Recyclarr.Cli.Pipelines.MediaNaming.PipelinePhases;
|
|
|
|
public record InvalidNamingConfig(string Type, string ConfigValue);
|
|
|
|
public record ProcessedNamingConfig
|
|
{
|
|
public required MediaNamingDto Dto { get; init; }
|
|
public IReadOnlyCollection<InvalidNamingConfig> InvalidNaming { get; init; } = new List<InvalidNamingConfig>();
|
|
}
|
|
|
|
public class MediaNamingConfigPhase(
|
|
IMediaNamingGuideService guide,
|
|
IIndex<SupportedServices, IServiceBasedMediaNamingConfigPhase> configPhaseStrategyFactory)
|
|
: IConfigPipelinePhase<MediaNamingPipelineContext>
|
|
{
|
|
public async Task Execute(MediaNamingPipelineContext context, IServiceConfiguration config)
|
|
{
|
|
var lookup = new NamingFormatLookup();
|
|
var strategy = configPhaseStrategyFactory[config.ServiceType];
|
|
var dto = await strategy.ProcessNaming(config, guide, lookup);
|
|
|
|
context.ConfigOutput = new ProcessedNamingConfig {Dto = dto, InvalidNaming = lookup.Errors};
|
|
}
|
|
}
|