|
|
|
@ -28,8 +28,11 @@ namespace NzbDrone.Core.MetadataSource.Goodreads
|
|
|
|
|
private static readonly Regex NoPhotoRegex = new Regex(@"/nophoto/(book|user)/",
|
|
|
|
|
RegexOptions.IgnoreCase | RegexOptions.Compiled);
|
|
|
|
|
|
|
|
|
|
private static readonly Regex SeriesRegex = new Regex(@"\((?<series>[^,]+),\s+#(?<position>[\w\d\.]+)\)$",
|
|
|
|
|
RegexOptions.Compiled);
|
|
|
|
|
private static readonly List<Regex> SeriesRegex = new List<Regex>
|
|
|
|
|
{
|
|
|
|
|
new Regex(@"\((?<series>[^,]+),\s+#(?<position>[\w\d\.]+)\)$", RegexOptions.Compiled),
|
|
|
|
|
new Regex(@"(The\s+(?<series>.+)\s+Series\s+Book\s+(?<position>[\w\d\.]+)\)$)", RegexOptions.Compiled)
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
private readonly ICachedHttpResponseService _cachedHttpClient;
|
|
|
|
|
private readonly Logger _logger;
|
|
|
|
@ -841,14 +844,16 @@ namespace NzbDrone.Core.MetadataSource.Goodreads
|
|
|
|
|
return book;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private static List<SeriesBookLink> MapSearchSeries(string title, string titleWithoutSeries)
|
|
|
|
|
public static List<SeriesBookLink> MapSearchSeries(string title, string titleWithoutSeries)
|
|
|
|
|
{
|
|
|
|
|
if (title != titleWithoutSeries &&
|
|
|
|
|
title.Substring(0, titleWithoutSeries.Length) == titleWithoutSeries)
|
|
|
|
|
{
|
|
|
|
|
var seriesText = title.Substring(titleWithoutSeries.Length);
|
|
|
|
|
|
|
|
|
|
var match = SeriesRegex.Match(seriesText);
|
|
|
|
|
foreach (var regex in SeriesRegex)
|
|
|
|
|
{
|
|
|
|
|
var match = regex.Match(seriesText);
|
|
|
|
|
|
|
|
|
|
if (match.Success)
|
|
|
|
|
{
|
|
|
|
@ -868,6 +873,7 @@ namespace NzbDrone.Core.MetadataSource.Goodreads
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return new List<SeriesBookLink>();
|
|
|
|
|
}
|
|
|
|
|