mirror of
https://github.com/Radarr/Radarr.git
synced 2024-08-18 16:29:41 +02:00
Fixed: Migrate Mediainfo properties that changed names
This commit is contained in:
parent
0e1cb335a9
commit
5182ac2a13
@ -0,0 +1,105 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using FluentAssertions;
|
||||
using NUnit.Framework;
|
||||
using NzbDrone.Common.Serializer;
|
||||
using NzbDrone.Core.Datastore.Migration;
|
||||
using NzbDrone.Core.Test.Framework;
|
||||
|
||||
namespace NzbDrone.Core.Test.Datastore.Migration
|
||||
{
|
||||
[TestFixture]
|
||||
public class mediainfo_channel_propertiesFixture : MigrationTest<mediainfo_channels>
|
||||
{
|
||||
private void AddMovieFile(mediainfo_channels m, int id)
|
||||
{
|
||||
var movie = new
|
||||
{
|
||||
Id = id,
|
||||
MovieId = id,
|
||||
Quality = new { }.ToJson(),
|
||||
Size = 0,
|
||||
DateAdded = DateTime.UtcNow,
|
||||
RelativePath = "SomeFile.mkv",
|
||||
Languages = new[] { 1, 2 }.ToJson(),
|
||||
IndexerFlags = 0,
|
||||
MediaInfo = new
|
||||
{
|
||||
ContainerFormat = "Matroska",
|
||||
VideoFormat = "AVC",
|
||||
VideoCodecID = "V_MPEG4/ISO/AVC",
|
||||
VideoProfile = "High@L4.1",
|
||||
VideoCodecLibrary = "x264 - core 155 r2867+74 66b5600 t_mod_Custom_2 [8-bit@all X86_64]",
|
||||
VideoBitrate = 6243046,
|
||||
VideoBitDepth = 8,
|
||||
VideoMultiViewCount = 0,
|
||||
VideoColourPrimaries = "BT.709",
|
||||
VideoTransferCharacteristics = "BT.709",
|
||||
Width = 1280,
|
||||
Height = 692,
|
||||
AudioFormat = "AC-3",
|
||||
AudioCodecID = "A_AC3",
|
||||
AudioCodecLibrary = "",
|
||||
AudioAdditionalFeatures = "",
|
||||
AudioBitrate = 640000,
|
||||
RunTime = "01:36:47.8720000",
|
||||
AudioStreamCount = 3,
|
||||
AudioChannels = 6,
|
||||
AudioChannelPositions = "3/2/0.1",
|
||||
AudioChannelPositionsText = "Front: L C R, Side: L R, LFE",
|
||||
AudioProfile = "",
|
||||
VideoFps = 23.976,
|
||||
AudioLanguages = "Czech / Slovak / English",
|
||||
Subtitles = "Czech / Czech",
|
||||
ScanType = "Progressive",
|
||||
SchemaRevision = 5
|
||||
}.ToJson()
|
||||
};
|
||||
|
||||
m.Insert.IntoTable("MovieFiles").Row(movie);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void should_change_property_names_for_audio_channels()
|
||||
{
|
||||
var db = WithMigrationTestDb(c =>
|
||||
{
|
||||
AddMovieFile(c, 1);
|
||||
});
|
||||
|
||||
var items = db.Query<MovieFile188>("SELECT MediaInfo FROM MovieFiles");
|
||||
|
||||
items.Should().HaveCount(1);
|
||||
|
||||
var mediainfo = items.First().MediaInfo;
|
||||
|
||||
//Removed props should be null
|
||||
mediainfo.AudioChannels.Should().BeNull();
|
||||
mediainfo.AudioChannelPositionsText.Should().BeNull();
|
||||
|
||||
//Renamed should have original value
|
||||
mediainfo.AudioChannelsContainer.Should().NotBeNull();
|
||||
mediainfo.AudioChannelPositionsTextContainer.Should().NotBeNull();
|
||||
mediainfo.AudioChannelsContainer.Should().Be(6);
|
||||
mediainfo.AudioChannelPositionsTextContainer.Should().Be("Front: L C R, Side: L R, LFE");
|
||||
|
||||
//Should not touch other props
|
||||
mediainfo.AudioChannelPositions.Should().Be("3/2/0.1");
|
||||
}
|
||||
|
||||
public class MovieFile188
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public MediaInfo188 MediaInfo { get; set; }
|
||||
}
|
||||
|
||||
public class MediaInfo188
|
||||
{
|
||||
public int? AudioChannels { get; set; }
|
||||
public int? AudioChannelsContainer { get; set; }
|
||||
public string AudioChannelPositionsText { get; set; }
|
||||
public string AudioChannelPositionsTextContainer { get; set; }
|
||||
public string AudioChannelPositions { get; set; }
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
using FluentMigrator;
|
||||
using NzbDrone.Core.Datastore.Migration.Framework;
|
||||
|
||||
namespace NzbDrone.Core.Datastore.Migration
|
||||
{
|
||||
[Migration(188)]
|
||||
public class mediainfo_channels : NzbDroneMigrationBase
|
||||
{
|
||||
protected override void MainDbUpgrade()
|
||||
{
|
||||
Execute.Sql("UPDATE MovieFiles SET MediaInfo = Replace(MediaInfo, '\"audioChannels\"', '\"audioChannelsContainer\"');");
|
||||
Execute.Sql("UPDATE MovieFiles SET MediaInfo = Replace(MediaInfo, '\"audioChannelPositionsText\"', '\"audioChannelPositionsTextContainer\"');");
|
||||
|
||||
//Change List Interval from Min to Hour
|
||||
Execute.Sql("UPDATE Config SET Value = max((Value / 60) + 1, 6) WHERE Key = 'importlistsyncinterval'");
|
||||
}
|
||||
}
|
||||
}
|
@ -18,7 +18,7 @@ public class VideoFileInfoReader : IVideoFileInfoReader
|
||||
private readonly IDiskProvider _diskProvider;
|
||||
private readonly Logger _logger;
|
||||
|
||||
public const int MINIMUM_MEDIA_INFO_SCHEMA_REVISION = 3;
|
||||
public const int MINIMUM_MEDIA_INFO_SCHEMA_REVISION = 4;
|
||||
public const int CURRENT_MEDIA_INFO_SCHEMA_REVISION = 6;
|
||||
|
||||
public VideoFileInfoReader(IDiskProvider diskProvider, Logger logger)
|
||||
|
Loading…
Reference in New Issue
Block a user