mirror of https://github.com/Jackett/Jackett
cardigann: improve GetLongFromString and parse fields (#14094)
This commit is contained in:
parent
f7e6884720
commit
a99093386a
|
@ -2068,45 +2068,27 @@ namespace Jackett.Common.Indexers
|
|||
value = release.Imdb.ToString();
|
||||
break;
|
||||
case "tmdbid":
|
||||
var tmdbIdRegex = new Regex(@"(\d+)", RegexOptions.Compiled);
|
||||
var tmdbIdMatch = tmdbIdRegex.Match(value);
|
||||
var tmdbId = tmdbIdMatch.Groups[1].Value;
|
||||
release.TMDb = ParseUtil.CoerceLong(tmdbId);
|
||||
release.TMDb = ParseUtil.GetLongFromString(value);
|
||||
value = release.TMDb.ToString();
|
||||
break;
|
||||
case "rageid":
|
||||
var rageIdRegex = new Regex(@"(\d+)", RegexOptions.Compiled);
|
||||
var rageIdMatch = rageIdRegex.Match(value);
|
||||
var rageId = rageIdMatch.Groups[1].Value;
|
||||
release.RageID = ParseUtil.CoerceLong(rageId);
|
||||
release.RageID = ParseUtil.GetLongFromString(value);
|
||||
value = release.RageID.ToString();
|
||||
break;
|
||||
case "tvdbid":
|
||||
var tvdbIdRegex = new Regex(@"(\d+)", RegexOptions.Compiled);
|
||||
var tvdbIdMatch = tvdbIdRegex.Match(value);
|
||||
var tvdbId = tvdbIdMatch.Groups[1].Value;
|
||||
release.TVDBId = ParseUtil.CoerceLong(tvdbId);
|
||||
release.TVDBId = ParseUtil.GetLongFromString(value);
|
||||
value = release.TVDBId.ToString();
|
||||
break;
|
||||
case "tvmazeid":
|
||||
var tvMazeIdRegex = new Regex(@"(\d+)", RegexOptions.Compiled);
|
||||
var tvMazeIdMatch = tvMazeIdRegex.Match(value);
|
||||
var tvMazeId = tvMazeIdMatch.Groups[1].Value;
|
||||
release.TVMazeId = ParseUtil.CoerceLong(tvMazeId);
|
||||
release.TVMazeId = ParseUtil.GetLongFromString(value);
|
||||
value = release.TVMazeId.ToString();
|
||||
break;
|
||||
case "traktid":
|
||||
var traktIdRegex = new Regex(@"(\d+)", RegexOptions.Compiled);
|
||||
var traktIdMatch = traktIdRegex.Match(value);
|
||||
var traktId = traktIdMatch.Groups[1].Value;
|
||||
release.TraktId = ParseUtil.CoerceLong(traktId);
|
||||
release.TraktId = ParseUtil.GetLongFromString(value);
|
||||
value = release.TraktId.ToString();
|
||||
break;
|
||||
case "doubanid":
|
||||
var doubanIdRegex = new Regex(@"(\d+)", RegexOptions.Compiled);
|
||||
var doubanIdMatch = doubanIdRegex.Match(value);
|
||||
var doubanId = doubanIdMatch.Groups[1].Value;
|
||||
release.DoubanId = ParseUtil.CoerceLong(doubanId);
|
||||
release.DoubanId = ParseUtil.GetLongFromString(value);
|
||||
value = release.DoubanId.ToString();
|
||||
break;
|
||||
case "genre":
|
||||
|
|
|
@ -75,14 +75,25 @@ namespace Jackett.Common.Utils
|
|||
|
||||
public static long? GetLongFromString(string str)
|
||||
{
|
||||
if (str == null)
|
||||
if (string.IsNullOrWhiteSpace(str))
|
||||
return null;
|
||||
var IdRegEx = new Regex(@"(\d+)", RegexOptions.Compiled);
|
||||
var IdMatch = IdRegEx.Match(str);
|
||||
if (!IdMatch.Success)
|
||||
return null;
|
||||
var Id = IdMatch.Groups[1].Value;
|
||||
return CoerceLong(Id);
|
||||
|
||||
var extractedLong = string.Empty;
|
||||
|
||||
foreach (var c in str)
|
||||
{
|
||||
if (c < '0' || c > '9')
|
||||
{
|
||||
if (extractedLong.Length > 0)
|
||||
break;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
extractedLong += c;
|
||||
}
|
||||
|
||||
return CoerceLong(extractedLong);
|
||||
}
|
||||
|
||||
public static int? GetImdbID(string imdbstr)
|
||||
|
|
|
@ -89,6 +89,7 @@ namespace Jackett.Test.Common.Utils
|
|||
[TestCase("1", 1)]
|
||||
[TestCase("1000 grabs", 1000)]
|
||||
[TestCase("asdf123asdf", 123)]
|
||||
[TestCase("asdf123asdf456asdf", 123)]
|
||||
public void should_parse_long_from_string(string original, long? parsedInt)
|
||||
{
|
||||
ParseUtil.GetLongFromString(original).Should().Be(parsedInt);
|
||||
|
|
Loading…
Reference in New Issue