New: Preserve replaygain tags

pull/4547/head
Qstick 4 months ago
parent 0121095b3e
commit 2a8c67badc

@ -326,7 +326,7 @@ namespace NzbDrone.Core.Test.MediaFiles.AudioTagServiceFixture
[Test] [Test]
public void should_ignore_non_parsable_id3v23_date() public void should_ignore_non_parsable_id3v23_date()
{ {
GivenFileCopy("nin.mp2"); GivenFileCopy("nin.mp3");
using (var file = TagLib.File.Create(_copiedFile)) using (var file = TagLib.File.Create(_copiedFile))
{ {
@ -440,5 +440,37 @@ namespace NzbDrone.Core.Test.MediaFiles.AudioTagServiceFixture
Mocker.GetMock<IEventAggregator>() Mocker.GetMock<IEventAggregator>()
.Verify(v => v.PublishEvent(It.IsAny<TrackFileRetaggedEvent>()), Times.Once()); .Verify(v => v.PublishEvent(It.IsAny<TrackFileRetaggedEvent>()), Times.Once());
} }
[TestCase("nin.mp3")]
public void should_ignore_replaygain_tags_during_scrub(string filename)
{
Mocker.GetMock<IConfigService>()
.Setup(x => x.ScrubAudioTags)
.Returns(true);
GivenFileCopy(filename);
using (var preFile = TagLib.File.Create(_copiedFile))
{
preFile.Tag.ReplayGainAlbumPeak = 1;
preFile.Tag.ReplayGainAlbumGain = 500;
preFile.Tag.ReplayGainTrackPeak = 2;
preFile.Tag.ReplayGainTrackGain = 250;
preFile.Save();
}
var file = GivenPopulatedTrackfile(0);
file.Path = _copiedFile;
Subject.WriteTags(file, false, true);
using (var postFile = TagLib.File.Create(_copiedFile))
{
postFile.Tag.ReplayGainAlbumGain.Should().Be(500);
postFile.Tag.ReplayGainAlbumPeak.Should().Be(1);
postFile.Tag.ReplayGainTrackGain.Should().Be(250);
postFile.Tag.ReplayGainTrackPeak.Should().Be(2);
}
}
} }
} }

@ -151,8 +151,24 @@ namespace NzbDrone.Core.MediaFiles
try try
{ {
file = TagLib.File.Create(path); file = TagLib.File.Create(path);
var replayGainAlbumGain = file.Tag.ReplayGainAlbumGain;
var replayGainAlbumPeak = file.Tag.ReplayGainAlbumPeak;
var replayGainTrackGain = file.Tag.ReplayGainTrackGain;
var replayGainTrackPeak = file.Tag.ReplayGainTrackPeak;
file.RemoveTags(TagLib.TagTypes.AllTags); file.RemoveTags(TagLib.TagTypes.AllTags);
file.Save(); file.Save();
file.Dispose();
file = TagLib.File.Create(path);
file.Tag.ReplayGainAlbumGain = replayGainAlbumGain;
file.Tag.ReplayGainAlbumPeak = replayGainAlbumPeak;
file.Tag.ReplayGainTrackGain = replayGainTrackGain;
file.Tag.ReplayGainTrackPeak = replayGainTrackPeak;
file.Save();
} }
catch (CorruptFileException ex) catch (CorruptFileException ex)
{ {

Loading…
Cancel
Save