From f897591d32064c98b7b7ddd1299e29806e932528 Mon Sep 17 00:00:00 2001 From: Devin Buhl Date: Sun, 5 Mar 2017 20:14:05 -0500 Subject: [PATCH] Improve RSS parsing for movies without year --- .../Indexers/Newznab/NewznabRssParser.cs | 28 ++++++++++++------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/NzbDrone.Core/Indexers/Newznab/NewznabRssParser.cs b/src/NzbDrone.Core/Indexers/Newznab/NewznabRssParser.cs index 94569101a..c06894ec2 100644 --- a/src/NzbDrone.Core/Indexers/Newznab/NewznabRssParser.cs +++ b/src/NzbDrone.Core/Indexers/Newznab/NewznabRssParser.cs @@ -1,5 +1,8 @@ -using System; +using System; +using System.Globalization; using System.Linq; +using System.Text; +using System.Text.RegularExpressions; using System.Xml.Linq; using NzbDrone.Common.Extensions; using NzbDrone.Core.Indexers.Exceptions; @@ -54,19 +57,20 @@ namespace NzbDrone.Core.Indexers.Newznab releaseInfo = base.ProcessItem(item, releaseInfo); releaseInfo.ImdbId = GetImdbId(item); + var imdbMovieTitle = GetImdbTitle(item); + var imdbYear = GetImdbYear(item); + // Fun, lets try to add year to the releaseTitle for our foriegn friends :) - if (!releaseInfo.Title.Contains(GetImdbTitle(item) + "." + GetImdbYear(item))) + // if (!releaseInfo.Title.ContainsIgnoreCase(imdbMovieTitle + "." + imdbYear)) + var isMatch = Regex.IsMatch(releaseInfo.Title, $@"^{imdbMovieTitle}.*{imdbYear}", RegexOptions.IgnoreCase); + if (!isMatch) { - if (GetImdbYear(item) != 1900) + if (imdbYear != 1900 && imdbMovieTitle != string.Empty) { - releaseInfo.Title = releaseInfo.Title.Replace(GetImdbTitle(item), GetImdbTitle(item) + "." + GetImdbYear(item)); + // releaseInfo.Title = releaseInfo.Title.Replace(imdbMovieTitle, imdbMovieTitle + "." + imdbYear); + releaseInfo.Title = Regex.Replace(releaseInfo.Title, imdbMovieTitle, imdbMovieTitle + "." + imdbYear, RegexOptions.IgnoreCase); } } - - //if (_settings.Url == "https://newz-complex.org/www/") - //{ - // releaseInfo.Title = releaseInfo.Title.Replace(GetImdbTitle(item), GetImdbTitle(item) + "." + GetImdbYear(item)); - //} return releaseInfo; } @@ -148,7 +152,11 @@ namespace NzbDrone.Core.Indexers.Newznab var imdbTitle = TryGetNewznabAttribute(item, "imdbtitle"); if (!imdbTitle.IsNullOrWhiteSpace()) { - return imdbTitle; + return CultureInfo.CurrentCulture.TextInfo.ToTitleCase( + Parser.Parser.ReplaceGermanUmlauts( + Parser.Parser.NormalizeTitle(imdbTitle).Replace(" ", ".") + ) + ); } return string.Empty;