From a691ffa7b7cdae74bb994373a4310ba20f2b8935 Mon Sep 17 00:00:00 2001 From: Krystian Charubin Date: Fri, 20 Jan 2017 17:42:14 -0500 Subject: [PATCH] adds 'Movie Title, The' filename option (#359) * adds 'Movie Title, The' filename option * updates the FileNameBuilder.MovieTitleRegex to include new format --- .../Organizer/FileNameBuilder.cs | 19 ++++++++++++++++++- .../Organizer/FileNameSampleService.cs | 2 +- .../Partials/MovieTitleNamingPartial.hbs | 1 + 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/NzbDrone.Core/Organizer/FileNameBuilder.cs b/src/NzbDrone.Core/Organizer/FileNameBuilder.cs index fe3a8acc8..535a89071 100644 --- a/src/NzbDrone.Core/Organizer/FileNameBuilder.cs +++ b/src/NzbDrone.Core/Organizer/FileNameBuilder.cs @@ -58,7 +58,7 @@ namespace NzbDrone.Core.Organizer public static readonly Regex SeriesTitleRegex = new Regex(@"(?\{(?:Series)(?[- ._])(Clean)?Title\})", RegexOptions.Compiled | RegexOptions.IgnoreCase); - public static readonly Regex MovieTitleRegex = new Regex(@"(?\{((?:(Movie|Original))(?[- ._])(Clean)?Title)\})", + public static readonly Regex MovieTitleRegex = new Regex(@"(?\{((?:(Movie|Original))(?[- ._])(Clean)?Title(The)?)\})", RegexOptions.Compiled | RegexOptions.IgnoreCase); private static readonly Regex FileNameCleanupRegex = new Regex(@"([- ._])(\1)+", RegexOptions.Compiled); @@ -316,6 +316,22 @@ namespace NzbDrone.Core.Organizer return title; } + public static string TitleThe(string title) + { + string[] prefixes = { "The ", "An ", "A " }; + foreach (string prefix in prefixes) + { + int prefix_length = prefix.Length; + if (prefix.ToLower() == title.Substring(0, prefix_length).ToLower()) + { + title = title.Substring(prefix_length) + ", " + prefix.Trim(); + break; + } + } + + return title.Trim(); + } + public static string CleanFileName(string name, bool replace = true) { string result = name; @@ -472,6 +488,7 @@ namespace NzbDrone.Core.Organizer { tokenHandlers["{Movie Title}"] = m => movie.Title; tokenHandlers["{Movie CleanTitle}"] = m => CleanTitle(movie.Title); + tokenHandlers["{Movie Title The}"] = m => TitleThe(movie.Title); } private void AddReleaseDateTokens(Dictionary> tokenHandlers, int releaseYear) diff --git a/src/NzbDrone.Core/Organizer/FileNameSampleService.cs b/src/NzbDrone.Core/Organizer/FileNameSampleService.cs index c8f574326..83360063c 100644 --- a/src/NzbDrone.Core/Organizer/FileNameSampleService.cs +++ b/src/NzbDrone.Core/Organizer/FileNameSampleService.cs @@ -46,7 +46,7 @@ namespace NzbDrone.Core.Organizer _movie = new Movie { - Title = "Movie Title", + Title = "The Movie Title", Year = 2010, ImdbId = "tt0066921" }; diff --git a/src/UI/Settings/MediaManagement/Naming/Partials/MovieTitleNamingPartial.hbs b/src/UI/Settings/MediaManagement/Naming/Partials/MovieTitleNamingPartial.hbs index 916416fdb..eb8b99421 100644 --- a/src/UI/Settings/MediaManagement/Naming/Partials/MovieTitleNamingPartial.hbs +++ b/src/UI/Settings/MediaManagement/Naming/Partials/MovieTitleNamingPartial.hbs @@ -4,6 +4,7 @@
  • Movie Title
  • Movie.Title
  • Movie_Title
  • +
  • Movie Title, The
  • Movie CleanTitle
  • Movie.CleanTitle
  • Movie_CleanTitle