aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/FileOrganization/FileOrganizationService.cs
diff options
context:
space:
mode:
authorsoftworkz <softworkz@hotmail.com>2015-09-23 06:12:46 +0200
committersoftworkz <softworkz@hotmail.com>2016-02-05 05:21:25 +0100
commit3a868e28b3e3d9f0a13fc38c680047010d627b0f (patch)
tree4b9f71b825e4c0222b7becc4bee5c0cf2d2871ab /MediaBrowser.Server.Implementations/FileOrganization/FileOrganizationService.cs
parentd28ef71d93ea7fe50343f82f575637307b4d74bf (diff)
Auto-Organize: Added feature to remember/persist series matching in manual organization dialog #2
When a filename cannot be auto-matched to an existing series name, the organization must be performed manually. Unfortunately not just once, but again and again for each episode coming in. This change proposes a simple but solid method to optionally persist the matching condition from within the manual organization dialog. This approach will make Emby "learn" how to organize files in the future without user interaction.
Diffstat (limited to 'MediaBrowser.Server.Implementations/FileOrganization/FileOrganizationService.cs')
-rw-r--r--MediaBrowser.Server.Implementations/FileOrganization/FileOrganizationService.cs57
1 files changed, 53 insertions, 4 deletions
diff --git a/MediaBrowser.Server.Implementations/FileOrganization/FileOrganizationService.cs b/MediaBrowser.Server.Implementations/FileOrganization/FileOrganizationService.cs
index 839a85adb..3dd6a9be0 100644
--- a/MediaBrowser.Server.Implementations/FileOrganization/FileOrganizationService.cs
+++ b/MediaBrowser.Server.Implementations/FileOrganization/FileOrganizationService.cs
@@ -11,6 +11,7 @@ using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Querying;
using System;
using System.IO;
+using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using CommonIO;
@@ -96,9 +97,9 @@ namespace MediaBrowser.Server.Implementations.FileOrganization
return _repo.Delete(resultId);
}
- private TvFileOrganizationOptions GetTvOptions()
+ private AutoOrganizeOptions GetAutoOrganizeptions()
{
- return _config.GetAutoOrganizeOptions().TvOptions;
+ return _config.GetAutoOrganizeOptions();
}
public async Task PerformOrganization(string resultId)
@@ -113,7 +114,7 @@ namespace MediaBrowser.Server.Implementations.FileOrganization
var organizer = new EpisodeFileOrganizer(this, _config, _fileSystem, _logger, _libraryManager,
_libraryMonitor, _providerManager);
- await organizer.OrganizeEpisodeFile(result.OriginalPath, GetTvOptions(), true, CancellationToken.None)
+ await organizer.OrganizeEpisodeFile(result.OriginalPath, GetAutoOrganizeptions(), true, CancellationToken.None)
.ConfigureAwait(false);
}
@@ -127,7 +128,55 @@ namespace MediaBrowser.Server.Implementations.FileOrganization
var organizer = new EpisodeFileOrganizer(this, _config, _fileSystem, _logger, _libraryManager,
_libraryMonitor, _providerManager);
- await organizer.OrganizeWithCorrection(request, GetTvOptions(), CancellationToken.None).ConfigureAwait(false);
+ await organizer.OrganizeWithCorrection(request, GetAutoOrganizeptions(), CancellationToken.None).ConfigureAwait(false);
+ }
+
+ public QueryResult<SmartMatchInfo> GetSmartMatchInfos(FileOrganizationResultQuery query)
+ {
+ if (query == null)
+ {
+ throw new ArgumentNullException("query");
+ }
+
+ var options = GetAutoOrganizeptions();
+
+ var items = options.SmartMatchInfos.Skip(query.StartIndex ?? 0).Take(query.Limit ?? Int32.MaxValue);
+
+ return new QueryResult<SmartMatchInfo>()
+ {
+ Items = items.ToArray(),
+ TotalRecordCount = items.Count()
+ };
+ }
+
+ public void DeleteSmartMatchEntry(string IdString, string matchString)
+ {
+ Guid Id;
+
+ if (!Guid.TryParse(IdString, out Id))
+ {
+ throw new ArgumentNullException("Id");
+ }
+
+ if (string.IsNullOrEmpty(matchString))
+ {
+ throw new ArgumentNullException("matchString");
+ }
+
+ var options = GetAutoOrganizeptions();
+
+ SmartMatchInfo info = options.SmartMatchInfos.Find(i => i.Id == Id);
+
+ if (info != null && info.MatchStrings.Contains(matchString))
+ {
+ info.MatchStrings.Remove(matchString);
+ if (info.MatchStrings.Count == 0)
+ {
+ options.SmartMatchInfos.Remove(info);
+ }
+
+ _config.SaveAutoOrganizeOptions(options);
+ }
}
}
}