From 67e1ae7e60021d336cb34a6eb58c67fc084d9ddd Mon Sep 17 00:00:00 2001 From: "Mr.Pimpky" Date: Mon, 18 Dec 2023 16:02:49 +0100 Subject: [PATCH] New: Provide more Options to choose File Date from --- .../MediaManagement/MediaManagement.js | 18 +++++++++ src/NzbDrone.Core/Localization/Core/en.json | 3 ++ src/NzbDrone.Core/MediaFiles/FileDateType.cs | 7 +++- .../MediaFiles/UpdateMovieFileService.cs | 38 +++++++++++++++++++ src/Radarr.Api.V3/openapi.json | 7 +++- 5 files changed, 69 insertions(+), 4 deletions(-) diff --git a/frontend/src/Settings/MediaManagement/MediaManagement.js b/frontend/src/Settings/MediaManagement/MediaManagement.js index e41e27106..c059ec8a7 100644 --- a/frontend/src/Settings/MediaManagement/MediaManagement.js +++ b/frontend/src/Settings/MediaManagement/MediaManagement.js @@ -76,6 +76,24 @@ const fileDateOptions = [ get value() { return translate('PhysicalReleaseDate'); } + }, + { + key: 'cinemasOrRelease', + get value() { + return translate('InCinemasOrPhysicalReleaseDate'); + } + }, + { + key: 'oldest', + get value() { + return translate('OldestDate'); + } + }, + { + key: 'latest', + get value() { + return translate('LatestDate'); + } } ]; diff --git a/src/NzbDrone.Core/Localization/Core/en.json b/src/NzbDrone.Core/Localization/Core/en.json index 086639096..5cf4506f6 100644 --- a/src/NzbDrone.Core/Localization/Core/en.json +++ b/src/NzbDrone.Core/Localization/Core/en.json @@ -516,6 +516,7 @@ "Importing": "Importing", "InCinemas": "In Cinemas", "InCinemasDate": "In Cinemas Date", + "InCinemasOrPhysicalReleaseDate": "In Cinemas or Physical Release Date", "InCinemasMsg": "Movie is in Cinemas", "IncludeCustomFormatWhenRenaming": "Include Custom Format when Renaming", "IncludeCustomFormatWhenRenamingHelpText": "Include in {Custom Formats} renaming format", @@ -572,6 +573,7 @@ "LastExecution": "Last Execution", "LastUsed": "Last Used", "LastWriteTime": "Last Write Time", + "LatestDate": "Latest Date", "LaunchBrowserHelpText": " Open a web browser and navigate to the {appName} homepage on app start.", "Letterboxd": "Letterboxd", "Level": "Level", @@ -769,6 +771,7 @@ "NotificationTriggersHelpText": "Select which events should trigger this notification", "OAuthPopupMessage": "Pop-ups are being blocked by your browser", "Ok": "Ok", + "OldestDate": "Oldest Date", "OnApplicationUpdate": "On Application Update", "OnApplicationUpdateHelpText": "On Application Update", "OnDownloadHelpText": "On Import", diff --git a/src/NzbDrone.Core/MediaFiles/FileDateType.cs b/src/NzbDrone.Core/MediaFiles/FileDateType.cs index 45a8711b9..3ea9851ec 100644 --- a/src/NzbDrone.Core/MediaFiles/FileDateType.cs +++ b/src/NzbDrone.Core/MediaFiles/FileDateType.cs @@ -1,9 +1,12 @@ -namespace NzbDrone.Core.MediaFiles +namespace NzbDrone.Core.MediaFiles { public enum FileDateType { None = 0, Cinemas = 1, - Release = 2 + Release = 2, + CinemasOrRelease = 3, + Oldest = 4, + Latest = 5 } } diff --git a/src/NzbDrone.Core/MediaFiles/UpdateMovieFileService.cs b/src/NzbDrone.Core/MediaFiles/UpdateMovieFileService.cs index 58691bb1a..de0e1acfe 100644 --- a/src/NzbDrone.Core/MediaFiles/UpdateMovieFileService.cs +++ b/src/NzbDrone.Core/MediaFiles/UpdateMovieFileService.cs @@ -70,6 +70,44 @@ namespace NzbDrone.Core.MediaFiles return ChangeFileDate(movieFilePath, airDate.Value); } + + case FileDateType.CinemasOrRelease: + { + var finalDate = movie.MovieMetadata.Value.InCinemas ?? movie.MovieMetadata.Value.PhysicalRelease ?? movie.MovieMetadata.Value.DigitalRelease; + + if (finalDate.HasValue == false) + { + return false; + } + + return ChangeFileDate(movieFilePath, finalDate.Value); + } + + case FileDateType.Oldest: + { + var oldestDate = new[] { movie.MovieMetadata.Value.InCinemas, movie.MovieMetadata.Value.PhysicalRelease, movie.MovieMetadata.Value.DigitalRelease } + .Where(d => d.HasValue).OrderBy(d => d).FirstOrDefault(); + + if (oldestDate.HasValue == false) + { + return false; + } + + return ChangeFileDate(movieFilePath, oldestDate.Value); + } + + case FileDateType.Latest: + { + var latestDate = new[] { movie.MovieMetadata.Value.InCinemas, movie.MovieMetadata.Value.PhysicalRelease, movie.MovieMetadata.Value.DigitalRelease } + .Where(d => d.HasValue).OrderBy(d => d).LastOrDefault(); + + if (latestDate.HasValue == false) + { + return false; + } + + return ChangeFileDate(movieFilePath, latestDate.Value); + } } return false; diff --git a/src/Radarr.Api.V3/openapi.json b/src/Radarr.Api.V3/openapi.json index ca0c866ee..f00955319 100644 --- a/src/Radarr.Api.V3/openapi.json +++ b/src/Radarr.Api.V3/openapi.json @@ -9674,7 +9674,10 @@ "enum": [ "none", "cinemas", - "release" + "release", + "cinemasOrRelease", + "oldest", + "latest" ], "type": "string" }, @@ -13302,4 +13305,4 @@ "apikey": [ ] } ] -} \ No newline at end of file +}