Improved Quality lookup.

This commit is contained in:
Taloth Saldono 2016-07-25 23:43:06 +02:00
parent 1218dd255f
commit 6f2dd5d2fa
1 changed files with 48 additions and 44 deletions

View File

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Datastore; using NzbDrone.Core.Datastore;
namespace NzbDrone.Core.Qualities namespace NzbDrone.Core.Qualities
@ -72,63 +73,66 @@ namespace NzbDrone.Core.Qualities
//public static Quality WEBRip720p { get { return new Quality(14, "WEBRip-720p"); } } //public static Quality WEBRip720p { get { return new Quality(14, "WEBRip-720p"); } }
//public static Quality WEBRip1080p { get { return new Quality(15, "WEBRip-1080p"); } } //public static Quality WEBRip1080p { get { return new Quality(15, "WEBRip-1080p"); } }
public static Quality HDTV2160p { get { return new Quality(16, "HDTV-2160p"); } } public static Quality HDTV2160p { get { return new Quality(16, "HDTV-2160p"); } }
//public static Quality WEBRip2160p { get { return new Quality(17, "WEBRip-1080p"); } } //public static Quality WEBRip2160p { get { return new Quality(17, "WEBRip-2160p"); } }
public static Quality WEBDL2160p { get { return new Quality(18, "WEBDL-2160p"); } } public static Quality WEBDL2160p { get { return new Quality(18, "WEBDL-2160p"); } }
public static Quality Bluray2160p { get { return new Quality(19, "Bluray-2160p"); } } public static Quality Bluray2160p { get { return new Quality(19, "Bluray-2160p"); } }
public static List<Quality> All static Quality()
{ {
get All = new List<Quality>
{ {
return new List<Quality> Unknown,
{ SDTV,
Unknown, DVD,
SDTV, WEBDL1080p,
DVD, HDTV720p,
WEBDL1080p, WEBDL720p,
HDTV720p, Bluray720p,
WEBDL720p, Bluray1080p,
Bluray720p, WEBDL480p,
Bluray1080p, HDTV1080p,
WEBDL480p, RAWHD,
HDTV1080p, HDTV2160p,
RAWHD, WEBDL2160p,
HDTV2160p, Bluray2160p,
WEBDL2160p, };
Bluray2160p,
}; AllLookup = new Quality[All.Select(v => v.Id).Max() + 1];
foreach (var quality in All)
{
AllLookup[quality.Id] = quality;
} }
DefaultQualityDefinitions = new HashSet<QualityDefinition>
{
new QualityDefinition(Quality.Unknown) { Weight = 1, MinSize = 0, MaxSize = 100 },
new QualityDefinition(Quality.SDTV) { Weight = 2, MinSize = 0, MaxSize = 100 },
new QualityDefinition(Quality.WEBDL480p) { Weight = 3, MinSize = 0, MaxSize = 100 },
new QualityDefinition(Quality.DVD) { Weight = 4, MinSize = 0, MaxSize = 100 },
new QualityDefinition(Quality.HDTV720p) { Weight = 5, MinSize = 0, MaxSize = 100 },
new QualityDefinition(Quality.HDTV1080p) { Weight = 6, MinSize = 0, MaxSize = 100 },
new QualityDefinition(Quality.RAWHD) { Weight = 7, MinSize = 0, MaxSize = null },
new QualityDefinition(Quality.WEBDL720p) { Weight = 8, MinSize = 0, MaxSize = 100 },
new QualityDefinition(Quality.Bluray720p) { Weight = 9, MinSize = 0, MaxSize = 100 },
new QualityDefinition(Quality.WEBDL1080p) { Weight = 10, MinSize = 0, MaxSize = 100 },
new QualityDefinition(Quality.Bluray1080p) { Weight = 11, MinSize = 0, MaxSize = 100 },
new QualityDefinition(Quality.HDTV2160p) { Weight = 12, MinSize = 0, MaxSize = null },
new QualityDefinition(Quality.WEBDL2160p) { Weight = 13, MinSize = 0, MaxSize = null },
new QualityDefinition(Quality.Bluray2160p) { Weight = 14, MinSize = 0, MaxSize = null },
};
} }
public static HashSet<QualityDefinition> DefaultQualityDefinitions public static readonly List<Quality> All;
{
get public static readonly Quality[] AllLookup;
{
return new HashSet<QualityDefinition> public static readonly HashSet<QualityDefinition> DefaultQualityDefinitions;
{
new QualityDefinition(Quality.Unknown) { Weight = 1, MinSize = 0, MaxSize = 100 },
new QualityDefinition(Quality.SDTV) { Weight = 2, MinSize = 0, MaxSize = 100 },
new QualityDefinition(Quality.WEBDL480p) { Weight = 3, MinSize = 0, MaxSize = 100 },
new QualityDefinition(Quality.DVD) { Weight = 4, MinSize = 0, MaxSize = 100 },
new QualityDefinition(Quality.HDTV720p) { Weight = 5, MinSize = 0, MaxSize = 100 },
new QualityDefinition(Quality.HDTV1080p) { Weight = 6, MinSize = 0, MaxSize = 100 },
new QualityDefinition(Quality.RAWHD) { Weight = 7, MinSize = 0, MaxSize = null },
new QualityDefinition(Quality.WEBDL720p) { Weight = 8, MinSize = 0, MaxSize = 100 },
new QualityDefinition(Quality.Bluray720p) { Weight = 9, MinSize = 0, MaxSize = 100 },
new QualityDefinition(Quality.WEBDL1080p) { Weight = 10, MinSize = 0, MaxSize = 100 },
new QualityDefinition(Quality.Bluray1080p) { Weight = 11, MinSize = 0, MaxSize = 100 },
new QualityDefinition(Quality.HDTV2160p) { Weight = 12, MinSize = 0, MaxSize = null },
new QualityDefinition(Quality.WEBDL2160p) { Weight = 13, MinSize = 0, MaxSize = null },
new QualityDefinition(Quality.Bluray2160p) { Weight = 14, MinSize = 0, MaxSize = null },
};
}
}
public static Quality FindById(int id) public static Quality FindById(int id)
{ {
if (id == 0) return Unknown; if (id == 0) return Unknown;
Quality quality = All.FirstOrDefault(v => v.Id == id); var quality = AllLookup[id];
if (quality == null) if (quality == null)
throw new ArgumentException("ID does not match a known quality", "id"); throw new ArgumentException("ID does not match a known quality", "id");