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