From 64bbf8a9b5630748b6ef41c02a2e676e45882595 Mon Sep 17 00:00:00 2001
From: Mark McDowall <markus.mcd5@gmail.com>
Date: Wed, 20 Apr 2011 16:29:12 -0700
Subject: [PATCH 1/2] Newzbin override for getting proper and quality.

---
 NzbDrone.Core/Parser.cs                              |  2 +-
 .../Providers/Indexer/IndexerProviderBase.cs         | 12 ++++++++++--
 NzbDrone.Core/Providers/Indexer/NewzbinProvider.cs   | 12 ++++++++++++
 3 files changed, 23 insertions(+), 3 deletions(-)

diff --git a/NzbDrone.Core/Parser.cs b/NzbDrone.Core/Parser.cs
index fda84e562..957847dec 100644
--- a/NzbDrone.Core/Parser.cs
+++ b/NzbDrone.Core/Parser.cs
@@ -206,7 +206,7 @@ namespace NzbDrone.Core
             return title.ToLower().Contains("proper");
         }
 
-        private static QualityTypes ParseQuality(string name)
+        internal static QualityTypes ParseQuality(string name)
         {
             Logger.Trace("Trying to parse quality for {0}", name);
 
diff --git a/NzbDrone.Core/Providers/Indexer/IndexerProviderBase.cs b/NzbDrone.Core/Providers/Indexer/IndexerProviderBase.cs
index 93ef5b2b4..3633191e1 100644
--- a/NzbDrone.Core/Providers/Indexer/IndexerProviderBase.cs
+++ b/NzbDrone.Core/Providers/Indexer/IndexerProviderBase.cs
@@ -42,7 +42,6 @@ namespace NzbDrone.Core.Providers.Indexer
         /// </summary>
         public abstract string Name { get; }
 
-
         /// <summary>
         ///   Generates direct link to download an NZB
         /// </summary>
@@ -50,7 +49,6 @@ namespace NzbDrone.Core.Providers.Indexer
         /// <returns>Download link URL</returns>
         protected abstract string NzbDownloadUrl(SyndicationItem item);
 
-
         /// <summary>
         ///   Parses the RSS feed item and.
         /// </summary>
@@ -74,6 +72,16 @@ namespace NzbDrone.Core.Providers.Indexer
             return null;
         }
 
+        /// <summary>
+        /// This method can be overwritten to provide indexer specific info parsing
+        /// </summary>
+        /// <param name="item">RSS item that needs to be parsed</param>
+        /// <param name="currentResult">Result of the built in parse function.</param>
+        /// <returns></returns>
+        protected virtual EpisodeParseResult CustomParser(SyndicationItem item, EpisodeParseResult currentResult)
+        {
+            return currentResult;
+        }
 
         /// <summary>
         ///   Fetches RSS feed and process each news item.
diff --git a/NzbDrone.Core/Providers/Indexer/NewzbinProvider.cs b/NzbDrone.Core/Providers/Indexer/NewzbinProvider.cs
index 87c71cdd6..00d26ed8f 100644
--- a/NzbDrone.Core/Providers/Indexer/NewzbinProvider.cs
+++ b/NzbDrone.Core/Providers/Indexer/NewzbinProvider.cs
@@ -1,4 +1,5 @@
 using System.ServiceModel.Syndication;
+using NzbDrone.Core.Model;
 using NzbDrone.Core.Providers.Core;
 using SubSonic.Repository;
 
@@ -32,5 +33,16 @@ namespace NzbDrone.Core.Providers.Indexer
         {
             return item.Id;
         }
+
+        protected override EpisodeParseResult CustomParser(SyndicationItem item, EpisodeParseResult currentResult)
+        {
+            var quality = Parser.ParseQuality(item.Summary.Text);
+            var proper = Parser.ParseProper(item.Summary.Text);
+
+            currentResult.Quality = quality;
+            currentResult.Proper = proper;
+
+            return currentResult;
+        }
     }
 }
\ No newline at end of file

From f3457a730c1c3cfd28af91390137fbda6d03d767 Mon Sep 17 00:00:00 2001
From: Mark McDowall <markus.mcd5@gmail.com>
Date: Wed, 20 Apr 2011 16:30:50 -0700
Subject: [PATCH 2/2] CustomParser will run now.

---
 NzbDrone.Core/Providers/Indexer/IndexerProviderBase.cs | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/NzbDrone.Core/Providers/Indexer/IndexerProviderBase.cs b/NzbDrone.Core/Providers/Indexer/IndexerProviderBase.cs
index 3633191e1..2dbd31b71 100644
--- a/NzbDrone.Core/Providers/Indexer/IndexerProviderBase.cs
+++ b/NzbDrone.Core/Providers/Indexer/IndexerProviderBase.cs
@@ -59,6 +59,8 @@ namespace NzbDrone.Core.Providers.Indexer
             var episodeParseResult = Parser.ParseEpisodeInfo(item.Title.Text);
             if (episodeParseResult == null) return null;
 
+            episodeParseResult = CustomParser(item, episodeParseResult);
+
             var seriesInfo = _seriesProvider.FindSeries(episodeParseResult.SeriesTitle);
 
             if (seriesInfo != null)