mirror of
https://github.com/lidarr/Lidarr
synced 2025-03-14 15:58:48 +00:00
New: Add Medium Name to multi disc track naming
Fix TrimSeparatorsRegex to match multiple characters Fixes #4027
This commit is contained in:
parent
9b4a3001a0
commit
8d87b88147
3 changed files with 19 additions and 5 deletions
|
@ -40,11 +40,13 @@ namespace NzbDrone.Core.Test.OrganizerTests.FileNameBuilderTests
|
|||
_medium = Builder<Medium>
|
||||
.CreateNew()
|
||||
.With(m => m.Number = 3)
|
||||
.With(m => m.Name = "Hybrid Theory")
|
||||
.Build();
|
||||
|
||||
_medium2 = Builder<Medium>
|
||||
.CreateNew()
|
||||
.With(m => m.Number = 4)
|
||||
.With(m => m.Name = "Reanimation")
|
||||
.Build();
|
||||
|
||||
_release = Builder<AlbumRelease>
|
||||
|
@ -130,5 +132,16 @@ namespace NzbDrone.Core.Test.OrganizerTests.FileNameBuilderTests
|
|||
Subject.BuildTrackFileName(new List<Track> { _track1 }, _artist, _album, _trackFile)
|
||||
.Should().Be("Hybrid Theory (2020)\\CD 03\\Linkin Park - 06 [MP3-256]".AsOsAgnostic());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_build_nested_multi_track_filename_with_medium_name()
|
||||
{
|
||||
_namingConfig.MultiDiscTrackFormat = "{Album Title} {(Release Year)}/CD {medium:00} - {Medium Name}/{Artist Name} - {track:00} [{Quality Title}] {[Quality Proper]}";
|
||||
|
||||
_release.Media.Add(_medium2);
|
||||
|
||||
Subject.BuildTrackFileName(new List<Track> { _track1 }, _artist, _album, _trackFile)
|
||||
.Should().Be("Hybrid Theory (2020)\\CD 03 - Hybrid Theory\\Linkin Park - 06 [MP3-256]".AsOsAgnostic());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -57,7 +57,7 @@ namespace NzbDrone.Core.Organizer
|
|||
RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||
|
||||
private static readonly Regex FileNameCleanupRegex = new Regex(@"([- ._])(\1)+", RegexOptions.Compiled);
|
||||
private static readonly Regex TrimSeparatorsRegex = new Regex(@"[- ._]$", RegexOptions.Compiled);
|
||||
private static readonly Regex TrimSeparatorsRegex = new Regex(@"[- ._]+$", RegexOptions.Compiled);
|
||||
|
||||
private static readonly Regex ScenifyRemoveChars = new Regex(@"(?<=\s)(,|<|>|\/|\\|;|:|'|""|\||`|~|!|\?|@|$|%|^|\*|-|_|=){1}(?=\s)|('|:|\?|,)(?=(?:(?:s|m)\s)|\s|$)|(\(|\)|\[|\]|\{|\})", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||
private static readonly Regex ScenifyReplaceChars = new Regex(@"[\/]", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||
|
@ -109,7 +109,7 @@ namespace NzbDrone.Core.Organizer
|
|||
|
||||
tracks = tracks.OrderBy(e => e.AlbumReleaseId).ThenBy(e => e.TrackNumber).ToList();
|
||||
|
||||
var splitPatterns = pattern.Split(new char[] { '\\', '/' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
var splitPatterns = pattern.Split(new[] { '\\', '/' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
var components = new List<string>();
|
||||
|
||||
for (var i = 0; i < splitPatterns.Length; i++)
|
||||
|
@ -313,6 +313,7 @@ namespace NzbDrone.Core.Organizer
|
|||
|
||||
private void AddMediumTokens(Dictionary<string, Func<TokenMatch, string>> tokenHandlers, Medium medium)
|
||||
{
|
||||
tokenHandlers["{Medium Name}"] = m => medium.Name;
|
||||
tokenHandlers["{Medium Format}"] = m => medium.Format;
|
||||
}
|
||||
|
||||
|
|
|
@ -61,7 +61,7 @@ namespace NzbDrone.Core.Organizer
|
|||
{
|
||||
new Medium
|
||||
{
|
||||
Name = "CD 1: First Years",
|
||||
Name = "First Years",
|
||||
Format = "CD",
|
||||
Number = 1
|
||||
}
|
||||
|
@ -76,13 +76,13 @@ namespace NzbDrone.Core.Organizer
|
|||
{
|
||||
new Medium
|
||||
{
|
||||
Name = "CD 1: First Years",
|
||||
Name = "First Years",
|
||||
Format = "CD",
|
||||
Number = 1
|
||||
},
|
||||
new Medium
|
||||
{
|
||||
Name = "CD 2: Second Best",
|
||||
Name = "Second Best",
|
||||
Format = "CD",
|
||||
Number = 2
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue