Skip to content
This repository has been archived by the owner on Feb 28, 2022. It is now read-only.

Fix saving configuration, Update for 10.8-alpha3 #74

Merged
merged 3 commits into from
Dec 12, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -230,3 +230,4 @@ pip-log.txt
.mr.developer.cfg

.idea
.history
54 changes: 27 additions & 27 deletions AutoOrganize/AutoOrganize.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<AssemblyVersion>9.0.0.0</AssemblyVersion>
<FileVersion>9.0.0.0</FileVersion>
<AssemblyVersion>10.0.0.0</AssemblyVersion>
<FileVersion>10.0.0.0</FileVersion>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<AnalysisMode>AllEnabledByDefault</AnalysisMode>
<CodeAnalysisRuleSet>../jellyfin.ruleset</CodeAnalysisRuleSet>
Expand All @@ -14,41 +14,41 @@
</PropertyGroup>

<ItemGroup>
<None Remove="Web\autoorganizelog.html" />
<None Remove="Web\autoorganizelog.js" />
<None Remove="Web\autoorganizemovie.html" />
<None Remove="Web\autoorganizemovie.js" />
<None Remove="Web\autoorganizesmart.html" />
<None Remove="Web\autoorganizesmart.js" />
<None Remove="Web\autoorganizetv.html" />
<None Remove="Web\autoorganizetv.js" />
<None Remove="Web\fileorganizer.js" />
<None Remove="Web\fileorganizer.template.html" />
<None Remove="Web\autoorganizelog.html"/>
<None Remove="Web\autoorganizelog.js"/>
<None Remove="Web\autoorganizemovie.html"/>
<None Remove="Web\autoorganizemovie.js"/>
<None Remove="Web\autoorganizesmart.html"/>
<None Remove="Web\autoorganizesmart.js"/>
<None Remove="Web\autoorganizetv.html"/>
<None Remove="Web\autoorganizetv.js"/>
<None Remove="Web\fileorganizer.js"/>
<None Remove="Web\fileorganizer.template.html"/>
</ItemGroup>

<ItemGroup>
<EmbeddedResource Include="Web\autoorganizelog.html" />
<EmbeddedResource Include="Web\autoorganizelog.js" />
<EmbeddedResource Include="Web\autoorganizesmart.html" />
<EmbeddedResource Include="Web\autoorganizesmart.js" />
<EmbeddedResource Include="Web\autoorganizemovie.html" />
<EmbeddedResource Include="Web\autoorganizemovie.js" />
<EmbeddedResource Include="Web\autoorganizetv.html" />
<EmbeddedResource Include="Web\autoorganizetv.js" />
<EmbeddedResource Include="Web\fileorganizer.js" />
<EmbeddedResource Include="Web\fileorganizer.template.html" />
<EmbeddedResource Include="Web\autoorganizelog.html"/>
<EmbeddedResource Include="Web\autoorganizelog.js"/>
<EmbeddedResource Include="Web\autoorganizesmart.html"/>
<EmbeddedResource Include="Web\autoorganizesmart.js"/>
<EmbeddedResource Include="Web\autoorganizemovie.html"/>
<EmbeddedResource Include="Web\autoorganizemovie.js"/>
<EmbeddedResource Include="Web\autoorganizetv.html"/>
<EmbeddedResource Include="Web\autoorganizetv.js"/>
<EmbeddedResource Include="Web\fileorganizer.js"/>
<EmbeddedResource Include="Web\fileorganizer.template.html"/>
</ItemGroup>

<ItemGroup>
<PackageReference Include="Jellyfin.Controller" Version="10.*-*" />
<PackageReference Include="Jellyfin.Naming" Version="10.*-*" />
<PackageReference Include="SQLitePCL.pretty.netstandard" Version="3.1.0" />
<FrameworkReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Jellyfin.Controller" Version="10.*-*"/>
<PackageReference Include="Jellyfin.Naming" Version="10.*-*"/>
<PackageReference Include="SQLitePCL.pretty.netstandard" Version="3.1.0"/>
<FrameworkReference Include="Microsoft.AspNetCore.App"/>
</ItemGroup>

<!-- Code Analyzers-->
<ItemGroup>
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="All" />
<PackageReference Include="StyleCop.Analyzers" Version="1.1.118" PrivateAssets="All"/>
</ItemGroup>

<PropertyGroup>
Expand Down
19 changes: 7 additions & 12 deletions AutoOrganize/Core/EpisodeFileOrganizer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
using AutoOrganize.Model;
using Emby.Naming.Common;
using Emby.Naming.TV;
using Emby.Naming.Video;
using MediaBrowser.Controller.Dto;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.TV;
Expand All @@ -34,8 +35,7 @@ public class EpisodeFileOrganizer
private readonly IFileSystem _fileSystem;
private readonly IFileOrganizationService _organizationService;
private readonly IProviderManager _providerManager;

private NamingOptions _namingOptions;
private readonly NamingOptions _namingOptions;

/// <summary>
/// Initializes a new instance of the <see cref="EpisodeFileOrganizer"/> class.
Expand All @@ -47,24 +47,20 @@ public EpisodeFileOrganizer(
ILogger<EpisodeFileOrganizer> logger,
ILibraryManager libraryManager,
ILibraryMonitor libraryMonitor,
IProviderManager providerManager)
IProviderManager providerManager,
NamingOptions namingOptions)
{
_organizationService = organizationService;
_fileSystem = fileSystem;
_logger = logger;
_libraryManager = libraryManager;
_libraryMonitor = libraryMonitor;
_providerManager = providerManager;
_namingOptions = namingOptions;
}

private FileOrganizerType CurrentFileOrganizerType => FileOrganizerType.Episode;

private NamingOptions GetNamingOptionsInternal()
{
_namingOptions = _namingOptions ?? new NamingOptions();
return _namingOptions;
}

/// <summary>
/// Organize an episode file.
/// </summary>
Expand Down Expand Up @@ -98,8 +94,7 @@ public async Task<FileOrganizationResult> OrganizeEpisodeFile(
return result;
}

var namingOptions = GetNamingOptionsInternal();
var resolver = new EpisodeResolver(namingOptions);
var resolver = new EpisodeResolver(_namingOptions);

var episodeInfo = resolver.Resolve(path, false) ??
new Emby.Naming.TV.EpisodeInfo(string.Empty);
Expand Down Expand Up @@ -691,7 +686,7 @@ private List<string> GetOtherDuplicatePaths(
try
{
var filesOfOtherExtensions = _fileSystem.GetFilePaths(folder)
.Where(i => _libraryManager.IsVideoFile(i) && string.Equals(Path.GetFileNameWithoutExtension(i), targetFileNameWithoutExtension, StringComparison.OrdinalIgnoreCase));
.Where(i => VideoResolver.IsVideoFile(i, _namingOptions) && string.Equals(Path.GetFileNameWithoutExtension(i), targetFileNameWithoutExtension, StringComparison.OrdinalIgnoreCase));

episodePaths.AddRange(filesOfOtherExtensions);
}
Expand Down
15 changes: 11 additions & 4 deletions AutoOrganize/Core/FileOrganizationService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
using System.Threading.Tasks;
using AutoOrganize.Data;
using AutoOrganize.Model;
using Emby.Naming.Common;
using MediaBrowser.Common.Extensions;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Library;
Expand All @@ -30,6 +31,7 @@ public class FileOrganizationService : IFileOrganizationService
private readonly IFileSystem _fileSystem;
private readonly IProviderManager _providerManager;
private readonly ConcurrentDictionary<string, bool> _inProgressItemIds = new ConcurrentDictionary<string, bool>();
private readonly NamingOptions _namingOptions;

/// <summary>
/// Initializes a new instance of the <see cref="FileOrganizationService"/> class.
Expand All @@ -54,6 +56,7 @@ public FileOrganizationService(
_config = config;
_fileSystem = fileSystem;
_providerManager = providerManager;
_namingOptions = new NamingOptions();
}

/// <inheritdoc/>
Expand Down Expand Up @@ -175,7 +178,8 @@ public async Task PerformOrganization(string resultId)
_loggerFactory.CreateLogger<EpisodeFileOrganizer>(),
_libraryManager,
_libraryMonitor,
_providerManager);
_providerManager,
_namingOptions);
organizeResult = await episodeOrganizer.OrganizeEpisodeFile(result.OriginalPath, options.TvOptions, CancellationToken.None)
.ConfigureAwait(false);
break;
Expand All @@ -186,7 +190,8 @@ public async Task PerformOrganization(string resultId)
_loggerFactory.CreateLogger<MovieFileOrganizer>(),
_libraryManager,
_libraryMonitor,
_providerManager);
_providerManager,
_namingOptions);
organizeResult = await movieOrganizer.OrganizeMovieFile(result.OriginalPath, options.MovieOptions, true, CancellationToken.None)
.ConfigureAwait(false);
break;
Expand Down Expand Up @@ -221,7 +226,8 @@ public async Task PerformOrganization(EpisodeFileOrganizationRequest request)
_loggerFactory.CreateLogger<EpisodeFileOrganizer>(),
_libraryManager,
_libraryMonitor,
_providerManager);
_providerManager,
_namingOptions);

var options = _config.GetAutoOrganizeOptions();
var result = await organizer.OrganizeWithCorrection(request, options.TvOptions, CancellationToken.None).ConfigureAwait(false);
Expand All @@ -241,7 +247,8 @@ public async Task PerformOrganization(MovieFileOrganizationRequest request)
_loggerFactory.CreateLogger<MovieFileOrganizer>(),
_libraryManager,
_libraryMonitor,
_providerManager);
_providerManager,
_namingOptions);

var options = _config.GetAutoOrganizeOptions();
var result = await organizer.OrganizeWithCorrection(request, options.MovieOptions, CancellationToken.None).ConfigureAwait(false);
Expand Down
8 changes: 4 additions & 4 deletions AutoOrganize/Core/MovieFileOrganizer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public class MovieFileOrganizer
private readonly IFileSystem _fileSystem;
private readonly IFileOrganizationService _organizationService;
private readonly IProviderManager _providerManager;
private NamingOptions _namingOptions;
private readonly NamingOptions _namingOptions;

/// <summary>
/// Initializes a new instance of the <see cref="MovieFileOrganizer"/> class.
Expand All @@ -41,14 +41,16 @@ public MovieFileOrganizer(
ILogger<MovieFileOrganizer> logger,
ILibraryManager libraryManager,
ILibraryMonitor libraryMonitor,
IProviderManager providerManager)
IProviderManager providerManager,
NamingOptions namingOptions)
{
_organizationService = organizationService;
_fileSystem = fileSystem;
_logger = logger;
_libraryManager = libraryManager;
_libraryMonitor = libraryMonitor;
_providerManager = providerManager;
_namingOptions = namingOptions;
}

private FileOrganizerType CurrentFileOrganizerType => FileOrganizerType.Movie;
Expand Down Expand Up @@ -88,8 +90,6 @@ public async Task<FileOrganizationResult> OrganizeMovieFile(
return result;
}

_namingOptions ??= new NamingOptions();

var movieInfo = VideoResolver.Resolve(path, false, _namingOptions);
if (!string.IsNullOrEmpty(movieInfo?.Name))
{
Expand Down
12 changes: 9 additions & 3 deletions AutoOrganize/Core/MovieFolderOrganizer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
using System.Threading;
using System.Threading.Tasks;
using AutoOrganize.Model;
using Emby.Naming.Common;
using Emby.Naming.Video;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.IO;
Expand All @@ -25,6 +27,7 @@ public class MovieFolderOrganizer
private readonly IFileSystem _fileSystem;
private readonly IFileOrganizationService _organizationService;
private readonly IProviderManager _providerManager;
private readonly NamingOptions _namingOptions;

/// <summary>
/// Initializes a new instance of the <see cref="MovieFolderOrganizer"/> class.
Expand All @@ -36,7 +39,8 @@ public MovieFolderOrganizer(
IFileSystem fileSystem,
ILibraryMonitor libraryMonitor,
IFileOrganizationService organizationService,
IProviderManager providerManager)
IProviderManager providerManager,
NamingOptions namingOptions)
{
_libraryManager = libraryManager;
_loggerFactory = loggerFactory;
Expand All @@ -45,6 +49,7 @@ public MovieFolderOrganizer(
_libraryMonitor = libraryMonitor;
_organizationService = organizationService;
_providerManager = providerManager;
_namingOptions = namingOptions;
}

private bool CanOrganize(FileSystemMetadata fileInfo, MovieFileOrganizationOptions options)
Expand All @@ -53,7 +58,7 @@ private bool CanOrganize(FileSystemMetadata fileInfo, MovieFileOrganizationOptio

try
{
return _libraryManager.IsVideoFile(fileInfo.FullName) && fileInfo.Length >= minFileBytes;
return VideoResolver.IsVideoFile(fileInfo.FullName, _namingOptions) && fileInfo.Length >= minFileBytes;
}
catch (Exception ex)
{
Expand Down Expand Up @@ -116,7 +121,8 @@ public async Task Organize(
_loggerFactory.CreateLogger<MovieFileOrganizer>(),
_libraryManager,
_libraryMonitor,
_providerManager);
_providerManager,
_namingOptions);

foreach (var file in eligibleFiles)
{
Expand Down
15 changes: 13 additions & 2 deletions AutoOrganize/Core/OrganizerScheduledTask.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using System.Diagnostics.CodeAnalysis;
using System.Threading;
using System.Threading.Tasks;
using Emby.Naming.Common;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Providers;
Expand All @@ -24,6 +25,7 @@ public class OrganizerScheduledTask : IScheduledTask, IConfigurableScheduledTask
private readonly IFileSystem _fileSystem;
private readonly IServerConfigurationManager _config;
private readonly IProviderManager _providerManager;
private readonly NamingOptions _namingOptions;

/// <summary>
/// Initializes a new instance of the <see cref="OrganizerScheduledTask"/> class.
Expand All @@ -44,6 +46,7 @@ public OrganizerScheduledTask(
_fileSystem = fileSystem;
_config = config;
_providerManager = providerManager;
_namingOptions = new NamingOptions();
}

/// <inheritdoc/>
Expand Down Expand Up @@ -89,7 +92,8 @@ public async Task Execute(CancellationToken cancellationToken, IProgress<double>
_fileSystem,
_libraryMonitor,
fileOrganizationService,
_providerManager)
_providerManager,
_namingOptions)
.Organize(options.TvOptions, progress, cancellationToken).ConfigureAwait(false);
}

Expand All @@ -98,7 +102,14 @@ public async Task Execute(CancellationToken cancellationToken, IProgress<double>
queueMovie = options.MovieOptions.QueueLibraryScan;
var fileOrganizationService = PluginEntryPoint.Current.FileOrganizationService;

await new MovieFolderOrganizer(_libraryManager, _loggerFactory, _fileSystem, _libraryMonitor, fileOrganizationService, _providerManager)
await new MovieFolderOrganizer(
_libraryManager,
_loggerFactory,
_fileSystem,
_libraryMonitor,
fileOrganizationService,
_providerManager,
_namingOptions)
.Organize(options.MovieOptions, progress, cancellationToken).ConfigureAwait(false);
}

Expand Down
Loading