1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2024-12-12 11:15:43 +02:00

Fixed Parser (broke 103 naming convention, but it fixed more than it broke).

RssItemProcessingProvider - moved Title fix code to a better location (To ensure we actually want the episode(s) first).

SceneNameHelper was bombing when trying to find a matching scene mapping when it didn't exist, changed Single to Find to resolve.
This commit is contained in:
Mark McDowall 2011-03-24 00:19:54 -07:00
parent dc552ec873
commit f07b305684
4 changed files with 15 additions and 8 deletions

View File

@ -14,7 +14,8 @@ public class ParserTest
{ {
[Test] [Test]
[Row("WEEDS.S03E01-06.DUAL.BDRip.XviD.AC3.-HELLYWOOD", 3, 1)] [Row("WEEDS.S03E01-06.DUAL.BDRip.XviD.AC3.-HELLYWOOD", 3, 1)]
[Row("Two.and.a.Half.Me.103.720p.HDTV.X264-DIMENSION", 1, 3)] //[Row("Two.and.a.Half.Me.103.720p.HDTV.X264-DIMENSION", 1, 3)] //This only worked because the 0 doesn't affect the results
//[Row("Two.and.a.Half.Me.113.720p.HDTV.X264-DIMENSION", 1, 13)] //This failed because the 1 matters in this case
[Row("Chuck.4x05.HDTV.XviD-LOL", 4, 5)] [Row("Chuck.4x05.HDTV.XviD-LOL", 4, 5)]
[Row("The.Girls.Next.Door.S03E06.DVDRip.XviD-WiDE", 3, 6)] [Row("The.Girls.Next.Door.S03E06.DVDRip.XviD-WiDE", 3, 6)]
[Row("Degrassi.S10E27.WS.DSR.XviD-2HD", 10, 27)] [Row("Degrassi.S10E27.WS.DSR.XviD-2HD", 10, 27)]
@ -22,6 +23,9 @@ public class ParserTest
[Row(@"z:\tv shows\modern marvels\Season 16\S16E03 - The Potato.mkv", 16, 3)] [Row(@"z:\tv shows\modern marvels\Season 16\S16E03 - The Potato.mkv", 16, 3)]
[Row(@"z:\tv shows\robot chicken\Specials\S00E16 - Dear Consumer - SD TV.avi", 0, 16)] [Row(@"z:\tv shows\robot chicken\Specials\S00E16 - Dear Consumer - SD TV.avi", 0, 16)]
[Row(@"Parenthood.2010.S02E14.HDTV.XviD-LOL", 2, 14)] [Row(@"Parenthood.2010.S02E14.HDTV.XviD-LOL", 2, 14)]
[Row(@"Hawaii Five 0 S01E19 720p WEB DL DD5 1 H 264 NT", 1, 19)]
[Row(@"The Event S01E14 A Message Back 720p WEB DL DD5 1 H264 SURFER", 1, 14)]
[Row(@"Adam Hills In Gordon St Tonight S01E07 WS PDTV XviD FUtV", 1, 7)]
public void episode_parse(string path, int season, int episode) public void episode_parse(string path, int season, int episode)
{ {
var result = Parser.ParseEpisodeInfo(path); var result = Parser.ParseEpisodeInfo(path);

View File

@ -76,7 +76,7 @@ public static class SceneNameHelper
public static int FindByName(string cleanSeriesName) public static int FindByName(string cleanSeriesName)
{ {
var map = _sceneNameMappings.Single(s => Parser.NormalizeTitle(s.Name) == cleanSeriesName); var map = _sceneNameMappings.Find(s => Parser.NormalizeTitle(s.Name) == cleanSeriesName);
if (map == null) if (map == null)
return 0; return 0;

View File

@ -18,7 +18,7 @@ internal static class Parser
private static readonly Regex[] ReportTitleRegex = new[] private static readonly Regex[] ReportTitleRegex = new[]
{ {
new Regex(@"(?<title>.+?)?\W?(?<year>\d+?)?\WS?(?<season>\d+)\w(?<episode>\d+)\W(?!\\)", RegexOptions.IgnoreCase | RegexOptions.Compiled) new Regex(@"(?<title>.+?)?\W?(?<year>\d+?)?\WS?(?<season>\d+)(?:\-|\.|[a-z])(?<episode>\d+)\W(?!\\)", RegexOptions.IgnoreCase | RegexOptions.Compiled)
}; };
private static readonly Regex NormalizeRegex = new Regex(@"((\s|^)the(\s|$))|((\s|^)and(\s|$))|[^a-z]", RegexOptions.IgnoreCase | RegexOptions.Compiled); private static readonly Regex NormalizeRegex = new Regex(@"((\s|^)the(\s|$))|((\s|^)and(\s|$))|[^a-z]", RegexOptions.IgnoreCase | RegexOptions.Compiled);

View File

@ -116,7 +116,11 @@ private void ProcessStandardItem(NzbInfoModel nzb, Indexer indexer, List<Episode
if (series == null) if (series == null)
{ {
//If we weren't able to find a title using the clean name, lets try again looking for a scene name //If we weren't able to find a title using the clean name, lets try again looking for a scene name
series = _seriesProvider.GetSeries(SceneNameHelper.FindByName(episodeParseResults[0].SeriesTitle));
var sceneId = SceneNameHelper.FindByName(episodeParseResults[0].SeriesTitle);
if (sceneId != 0)
series = _seriesProvider.GetSeries(sceneId);
if (series == null) if (series == null)
{ {
@ -127,13 +131,9 @@ private void ProcessStandardItem(NzbInfoModel nzb, Indexer indexer, List<Episode
Logger.Debug("Show is being watched: {0}", series.Title); Logger.Debug("Show is being watched: {0}", series.Title);
nzb.TitleFix = GetTitleFix(episodeParseResults, series.SeriesId); //Get the TitleFix so we can use it later
nzb.Proper = Parser.ParseProper(nzb.Title); nzb.Proper = Parser.ParseProper(nzb.Title);
nzb.Quality = Parser.ParseQuality(nzb.Title); nzb.Quality = Parser.ParseQuality(nzb.Title);
nzb.TitleFix = String.Format("{0} [{1}]", nzb.TitleFix, nzb.Quality); //Add Quality to the titleFix
//Loop through the list of the episodeParseResults to ensure that all the episodes are needed //Loop through the list of the episodeParseResults to ensure that all the episodes are needed
foreach (var episode in episodeParseResults) foreach (var episode in episodeParseResults)
{ {
@ -161,6 +161,9 @@ private void ProcessStandardItem(NzbInfoModel nzb, Indexer indexer, List<Episode
//Do we want to download the NZB Directly or Send to SABnzbd? //Do we want to download the NZB Directly or Send to SABnzbd?
nzb.TitleFix = GetTitleFix(episodeParseResults, series.SeriesId); //Get the TitleFix so we can use it later
nzb.TitleFix = String.Format("{0} [{1}]", nzb.TitleFix, nzb.Quality); //Add Quality to the titleFix
if (Convert.ToBoolean(_configProvider.GetValue("UseBlackHole", true, true))) if (Convert.ToBoolean(_configProvider.GetValue("UseBlackHole", true, true)))
{ {
var path = _configProvider.GetValue("BlackholeDirectory", String.Empty, true); var path = _configProvider.GetValue("BlackholeDirectory", String.Empty, true);