mirror of
https://github.com/Prowlarr/Prowlarr.git
synced 2025-04-24 05:47:22 -04:00
Add tests and ignore 0 in GetFullImdbId
This commit is contained in:
parent
0fe54ed36a
commit
81b1c0e445
17 changed files with 44 additions and 27 deletions
|
@ -63,5 +63,22 @@ namespace NzbDrone.Core.Test.ParserTests
|
|||
{
|
||||
ParseUtil.GetLongFromString(original).Should().Be(parsedInt);
|
||||
}
|
||||
|
||||
[TestCase("tt0183790", "tt0183790")]
|
||||
[TestCase("0183790", "tt0183790")]
|
||||
[TestCase("183790", "tt0183790")]
|
||||
[TestCase("tt10001870", "tt10001870")]
|
||||
[TestCase("10001870", "tt10001870")]
|
||||
[TestCase("tt", null)]
|
||||
[TestCase("tt0", null)]
|
||||
[TestCase("abc", null)]
|
||||
[TestCase("abc0", null)]
|
||||
[TestCase("0", null)]
|
||||
[TestCase("", null)]
|
||||
[TestCase(null, null)]
|
||||
public void should_parse_full_imdb_id_from_string(string input, string expected)
|
||||
{
|
||||
ParseUtil.GetFullImdbId(input).Should().Be(expected);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -57,7 +57,7 @@ namespace NzbDrone.Core.IndexerSearch
|
|||
{
|
||||
var searchSpec = Get<MovieSearchCriteria>(request, indexerIds, interactiveSearch);
|
||||
|
||||
var imdbId = ParseUtil.GetImdbID(request.imdbid);
|
||||
var imdbId = ParseUtil.GetImdbId(request.imdbid);
|
||||
|
||||
searchSpec.ImdbId = imdbId?.ToString("D7");
|
||||
searchSpec.TmdbId = request.tmdbid;
|
||||
|
@ -87,7 +87,7 @@ namespace NzbDrone.Core.IndexerSearch
|
|||
{
|
||||
var searchSpec = Get<TvSearchCriteria>(request, indexerIds, interactiveSearch);
|
||||
|
||||
var imdbId = ParseUtil.GetImdbID(request.imdbid);
|
||||
var imdbId = ParseUtil.GetImdbId(request.imdbid);
|
||||
|
||||
searchSpec.ImdbId = imdbId?.ToString("D7");
|
||||
searchSpec.Season = request.season;
|
||||
|
|
|
@ -246,7 +246,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
|
||||
// TODO: TMDb is also available
|
||||
var qImdb = row.QuerySelector("a[href^=\"https://www.imdb.com\"]");
|
||||
var imdb = qImdb != null ? ParseUtil.GetImdbID(qImdb.GetAttribute("href").Split('/').Last()) : null;
|
||||
var imdb = qImdb != null ? ParseUtil.GetImdbId(qImdb.GetAttribute("href").Split('/').Last()) : null;
|
||||
|
||||
var release = new TorrentInfo
|
||||
{
|
||||
|
|
|
@ -75,7 +75,7 @@ namespace NzbDrone.Core.Indexers.Definitions.Avistaz
|
|||
|
||||
if (row.MovieTvinfo != null)
|
||||
{
|
||||
release.ImdbId = ParseUtil.GetImdbID(row.MovieTvinfo.Imdb).GetValueOrDefault();
|
||||
release.ImdbId = ParseUtil.GetImdbId(row.MovieTvinfo.Imdb).GetValueOrDefault();
|
||||
release.TmdbId = row.MovieTvinfo.Tmdb.IsNullOrWhiteSpace() ? 0 : ParseUtil.TryCoerceInt(row.MovieTvinfo.Tmdb, out var tmdbResult) ? tmdbResult : 0;
|
||||
release.TvdbId = row.MovieTvinfo.Tvdb.IsNullOrWhiteSpace() ? 0 : ParseUtil.TryCoerceInt(row.MovieTvinfo.Tvdb, out var tvdbResult) ? tvdbResult : 0;
|
||||
}
|
||||
|
|
|
@ -209,7 +209,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
|
||||
// BHD can return crazy values for tmdb
|
||||
var tmdbId = row.TmdbId.IsNullOrWhiteSpace() ? 0 : ParseUtil.TryCoerceInt(row.TmdbId.Split("/")[1], out var tmdbResult) ? tmdbResult : 0;
|
||||
var imdbId = ParseUtil.GetImdbID(row.ImdbId).GetValueOrDefault();
|
||||
var imdbId = ParseUtil.GetImdbId(row.ImdbId).GetValueOrDefault();
|
||||
|
||||
var release = new TorrentInfo
|
||||
{
|
||||
|
|
|
@ -192,7 +192,7 @@ public class GreatPosterWallParser : GazelleParser
|
|||
MinimumSeedTime = 172800 // 48 hours
|
||||
};
|
||||
|
||||
var imdbId = ParseUtil.GetImdbID(result.ImdbId);
|
||||
var imdbId = ParseUtil.GetImdbId(result.ImdbId);
|
||||
if (imdbId != null)
|
||||
{
|
||||
release.ImdbId = (int)imdbId;
|
||||
|
|
|
@ -20,7 +20,7 @@ namespace NzbDrone.Core.Indexers.Definitions.HDBits
|
|||
{
|
||||
var pageableRequests = new IndexerPageableRequestChain();
|
||||
var query = new TorrentQuery();
|
||||
var imdbId = ParseUtil.GetImdbID(searchCriteria.ImdbId).GetValueOrDefault(0);
|
||||
var imdbId = ParseUtil.GetImdbId(searchCriteria.ImdbId).GetValueOrDefault(0);
|
||||
|
||||
if (searchCriteria.Categories?.Length > 0)
|
||||
{
|
||||
|
@ -78,7 +78,7 @@ namespace NzbDrone.Core.Indexers.Definitions.HDBits
|
|||
var pageableRequests = new IndexerPageableRequestChain();
|
||||
var query = new TorrentQuery();
|
||||
var tvdbId = searchCriteria.TvdbId.GetValueOrDefault(0);
|
||||
var imdbId = ParseUtil.GetImdbID(searchCriteria.ImdbId).GetValueOrDefault(0);
|
||||
var imdbId = ParseUtil.GetImdbId(searchCriteria.ImdbId).GetValueOrDefault(0);
|
||||
|
||||
if (searchCriteria.Categories?.Length > 0)
|
||||
{
|
||||
|
|
|
@ -282,7 +282,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
var imdbLink = row.QuerySelector("td:nth-child(2) a[href*=imdb]");
|
||||
if (imdbLink != null)
|
||||
{
|
||||
release.ImdbId = ParseUtil.GetImdbID(imdbLink.GetAttribute("href").Split('/').Last()).GetValueOrDefault();
|
||||
release.ImdbId = ParseUtil.GetImdbId(imdbLink.GetAttribute("href").Split('/').Last()).GetValueOrDefault();
|
||||
}
|
||||
|
||||
//"July 11, 2015, 13:34:09", "Today|Yesterday at 20:04:23"
|
||||
|
|
|
@ -328,7 +328,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
}
|
||||
|
||||
var imdbLink = row.QuerySelector("a[href*=\"www.imdb.com/title/\"]")?.GetAttribute("href");
|
||||
var imdb = !string.IsNullOrWhiteSpace(imdbLink) ? ParseUtil.GetImdbID(imdbLink) : null;
|
||||
var imdb = !string.IsNullOrWhiteSpace(imdbLink) ? ParseUtil.GetImdbId(imdbLink) : null;
|
||||
|
||||
var flags = new HashSet<IndexerFlag>();
|
||||
|
||||
|
|
|
@ -313,7 +313,7 @@ public class NorBitsParser : IParseIndexerResponse
|
|||
}
|
||||
|
||||
var imdbLink = row.QuerySelector("a[href*=\"imdb.com/title/tt\"]")?.GetAttribute("href");
|
||||
release.ImdbId = ParseUtil.GetImdbID(imdbLink) ?? 0;
|
||||
release.ImdbId = ParseUtil.GetImdbId(imdbLink) ?? 0;
|
||||
|
||||
if (row.QuerySelector("img[title=\"100% freeleech\"]") != null)
|
||||
{
|
||||
|
|
|
@ -180,7 +180,7 @@ public class PixelHDParser : IParseIndexerResponse
|
|||
var groupName = group.QuerySelector("strong:has(a[title=\"View Torrent\"])")?.TextContent.Replace(" ]", "]");
|
||||
|
||||
var imdbLink = group.QuerySelector("a[href*=\"imdb.com/title/tt\"]")?.GetAttribute("href");
|
||||
var imdbId = ParseUtil.GetImdbID(imdbLink) ?? 0;
|
||||
var imdbId = ParseUtil.GetImdbId(imdbLink) ?? 0;
|
||||
|
||||
var rows = group.QuerySelectorAll("tr.group_torrent:has(a[href^=\"torrents.php?id=\"])");
|
||||
foreach (var row in rows)
|
||||
|
|
|
@ -286,7 +286,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
var category = row.QuerySelector(".br_type > a").GetAttribute("href").Replace("browse.php?cat=", string.Empty);
|
||||
|
||||
var qImdb = row.QuerySelector("a[href*=\"www.imdb.com/\"]");
|
||||
var imdb = qImdb != null ? ParseUtil.GetImdbID(qImdb.GetAttribute("href").Split('/').Last()) : null;
|
||||
var imdb = qImdb != null ? ParseUtil.GetImdbId(qImdb.GetAttribute("href").Split('/').Last()) : null;
|
||||
|
||||
var release = new TorrentInfo
|
||||
{
|
||||
|
|
|
@ -213,7 +213,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
Files = item.Value<int>("numfiles"),
|
||||
Seeders = item.Value<int>("seeders"),
|
||||
Peers = item.Value<int>("leechers") + item.Value<int>("seeders"),
|
||||
ImdbId = ParseUtil.GetImdbID(item.Value<string>("imdbid")) ?? 0,
|
||||
ImdbId = ParseUtil.GetImdbId(item.Value<string>("imdbid")) ?? 0,
|
||||
MinimumRatio = 1,
|
||||
MinimumSeedTime = 0,
|
||||
DownloadVolumeFactor = dlVolumeFactor,
|
||||
|
|
|
@ -262,7 +262,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
Title = CleanTitle(torrent.Name),
|
||||
Description = torrent.ShortDescription,
|
||||
Size = torrent.Size,
|
||||
ImdbId = ParseUtil.GetImdbID(torrent.ImdbId).GetValueOrDefault(),
|
||||
ImdbId = ParseUtil.GetImdbId(torrent.ImdbId).GetValueOrDefault(),
|
||||
DownloadUrl = $"{_settings.BaseUrl}api/torrent/{torrent.Id}/download",
|
||||
PosterUrl = torrent.Poster,
|
||||
InfoUrl = torrent.Url,
|
||||
|
|
|
@ -244,7 +244,7 @@ namespace NzbDrone.Core.Indexers.Definitions
|
|||
var downloadMultiplier = (double?)row["download-multiplier"] ?? 1;
|
||||
var link = new Uri(_settings.BaseUrl + "download.php/" + torrentId + "/" + torrentId + ".torrent");
|
||||
var publishDate = DateTimeUtil.UnixTimestampToDateTime((long)row.ctime).ToLocalTime();
|
||||
var imdb = ParseUtil.GetImdbID(imdbId) ?? 0;
|
||||
var imdb = ParseUtil.GetImdbId(imdbId) ?? 0;
|
||||
|
||||
var release = new TorrentInfo
|
||||
{
|
||||
|
|
|
@ -60,7 +60,7 @@ namespace NzbDrone.Core.Indexers.Definitions.UNIT3D
|
|||
Files = row.Attributes.Files,
|
||||
Grabs = row.Attributes.Grabs,
|
||||
Seeders = row.Attributes.Seeders,
|
||||
ImdbId = ParseUtil.GetImdbID(row.Attributes.ImdbId).GetValueOrDefault(),
|
||||
ImdbId = ParseUtil.GetImdbId(row.Attributes.ImdbId).GetValueOrDefault(),
|
||||
TmdbId = row.Attributes.TmdbId.IsNullOrWhiteSpace() ? 0 : ParseUtil.CoerceInt(row.Attributes.TmdbId),
|
||||
TvdbId = row.Attributes.TvdbId.IsNullOrWhiteSpace() ? 0 : ParseUtil.CoerceInt(row.Attributes.TvdbId),
|
||||
Peers = row.Attributes.Leechers + row.Attributes.Seeders,
|
||||
|
|
|
@ -8,7 +8,7 @@ namespace NzbDrone.Core.Parser
|
|||
{
|
||||
public static class ParseUtil
|
||||
{
|
||||
private static readonly Regex ImdbId = new Regex(@"^(?:tt)?(\d{1,8})$", RegexOptions.Compiled);
|
||||
private static readonly Regex ImdbIdRegex = new (@"^(?:tt)?(\d{1,8})$", RegexOptions.Compiled);
|
||||
|
||||
public static string NormalizeMultiSpaces(string s) =>
|
||||
new Regex(@"\s+").Replace(s.Trim(), " ");
|
||||
|
@ -85,14 +85,15 @@ namespace NzbDrone.Core.Parser
|
|||
return CoerceLong(extractedLong);
|
||||
}
|
||||
|
||||
public static int? GetImdbID(string imdbstr)
|
||||
public static int? GetImdbId(string value)
|
||||
{
|
||||
if (imdbstr == null)
|
||||
if (value == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var match = ImdbId.Match(imdbstr);
|
||||
var match = ImdbIdRegex.Match(value);
|
||||
|
||||
if (!match.Success)
|
||||
{
|
||||
return null;
|
||||
|
@ -101,17 +102,16 @@ namespace NzbDrone.Core.Parser
|
|||
return int.Parse(match.Groups[1].Value, NumberStyles.Any, CultureInfo.InvariantCulture);
|
||||
}
|
||||
|
||||
public static string GetFullImdbId(string imdbstr)
|
||||
public static string GetFullImdbId(string value)
|
||||
{
|
||||
var imdbid = GetImdbID(imdbstr);
|
||||
if (imdbid == null)
|
||||
var imdbId = GetImdbId(value);
|
||||
|
||||
if (imdbId is null or 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
var imdbLen = ((int)imdbid > 9999999) ? "D8" : "D7";
|
||||
|
||||
return "tt" + ((int)imdbid).ToString(imdbLen);
|
||||
return $"tt{imdbId.GetValueOrDefault():D7}";
|
||||
}
|
||||
|
||||
public static string GetArgumentFromQueryString(string url, string argument)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue