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

Commit

Permalink
Merge pull request #74 from NamekMaster/master
Browse files Browse the repository at this point in the history
  • Loading branch information
crobibero committed Dec 12, 2021
2 parents 8114cc6 + 8760d14 commit e39a8ce
Show file tree
Hide file tree
Showing 10 changed files with 83 additions and 57 deletions.
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 class 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 @@ private NamingOptions GetNamingOptionsInternal()
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 void DeleteLibraryFile(string path, bool renameRelatedFiles, string targ
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 class FileOrganizationService : IFileOrganizationService
_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 class 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 class MovieFileOrganizer
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 class MovieFolderOrganizer
IFileSystem fileSystem,
ILibraryMonitor libraryMonitor,
IFileOrganizationService organizationService,
IProviderManager providerManager)
IProviderManager providerManager,
NamingOptions namingOptions)
{
_libraryManager = libraryManager;
_loggerFactory = loggerFactory;
Expand All @@ -45,6 +49,7 @@ public class 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 @@ private bool IsPathAlreadyInMediaLibrary(string path, List<string> libraryFolder
_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 class OrganizerScheduledTask : IScheduledTask, IConfigurableScheduledTask
_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

0 comments on commit e39a8ce

Please sign in to comment.