+ Attributes:
+ Category - TV
+ | Video Source - TV Cap, HDTV | Video Format - x264, 720p | Video Genre - Action/Adv, Crime, Drama, Family | Language - English, German
+
+
Groups: alt.binaries.illuminaten
+
Poster: AuToMaTiC <AuTo@Illuminatenboard.org>
+
PostDate: Sunday 06 Mar 2011, 01:05PM PDT
+ ]]>
+
+ 6076287
+ TV
+
+ TV Cap
+ HDTV
+ x264
+ 720p
+ Action/Adv
+ Crime
+ Drama
+ Family
+ English
+ German
+
+
+ alt.binaries.illuminaten
+
+ Report is complete
+ http://www.tvrage.com/Rookie_Blue/episodes/1064943067/1x10/
+
+ 373966350
+ tvp-rookieblue-s01e10-720p.nfo
+ http://www.newzbin.com/nfo/view/txt/373966350/
+
+ http://www.newzbin.com/browse/post/6076287/nzb/
+ AuToMaTiC <AuTo@Illuminatenboard.org>
+ 1295652290
+ Sun, 06 Mar 2011 21:05:58 GMT
+
+ 2
+ 0
+
+
+ Mon, 25 Apr 2011 11:55:04 GMT
+
+
+
\ No newline at end of file
diff --git a/NzbDrone.Core.Test/Files/RSS/SizeParsing/nzbmatrix.xml b/NzbDrone.Core.Test/Files/RSS/SizeParsing/nzbmatrix.xml
new file mode 100644
index 000000000..8ff043ef0
--- /dev/null
+++ b/NzbDrone.Core.Test/Files/RSS/SizeParsing/nzbmatrix.xml
@@ -0,0 +1,23 @@
+
+
+
+ NZBMatrix.com RSS 2.0
+ en
+ NZBMatrix
+ NZBMatrix.com RSS Feed - Usenet
+ http://nzbmatrix.com
+
+ Copyright 2011 NZBMatrix
+ Wed, 14 Sep 2011 02:18:04 +0200
+
+ House S04E11 720p HDTV x264 BAWLS
+ http://nzbmatrix.com/nzb-details.php?id=914522&hit=1
+ http://nzbmatrix.com/nzb-details.php?id=914522&hit=1
+ Name: House S04E11 FRENCH 720p HDTV x264 BAWLS Category: TV: HD Size: 1.24 GB Added: 2011-04-25 15:06:58 Group: alt.binaries.multimedia NFO:View NFO ]]>
+ TV: HD
+ tv.hd
+ 41
+
+
+
+
\ No newline at end of file
diff --git a/NzbDrone.Core.Test/Files/RSS/SizeParsing/nzbsorg.xml b/NzbDrone.Core.Test/Files/RSS/SizeParsing/nzbsorg.xml
new file mode 100644
index 000000000..7060086f1
--- /dev/null
+++ b/NzbDrone.Core.Test/Files/RSS/SizeParsing/nzbsorg.xml
@@ -0,0 +1,27 @@
+
+
+
+ All Categories - NZBs(dot)ORG RSS Feed
+ http://nzbs.org/index.php?&catid=
+ All Categories feed for NZBs(dot)ORG
+ en-us
+
+ Shameless.S08E17.720p.HDTV.x264-BiA
+
+ Wed, 14 Sep 2011 02:14:09 +0000
+ TV-x264
+ http://nzbs.org/index.php?action=view&nzbid=750588
+ Category: TV-x264 Size:1.67 GB Files: 44 (8 pars) Group: a.b.teevee .NFO:View NFO Ext. Link:http://www.tvrage.com/shows/id-5162 Posted: Wed September 14th 00:00:15 UTC Add to My NZBs Download NZB ]]>
+ http://nzbs.org/index.php?action=view&nzbid=750588
+ 750588
+
+ TV-x264
+ http://nzbs.org/index.php?action=getnzb&nzbid=750588&i=9695&h=92653d4053a322e123dbbb3da887c5c5
+
+ 1788245756
+ Wed, 14 Sep 2011 00:00:15 +0000
+
+ http://www.tvrage.com/shows/id-5162
+
+
+
\ No newline at end of file
diff --git a/NzbDrone.Core.Test/Files/RSS/SizeParsing/nzbsrus.xml b/NzbDrone.Core.Test/Files/RSS/SizeParsing/nzbsrus.xml
new file mode 100644
index 000000000..623d20f5d
--- /dev/null
+++ b/NzbDrone.Core.Test/Files/RSS/SizeParsing/nzbsrus.xml
@@ -0,0 +1,23 @@
+
+
+
+ NZBsRus.com
+ This is the NZBs'R'US RSS feed.
+ http://www.nzbsrus.com
+ en-US
+ 5
+
+
+ Shameless.S08E17.720p.HDTV.x264-BiA
+ Wed, 14 Sep 2011 01:06:49 am
+ TV - HD
+ http://www.nzbsrus.com/nzbdownload_rss.php/457967/68614/4182562f71f29cd36b9e7495d00abcff/
+
+ Size 1.67 GiB (42 files)
+ Files: 34
+ Par2s: 8
+
+
+
+
+
\ No newline at end of file
diff --git a/NzbDrone.Core.Test/IndexerTests.cs b/NzbDrone.Core.Test/IndexerTests.cs
index 303167f26..8c077e1a4 100644
--- a/NzbDrone.Core.Test/IndexerTests.cs
+++ b/NzbDrone.Core.Test/IndexerTests.cs
@@ -316,8 +316,72 @@ namespace NzbDrone.Core.Test
result.Should().Be(clean);
}
- }
+ [Test]
+ public void size_newzbin()
+ {
+ //Setup
+ var mocker = new AutoMoqer();
+
+ mocker.GetMock()
+ .Setup(h => h.DownloadStream(It.IsAny(), It.IsAny()))
+ .Returns(File.OpenRead(".\\Files\\Rss\\SizeParsing\\newzbin.xml"));
+
+ //Act
+ var parseResults = mocker.Resolve().FetchRss();
+
+ parseResults.Should().HaveCount(1);
+ parseResults[0].Size.Should().Be(1295620506);
+ }
+
+ [Test]
+ public void size_nzbmatrix()
+ {
+ //Setup
+ var mocker = new AutoMoqer();
+
+ mocker.GetMock()
+ .Setup(h => h.DownloadStream(It.IsAny(), It.IsAny()))
+ .Returns(File.OpenRead(".\\Files\\Rss\\SizeParsing\\nzbmatrix.xml"));
+
+ //Act
+ var parseResults = mocker.Resolve().FetchRss();
+
+ parseResults.Should().HaveCount(1);
+ parseResults[0].Size.Should().Be(1331439862);
+ }
+
+ [Test]
+ public void size_nzbsorg()
+ {
+ //Setup
+ var mocker = new AutoMoqer();
+ mocker.GetMock()
+ .Setup(h => h.DownloadStream(It.IsAny(), It.IsAny()))
+ .Returns(File.OpenRead(".\\Files\\Rss\\SizeParsing\\nzbsorg.xml"));
+ //Act
+ var parseResults = mocker.Resolve().FetchRss();
+ parseResults.Should().HaveCount(1);
+ parseResults[0].Size.Should().Be(1793148846);
+ }
+
+ [Test]
+ public void size_nzbsrus()
+ {
+ //Setup
+ var mocker = new AutoMoqer();
+
+ mocker.GetMock()
+ .Setup(h => h.DownloadStream(It.IsAny(), It.IsAny()))
+ .Returns(File.OpenRead(".\\Files\\Rss\\SizeParsing\\nzbsrus.xml"));
+
+ //Act
+ var parseResults = mocker.Resolve().FetchRss();
+
+ parseResults.Should().HaveCount(1);
+ parseResults[0].Size.Should().Be(1793148846);
+ }
+ }
}
diff --git a/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj
index ea245f194..5fab03992 100644
--- a/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj
+++ b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj
@@ -90,6 +90,7 @@
+
@@ -156,6 +157,18 @@
Always
+
+ Always
+
+
+ Always
+
+
+ Always
+
+
+ Always
+ Always
diff --git a/NzbDrone.Core.Test/ParserTest.cs b/NzbDrone.Core.Test/ParserTest.cs
index a3a38c165..64f407489 100644
--- a/NzbDrone.Core.Test/ParserTest.cs
+++ b/NzbDrone.Core.Test/ParserTest.cs
@@ -338,5 +338,18 @@ namespace NzbDrone.Core.Test
result.SeasonNumber.Should().Be(seasonNumber);
result.FullSeason.Should().BeTrue();
}
+
+ [TestCase("5.64 GB", 6055903887)]
+ [TestCase("5.54 GiB", 5948529705)]
+ [TestCase("398.62 MiB", 417983365)]
+ [TestCase("7,162.1MB", 7510006170)]
+ [TestCase("162.1MB", 169974170)]
+ [TestCase("398.62 MB", 417983365)]
+ public void parse_size(string sizeString, long expectedSize)
+ {
+ var result = Parser.GetReportSize(sizeString);
+
+ result.Should().Be(expectedSize);
+ }
}
}
\ No newline at end of file
diff --git a/NzbDrone.Core.Test/QualityTypeProviderTest.cs b/NzbDrone.Core.Test/QualityTypeProviderTest.cs
new file mode 100644
index 000000000..ab7771da6
--- /dev/null
+++ b/NzbDrone.Core.Test/QualityTypeProviderTest.cs
@@ -0,0 +1,105 @@
+// ReSharper disable RedundantUsingDirective
+using System;
+using System.Collections.Generic;
+using AutoMoq;
+using FizzWare.NBuilder;
+using FluentAssertions;
+using Moq;
+using NUnit.Framework;
+using NzbDrone.Core.Providers;
+using NzbDrone.Core.Repository;
+using NzbDrone.Core.Repository.Quality;
+using NzbDrone.Core.Test.Framework;
+
+namespace NzbDrone.Core.Test
+{
+ [TestFixture]
+ // ReSharper disable InconsistentNaming
+ public class QualityTypeProviderTest : TestBase
+ {
+ [Test]
+ public void SetupDefault_should_add_six_profiles()
+ {
+ var mocker = new AutoMoqer();
+ var db = MockLib.GetEmptyDatabase();
+ mocker.SetConstant(db);
+
+ //Act
+ mocker.Resolve().SetupDefault();
+
+ //Assert
+ var types = mocker.Resolve().All();
+
+ types.Should().HaveCount(6);
+ types.Should().Contain(e => e.Name == "SDTV" && e.QualityTypeId == 1);
+ types.Should().Contain(e => e.Name == "DVD" && e.QualityTypeId == 2);
+ types.Should().Contain(e => e.Name == "HDTV" && e.QualityTypeId == 4);
+ types.Should().Contain(e => e.Name == "WEBDL" && e.QualityTypeId == 5);
+ types.Should().Contain(e => e.Name == "Bluray720p" && e.QualityTypeId == 6);
+ types.Should().Contain(e => e.Name == "Bluray1080p" && e.QualityTypeId == 7);
+ }
+
+ [Test]
+ public void SetupDefault_already_exists()
+ {
+ var mocker = new AutoMoqer();
+ var db = MockLib.GetEmptyDatabase();
+ mocker.SetConstant(db);
+
+ var fakeQualityType = Builder.CreateNew()
+ .Build();
+
+ db.Insert(fakeQualityType);
+
+ //Act
+ mocker.Resolve().SetupDefault();
+
+ //Assert
+ var types = mocker.Resolve().All();
+
+ types.Should().HaveCount(1);
+ }
+
+ [Test]
+ public void GetList_single_quality_type()
+ {
+ var mocker = new AutoMoqer();
+ var db = MockLib.GetEmptyDatabase();
+ mocker.SetConstant(db);
+
+ var fakeQualityTypes = Builder.CreateListOfSize(6)
+ .Build();
+
+ var ids = new List { 1 };
+
+ db.InsertMany(fakeQualityTypes);
+
+ //Act
+ var result = mocker.Resolve().GetList(ids);
+
+ //Assert
+ result.Should().HaveCount(ids.Count);
+ }
+
+ [Test]
+ public void GetList_multiple_quality_type()
+ {
+ var mocker = new AutoMoqer();
+ var db = MockLib.GetEmptyDatabase();
+ mocker.SetConstant(db);
+
+ var fakeQualityTypes = Builder.CreateListOfSize(6)
+ .Build();
+
+ var ids = new List { 1, 2 };
+
+ db.InsertMany(fakeQualityTypes);
+
+ //Act
+ var result = mocker.Resolve().GetList(ids);
+
+ //Assert
+ result.Should().HaveCount(ids.Count);
+ }
+ }
+}
\ No newline at end of file
diff --git a/NzbDrone.Core/CentralDispatch.cs b/NzbDrone.Core/CentralDispatch.cs
index 4a0860b39..c255d1062 100644
--- a/NzbDrone.Core/CentralDispatch.cs
+++ b/NzbDrone.Core/CentralDispatch.cs
@@ -61,6 +61,7 @@ namespace NzbDrone.Core
LogConfiguration.StartDbLogging();
_kernel.Get().SetupDefaultProfiles();
+ _kernel.Get().SetupDefault();
BindExternalNotifications();
BindIndexers();
diff --git a/NzbDrone.Core/Datastore/Migrations/Migration20110909.cs b/NzbDrone.Core/Datastore/Migrations/Migration20110909.cs
index 9e7f7de76..13a83e17c 100644
--- a/NzbDrone.Core/Datastore/Migrations/Migration20110909.cs
+++ b/NzbDrone.Core/Datastore/Migrations/Migration20110909.cs
@@ -12,6 +12,14 @@ namespace NzbDrone.Core.Datastore.Migrations
{
Database.AddColumn("Series", "Runtime", DbType.Int32, ColumnProperty.Null);
Database.AddColumn("Series", "BannerUrl", DbType.String, ColumnProperty.Null);
+
+ Database.AddTable("QualityTypes", new[]
+ {
+ new Column("QualityTypeId", DbType.Int32, ColumnProperty.PrimaryKey),
+ new Column("Name", DbType.String, ColumnProperty.NotNull),
+ new Column("MinSize", DbType.Int64, ColumnProperty.NotNull),
+ new Column("MaxSize", DbType.Int64, ColumnProperty.NotNull)
+ });
}
public override void Down()
diff --git a/NzbDrone.Core/Fluent.cs b/NzbDrone.Core/Fluent.cs
index 5b06b482d..cd5ce56db 100644
--- a/NzbDrone.Core/Fluent.cs
+++ b/NzbDrone.Core/Fluent.cs
@@ -21,12 +21,12 @@ namespace NzbDrone.Core
public static Int64 Megabytes(this int megabytes)
{
- return megabytes * 1048576;
+ return megabytes * 1048576L;
}
public static Int64 Gigabytes(this int gigabytes)
{
- return gigabytes * 1073741824;
+ return gigabytes * 1073741824L;
}
}
}
diff --git a/NzbDrone.Core/Model/EpisodeParseResult.cs b/NzbDrone.Core/Model/EpisodeParseResult.cs
index 4a4fae7b2..a0de81236 100644
--- a/NzbDrone.Core/Model/EpisodeParseResult.cs
+++ b/NzbDrone.Core/Model/EpisodeParseResult.cs
@@ -30,6 +30,8 @@ namespace NzbDrone.Core.Model
public bool FullSeason { get; set; }
+ public long Size { get; set; }
+
public override string ToString()
{
if (AirDate != null && EpisodeNumbers == null)
diff --git a/NzbDrone.Core/NzbDrone.Core.csproj b/NzbDrone.Core/NzbDrone.Core.csproj
index 51de3be66..88f60d607 100644
--- a/NzbDrone.Core/NzbDrone.Core.csproj
+++ b/NzbDrone.Core/NzbDrone.Core.csproj
@@ -211,6 +211,7 @@
+
@@ -276,6 +277,7 @@
+
@@ -320,6 +322,7 @@
+
diff --git a/NzbDrone.Core/Parser.cs b/NzbDrone.Core/Parser.cs
index bc48342ea..a9fa7b70e 100644
--- a/NzbDrone.Core/Parser.cs
+++ b/NzbDrone.Core/Parser.cs
@@ -54,6 +54,9 @@ namespace NzbDrone.Core
private static readonly Regex SimpleTitleRegex = new Regex(@"480[i|p]|720[i|p]|1080[i|p]|[x|h|x\s|h\s]264|DD\W?5\W1|\<|\>|\?|\*|\:|\||""",
RegexOptions.IgnoreCase | RegexOptions.Compiled);
+ private static readonly Regex ReportSizeRegex = new Regex(@"(?\d+\.\d{1,2}|\d+\,\d+\.\d{1,2})\W?(?GB|MB|GiB|MiB)",
+ RegexOptions.IgnoreCase | RegexOptions.Compiled);
+
///
/// Parses a file path into list of episodes it contains
@@ -392,5 +395,24 @@ namespace NzbDrone.Core
// Return char and concat substring.
return char.ToUpper(s[0]) + s.Substring(1);
}
+
+ public static long GetReportSize(string sizeString)
+ {
+ var match = ReportSizeRegex.Matches(sizeString);
+
+ if (match.Count != 0)
+ {
+ var value = Convert.ToDecimal(Regex.Replace(match[0].Groups["value"].Value, "\\,", ""));
+
+ var unit = match[0].Groups["unit"].Value;
+
+ if (unit.Equals("MB", StringComparison.InvariantCultureIgnoreCase) || unit.Equals("MiB", StringComparison.InvariantCultureIgnoreCase))
+ return Convert.ToInt64(value * 1048576L);
+
+ if (unit.Equals("GB", StringComparison.InvariantCultureIgnoreCase) || unit.Equals("GiB", StringComparison.InvariantCultureIgnoreCase))
+ return Convert.ToInt64(value * 1073741824L);
+ }
+ return 0;
+ }
}
}
diff --git a/NzbDrone.Core/Providers/Indexer/Newzbin.cs b/NzbDrone.Core/Providers/Indexer/Newzbin.cs
index ae99761d4..a5e33a212 100644
--- a/NzbDrone.Core/Providers/Indexer/Newzbin.cs
+++ b/NzbDrone.Core/Providers/Indexer/Newzbin.cs
@@ -96,6 +96,10 @@ namespace NzbDrone.Core.Providers.Indexer
var languageString = Regex.Match(item.Summary.Text, @"Language - \w*", RegexOptions.IgnoreCase).Value;
currentResult.Language = Parser.ParseLanguage(languageString);
+
+ var sizeString = Regex.Match(item.Summary.Text, @"\(Size: \d*\,?\d+\.\d{1,2}\w{2}\)", RegexOptions.IgnoreCase).Value;
+
+ currentResult.Size = Parser.GetReportSize(sizeString);
}
return currentResult;
}
diff --git a/NzbDrone.Core/Providers/Indexer/NzbMatrix.cs b/NzbDrone.Core/Providers/Indexer/NzbMatrix.cs
index e9799e6c8..ac9f40ff8 100644
--- a/NzbDrone.Core/Providers/Indexer/NzbMatrix.cs
+++ b/NzbDrone.Core/Providers/Indexer/NzbMatrix.cs
@@ -1,7 +1,9 @@
using System;
using System.Collections.Generic;
using System.ServiceModel.Syndication;
+using System.Text.RegularExpressions;
using Ninject;
+using NzbDrone.Core.Model;
using NzbDrone.Core.Model.Search;
using NzbDrone.Core.Providers.Core;
@@ -67,5 +69,15 @@ namespace NzbDrone.Core.Providers.Indexer
return searchUrls;
}
+ protected override EpisodeParseResult CustomParser(SyndicationItem item, EpisodeParseResult currentResult)
+ {
+ if (currentResult != null)
+ {
+ var sizeString = Regex.Match(item.Summary.Text, @"Size: \d+\.\d{1,2} \w{2} ", RegexOptions.IgnoreCase).Value;
+
+ currentResult.Size = Parser.GetReportSize(sizeString);
+ }
+ return currentResult;
+ }
}
}
\ No newline at end of file
diff --git a/NzbDrone.Core/Providers/Indexer/NzbsOrg.cs b/NzbDrone.Core/Providers/Indexer/NzbsOrg.cs
index cb6acef3c..14001438a 100644
--- a/NzbDrone.Core/Providers/Indexer/NzbsOrg.cs
+++ b/NzbDrone.Core/Providers/Indexer/NzbsOrg.cs
@@ -1,7 +1,9 @@
using System;
using System.Collections.Generic;
using System.ServiceModel.Syndication;
+using System.Text.RegularExpressions;
using Ninject;
+using NzbDrone.Core.Model;
using NzbDrone.Core.Model.Search;
using NzbDrone.Core.Providers.Core;
@@ -65,5 +67,15 @@ namespace NzbDrone.Core.Providers.Indexer
return searchUrls;
}
+ protected override EpisodeParseResult CustomParser(SyndicationItem item, EpisodeParseResult currentResult)
+ {
+ if (currentResult != null)
+ {
+ var sizeString = Regex.Match(item.Summary.Text, @">\d+\.\d{1,2} \w{2}", RegexOptions.IgnoreCase).Value;
+
+ currentResult.Size = Parser.GetReportSize(sizeString);
+ }
+ return currentResult;
+ }
}
}
\ No newline at end of file
diff --git a/NzbDrone.Core/Providers/Indexer/NzbsRUs.cs b/NzbDrone.Core/Providers/Indexer/NzbsRUs.cs
index d09d2b627..c8bd86294 100644
--- a/NzbDrone.Core/Providers/Indexer/NzbsRUs.cs
+++ b/NzbDrone.Core/Providers/Indexer/NzbsRUs.cs
@@ -1,6 +1,8 @@
using System.Collections.Generic;
using System.ServiceModel.Syndication;
+using System.Text.RegularExpressions;
using Ninject;
+using NzbDrone.Core.Model;
using NzbDrone.Core.Model.Search;
using NzbDrone.Core.Providers.Core;
@@ -41,5 +43,16 @@ namespace NzbDrone.Core.Providers.Indexer
{
return new List();
}
+
+ protected override EpisodeParseResult CustomParser(SyndicationItem item, EpisodeParseResult currentResult)
+ {
+ if (currentResult != null)
+ {
+ var sizeString = Regex.Match(item.Summary.Text, @"\d+\.\d{1,2} \w{3}", RegexOptions.IgnoreCase).Value;
+
+ currentResult.Size = Parser.GetReportSize(sizeString);
+ }
+ return currentResult;
+ }
}
}
\ No newline at end of file
diff --git a/NzbDrone.Core/Providers/QualityTypeProvider.cs b/NzbDrone.Core/Providers/QualityTypeProvider.cs
new file mode 100644
index 000000000..ae746723d
--- /dev/null
+++ b/NzbDrone.Core/Providers/QualityTypeProvider.cs
@@ -0,0 +1,68 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using NLog;
+using NzbDrone.Core.Repository.Quality;
+using PetaPoco;
+
+namespace NzbDrone.Core.Providers
+{
+ public class QualityTypeProvider
+ {
+ private readonly IDatabase _database;
+
+ private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
+
+ public QualityTypeProvider(IDatabase database)
+ {
+ _database = database;
+ }
+
+ public virtual void Update(QualityType qualityType)
+ {
+ _database.Update(qualityType);
+ }
+
+ public virtual void UpdateAll(List qualityTypes)
+ {
+ _database.UpdateMany(qualityTypes);
+ }
+
+ public virtual List All()
+ {
+ return _database.Fetch();
+ }
+
+ public virtual QualityType Get(int qualityTypeId)
+ {
+ return _database.Single(qualityTypeId);
+ }
+
+ public virtual List GetList(List qualityTypeIds)
+ {
+ var queryParams = String.Join(", ", qualityTypeIds);
+ var query = String.Format("WHERE QualityTypeId IN ({0})", queryParams);
+
+ return _database.Fetch(query);
+ }
+
+ public virtual void SetupDefault()
+ {
+ if (All().Count != 0)
+ return;
+
+ Logger.Info("Setting up default quality types");
+
+ var qualityTypes = new List();
+ qualityTypes.Add(new QualityType { QualityTypeId = 1, Name = "SDTV", MinSize = 0, MaxSize = 10.Gigabytes() });
+ qualityTypes.Add(new QualityType { QualityTypeId = 2, Name = "DVD", MinSize = 0, MaxSize = 10.Gigabytes() });
+ qualityTypes.Add(new QualityType { QualityTypeId = 4, Name = "HDTV", MinSize = 0, MaxSize = 10.Gigabytes() });
+ qualityTypes.Add(new QualityType { QualityTypeId = 5, Name = "WEBDL", MinSize = 0, MaxSize = 10.Gigabytes() });
+ qualityTypes.Add(new QualityType { QualityTypeId = 6, Name = "Bluray720p", MinSize = 0, MaxSize = 10.Gigabytes() });
+ qualityTypes.Add(new QualityType { QualityTypeId = 7, Name = "Bluray1080p", MinSize = 0, MaxSize = 10.Gigabytes() });
+
+ _database.InsertMany(qualityTypes);
+ }
+ }
+}
diff --git a/NzbDrone.Core/Repository/Quality/QualityType.cs b/NzbDrone.Core/Repository/Quality/QualityType.cs
new file mode 100644
index 000000000..037e640e4
--- /dev/null
+++ b/NzbDrone.Core/Repository/Quality/QualityType.cs
@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using PetaPoco;
+
+namespace NzbDrone.Core.Repository.Quality
+{
+ [TableName("QualityTypes")]
+ [PrimaryKey("QualityTypeId", autoIncrement = false)]
+ public class QualityType
+ {
+ public int QualityTypeId { get; set; }
+ public string Name { get; set; }
+ public long MinSize { get; set; }
+ public long MaxSize { get; set; }
+
+ public override string ToString()
+ {
+ return Name;
+ }
+ }
+}
\ No newline at end of file
diff --git a/NzbDrone.Web/Views/Series/Details.cshtml b/NzbDrone.Web/Views/Series/Details.cshtml
index b3302bcf0..70e18465e 100644
--- a/NzbDrone.Web/Views/Series/Details.cshtml
+++ b/NzbDrone.Web/Views/Series/Details.cshtml
@@ -81,7 +81,6 @@
#banner-container
{
-
width: 758px;
height: 140px;
padding: 0px;