diff --git a/src/Jackett/Indexers/AnimeBytes.cs b/src/Jackett/Indexers/AnimeBytes.cs
index e368bb487..36f5de8bc 100644
--- a/src/Jackett/Indexers/AnimeBytes.cs
+++ b/src/Jackett/Indexers/AnimeBytes.cs
@@ -75,11 +75,11 @@ namespace Jackett.Indexers
{
var config = new ConfigurationDataBasicLoginAnimeBytes();
config.LoadValuesFromJson(configJson);
-
-
+
+
// Get the login form as we need the CSRF Token
var loginPage = await client.GetAsync(LoginUrl);
- CQ loginPageDom = await loginPage.Content.ReadAsStringAsync();
+ CQ loginPageDom = await loginPage.Content.ReadAsStringAsync();
var csrfToken = loginPageDom["input[name=\"csrf_token\"]"].Last();
// Build login form
@@ -133,7 +133,7 @@ namespace Jackett.Indexers
var configSaveData = new JObject();
configSaveData["cookies"] = cookieContainer.ToJson(SiteLink);
configSaveData["raws"] = AllowRaws;
-
+
if (OnSaveConfigurationRequested != null)
OnSaveConfigurationRequested(this, configSaveData);
@@ -198,9 +198,10 @@ namespace Jackett.Indexers
return cachedResult.Results.Select(s => (ReleaseInfo)s.Clone()).ToArray();
}
- var queryUrl = SearchUrl;
+ var queryUrl = SearchUrl;
// Only include the query bit if its required as hopefully the site caches the non query page
- if(!string.IsNullOrWhiteSpace(query.SearchTerm)){
+ if (!string.IsNullOrWhiteSpace(query.SearchTerm))
+ {
queryUrl += "&action=advanced&search_type=title&sort=time_added&way=desc&anime%5Btv_series%5D=1&searchstr=" + WebUtility.UrlEncode(query.SearchTerm);
}
@@ -229,8 +230,8 @@ namespace Jackett.Indexers
var yearStr = seriesCq.Find(".group_title strong").First().Text().Trim().Replace("]", "").Trim();
int yearIndex = yearStr.LastIndexOf("[");
if (yearIndex > -1)
- yearStr = yearStr.Substring(yearIndex+1);
-
+ yearStr = yearStr.Substring(yearIndex + 1);
+
int year = 0;
if (!int.TryParse(yearStr, out year))
year = DateTime.Now.Year;
@@ -301,7 +302,7 @@ namespace Jackett.Indexers
var downloadLink = links.Get(0);
release.Guid = new Uri(BaseUrl + "/" + downloadLink.Attributes.GetAttribute("href") + "&nh=" + Hash(title)); // Sonarr should dedupe on this url - allow a url per name.
release.Link = release.Guid;// We dont know this so try to fake based on the release year
- release.PublishDate = new DateTime(year,1,1);
+ release.PublishDate = new DateTime(year, 1, 1);
release.PublishDate = release.PublishDate.AddDays(Math.Min(DateTime.Now.DayOfYear, 365) - 1);
var infoLink = links.Get(1);
@@ -347,15 +348,15 @@ namespace Jackett.Indexers
if (size.Count() > 0)
{
var sizeParts = size.First().Text().Split(' ');
- release.Size = ReleaseInfo.GetBytes(sizeParts[1], float.Parse(sizeParts[0]));
+ release.Size = ReleaseInfo.GetBytes(sizeParts[1], ParseUtil.CoerceFloat(sizeParts[0]));
}
// Additional 5 hours per GB
release.MinimumSeedTime += (release.Size / 1000000000) * 18000;
// Peer info
- release.Seeders = int.Parse(rowCq.Find(".torrent_seeders").Text());
- release.Peers = release.Seeders + int.Parse(rowCq.Find(".torrent_leechers").Text());
+ release.Seeders = ParseUtil.CoerceInt(rowCq.Find(".torrent_seeders").Text());
+ release.Peers = release.Seeders + ParseUtil.CoerceInt(rowCq.Find(".torrent_leechers").Text());
releases.Add(release);
}
@@ -369,7 +370,7 @@ namespace Jackett.Indexers
throw ex;
}
-
+
// Add to the cache
lock (cache)
{
diff --git a/src/Jackett/Indexers/BitHdtv.cs b/src/Jackett/Indexers/BitHdtv.cs
index a3669d8de..1c394b389 100644
--- a/src/Jackett/Indexers/BitHdtv.cs
+++ b/src/Jackett/Indexers/BitHdtv.cs
@@ -142,10 +142,10 @@ namespace Jackett.Indexers
var sizeCol = qRow.Children().ElementAt(6);
var sizeVal = sizeCol.ChildNodes[0].NodeValue;
var sizeUnit = sizeCol.ChildNodes[2].NodeValue;
- release.Size = ReleaseInfo.GetBytes(sizeUnit, float.Parse(sizeVal));
+ release.Size = ReleaseInfo.GetBytes(sizeUnit, ParseUtil.CoerceFloat(sizeVal));
- release.Seeders = int.Parse(qRow.Children().ElementAt(8).Cq().Text().Trim(), NumberStyles.AllowThousands);
- release.Peers = int.Parse(qRow.Children().ElementAt(9).Cq().Text().Trim(), NumberStyles.AllowThousands) + release.Seeders;
+ release.Seeders = ParseUtil.CoerceInt(qRow.Children().ElementAt(8).Cq().Text().Trim());
+ release.Peers = ParseUtil.CoerceInt(qRow.Children().ElementAt(9).Cq().Text().Trim()) + release.Seeders;
releases.Add(release);
}
diff --git a/src/Jackett/Indexers/BitMeTV.cs b/src/Jackett/Indexers/BitMeTV.cs
index 3df784016..3a15659c6 100644
--- a/src/Jackett/Indexers/BitMeTV.cs
+++ b/src/Jackett/Indexers/BitMeTV.cs
@@ -168,12 +168,12 @@ namespace Jackett
release.Link = new Uri(BaseUrl + "/" + row.ChildElements.ElementAt(2).Cq().Children("a.index").Attr("href"));
var sizeCol = row.ChildElements.ElementAt(6);
- var sizeVal = float.Parse(sizeCol.ChildNodes[0].NodeValue);
+ var sizeVal = ParseUtil.CoerceFloat(sizeCol.ChildNodes[0].NodeValue);
var sizeUnit = sizeCol.ChildNodes[2].NodeValue;
release.Size = ReleaseInfo.GetBytes(sizeUnit, sizeVal);
- release.Seeders = int.Parse(row.ChildElements.ElementAt(8).Cq().Text(), NumberStyles.AllowThousands);
- release.Peers = int.Parse(row.ChildElements.ElementAt(9).Cq().Text(), NumberStyles.AllowThousands) + release.Seeders;
+ release.Seeders = ParseUtil.CoerceInt(row.ChildElements.ElementAt(8).Cq().Text());
+ release.Peers = ParseUtil.CoerceInt(row.ChildElements.ElementAt(9).Cq().Text()) + release.Seeders;
//if (!release.Title.ToLower().Contains(title.ToLower()))
// continue;
diff --git a/src/Jackett/Indexers/Freshon.cs b/src/Jackett/Indexers/Freshon.cs
index be4cbda66..7dc68a11c 100644
--- a/src/Jackett/Indexers/Freshon.cs
+++ b/src/Jackett/Indexers/Freshon.cs
@@ -164,11 +164,11 @@ namespace Jackett
pubDate = DateTime.ParseExact(dateString, "d-MMM-yyyy HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal).ToLocalTime();
release.PublishDate = pubDate;
- release.Seeders = int.Parse(qRow.Find("td.table_seeders").Text().Trim(), NumberStyles.AllowThousands);
- release.Peers = int.Parse(qRow.Find("td.table_leechers").Text().Trim(), NumberStyles.AllowThousands) + release.Seeders;
+ release.Seeders = ParseUtil.CoerceInt(qRow.Find("td.table_seeders").Text().Trim());
+ release.Peers = ParseUtil.CoerceInt(qRow.Find("td.table_leechers").Text().Trim()) + release.Seeders;
var sizeCol = qRow.Find("td.table_size")[0];
- var sizeVal = float.Parse(sizeCol.ChildNodes[0].NodeValue.Trim());
+ var sizeVal = ParseUtil.CoerceFloat(sizeCol.ChildNodes[0].NodeValue.Trim());
var sizeUnit = sizeCol.ChildNodes[2].NodeValue.Trim();
release.Size = ReleaseInfo.GetBytes(sizeUnit, sizeVal);
diff --git a/src/Jackett/Indexers/IPTorrents.cs b/src/Jackett/Indexers/IPTorrents.cs
index 450f29e51..53c43de0f 100644
--- a/src/Jackett/Indexers/IPTorrents.cs
+++ b/src/Jackett/Indexers/IPTorrents.cs
@@ -151,7 +151,7 @@ namespace Jackett.Indexers
var descString = qRow.Find(".t_ctime").Text();
var dateString = descString.Split('|').Last().Trim();
dateString = dateString.Split(new string[] { " by " }, StringSplitOptions.None)[0];
- var dateValue = float.Parse(dateString.Split(' ')[0]);
+ var dateValue = ParseUtil.CoerceFloat(dateString.Split(' ')[0]);
var dateUnit = dateString.Split(' ')[1];
if (dateUnit.Contains("minute"))
pubDate = DateTime.Now - TimeSpan.FromMinutes(dateValue);
@@ -173,12 +173,12 @@ namespace Jackett.Indexers
release.Link = new Uri(BaseUrl + qLink.Attr("href"));
var sizeStr = row.ChildElements.ElementAt(5).Cq().Text().Trim();
- var sizeVal = float.Parse(sizeStr.Split(' ')[0]);
+ var sizeVal = ParseUtil.CoerceFloat(sizeStr.Split(' ')[0]);
var sizeUnit = sizeStr.Split(' ')[1];
release.Size = ReleaseInfo.GetBytes(sizeUnit, sizeVal);
- release.Seeders = int.Parse(qRow.Find(".t_seeders").Text().Trim(), NumberStyles.AllowThousands);
- release.Peers = int.Parse(qRow.Find(".t_leechers").Text().Trim(), NumberStyles.AllowThousands) + release.Seeders;
+ release.Seeders = ParseUtil.CoerceInt(qRow.Find(".t_seeders").Text().Trim());
+ release.Peers = ParseUtil.CoerceInt(qRow.Find(".t_leechers").Text().Trim()) + release.Seeders;
releases.Add(release);
}
diff --git a/src/Jackett/Indexers/SceneAccess.cs b/src/Jackett/Indexers/SceneAccess.cs
index 4f0ecdb63..9de70fc16 100644
--- a/src/Jackett/Indexers/SceneAccess.cs
+++ b/src/Jackett/Indexers/SceneAccess.cs
@@ -166,7 +166,7 @@ namespace Jackett.Indexers
var sizeStr = qRow.Find(".ttr_size").Contents()[0].NodeValue;
var sizeParts = sizeStr.Split(' ');
- release.Size = ReleaseInfo.GetBytes(sizeParts[1], float.Parse(sizeParts[0], NumberStyles.Float | NumberStyles.AllowThousands));
+ release.Size = ReleaseInfo.GetBytes(sizeParts[1], ParseUtil.CoerceFloat(sizeParts[0]));
var timeStr = qRow.Find(".ttr_added").Text();
DateTime time;
@@ -175,8 +175,8 @@ namespace Jackett.Indexers
release.PublishDate = time;
}
- release.Seeders = int.Parse(qRow.Find(".ttr_seeders").Text(), NumberStyles.AllowThousands);
- release.Peers = int.Parse(qRow.Find(".ttr_leechers").Text(), NumberStyles.AllowThousands) + release.Seeders;
+ release.Seeders = ParseUtil.CoerceInt(qRow.Find(".ttr_seeders").Text());
+ release.Peers = ParseUtil.CoerceInt(qRow.Find(".ttr_leechers").Text()) + release.Seeders;
releases.Add(release);
}
diff --git a/src/Jackett/Indexers/ThePirateBay.cs b/src/Jackett/Indexers/ThePirateBay.cs
index 715aef264..1e9328673 100644
--- a/src/Jackett/Indexers/ThePirateBay.cs
+++ b/src/Jackett/Indexers/ThePirateBay.cs
@@ -28,10 +28,9 @@ namespace Jackett.Indexers
public bool IsConfigured { get; private set; }
- const string DefaultUrl = "https://thepiratebay.gd";
- const string SearchUrl = "/s/?q=\"{0}\"&category=205&page=0&orderby=99";
- const string SearchUrl2 = "/s/?q=\"{0}\"&category=208&page=0&orderby=99";
- const string SwitchSingleViewUrl = "/switchview.php?view=s";
+ const string DefaultUrl = "https://thepiratebay.mn";
+ const string SearchUrl = "/search/{0}/0/99/208";
+ const string SearchUrl2 = "/search/{0}/0/99/205";
string BaseUrl;
@@ -108,25 +107,19 @@ namespace Jackett.Indexers
foreach (var episodeSearchUrl in searchUrls)
{
- var message = new HttpRequestMessage
- {
- Method = HttpMethod.Get,
- RequestUri = new Uri(baseUrl + SwitchSingleViewUrl)
- };
- message.Headers.Referrer = new Uri(episodeSearchUrl);
string results;
if (Program.IsWindows)
{
- var response = await client.SendAsync(message);
- results = await response.Content.ReadAsStringAsync();
+ results = await client.GetStringAsync(episodeSearchUrl);
}
else
{
- var response = await CurlHelper.GetAsync(baseUrl + SwitchSingleViewUrl, null, episodeSearchUrl);
+ var response = await CurlHelper.GetAsync(episodeSearchUrl, null, episodeSearchUrl);
results = Encoding.UTF8.GetString(response.Content);
}
+
try
{
CQ dom = results;
@@ -136,7 +129,8 @@ namespace Jackett.Indexers
{
var release = new ReleaseInfo();
- CQ qLink = row.ChildElements.ElementAt(1).Cq().Children("a").First();
+ CQ qRow = row.Cq();
+ CQ qLink = qRow.Find(".detName > .detLink").First();
release.MinimumRatio = 1;
release.MinimumSeedTime = 172800;
@@ -145,13 +139,27 @@ namespace Jackett.Indexers
release.Comments = new Uri(baseUrl + "/" + qLink.Attr("href").TrimStart('/'));
release.Guid = release.Comments;
- var timeString = row.ChildElements.ElementAt(2).Cq().Text();
+ var downloadCol = row.ChildElements.ElementAt(1).Cq().Children("a");
+ release.MagnetUri = new Uri(downloadCol.Attr("href"));
+ release.InfoHash = release.MagnetUri.ToString().Split(':')[3].Split('&')[0];
+
+ var descString = qRow.Find(".detDesc").Text().Trim();
+ var descParts = descString.Split(',');
+
+ var timeString = descParts[0].Split(' ')[1];
+
if (timeString.Contains("mins ago"))
- release.PublishDate = (DateTime.Now - TimeSpan.FromMinutes(int.Parse(timeString.Split(' ')[0])));
+ {
+ release.PublishDate = (DateTime.Now - TimeSpan.FromMinutes(ParseUtil.CoerceInt(timeString.Split(' ')[0])));
+ }
else if (timeString.Contains("Today"))
+ {
release.PublishDate = (DateTime.UtcNow - TimeSpan.FromHours(2) - TimeSpan.Parse(timeString.Split(' ')[1])).ToLocalTime();
+ }
else if (timeString.Contains("Y-day"))
+ {
release.PublishDate = (DateTime.UtcNow - TimeSpan.FromHours(26) - TimeSpan.Parse(timeString.Split(' ')[1])).ToLocalTime();
+ }
else if (timeString.Contains(':'))
{
var utc = DateTime.ParseExact(timeString, "MM-dd HH:mm", CultureInfo.InvariantCulture) - TimeSpan.FromHours(2);
@@ -163,17 +171,13 @@ namespace Jackett.Indexers
release.PublishDate = DateTime.SpecifyKind(utc, DateTimeKind.Utc).ToLocalTime();
}
- var downloadCol = row.ChildElements.ElementAt(3).Cq().Find("a");
- release.MagnetUri = new Uri(downloadCol.Attr("href"));
- release.InfoHash = release.MagnetUri.ToString().Split(':')[3].Split('&')[0];
-
- var sizeString = row.ChildElements.ElementAt(4).Cq().Text().Split(' ');
- var sizeVal = float.Parse(sizeString[0], CultureInfo.InvariantCulture);
- var sizeUnit = sizeString[1];
+ var sizeParts = descParts[1].Split(new char[] { ' ', ' ' }, StringSplitOptions.RemoveEmptyEntries);
+ var sizeVal = ParseUtil.CoerceFloat(sizeParts[1]);
+ var sizeUnit = sizeParts[2];
release.Size = ReleaseInfo.GetBytes(sizeUnit, sizeVal);
- release.Seeders = int.Parse(row.ChildElements.ElementAt(5).Cq().Text());
- release.Peers = int.Parse(row.ChildElements.ElementAt(6).Cq().Text()) + release.Seeders;
+ release.Seeders = ParseUtil.CoerceInt(row.ChildElements.ElementAt(2).Cq().Text());
+ release.Peers = ParseUtil.CoerceInt(row.ChildElements.ElementAt(3).Cq().Text()) + release.Seeders;
releases.Add(release);
}
diff --git a/src/Jackett/Indexers/TorrentDay.cs b/src/Jackett/Indexers/TorrentDay.cs
index d53d79df9..3ebf9a1ff 100644
--- a/src/Jackett/Indexers/TorrentDay.cs
+++ b/src/Jackett/Indexers/TorrentDay.cs
@@ -150,11 +150,11 @@ namespace Jackett.Indexers
var sizeStr = qRow.Find(".sizeInfo").Text().Trim();
var sizeParts = sizeStr.Split(' ');
- release.Size = ReleaseInfo.GetBytes(sizeParts[1], float.Parse(sizeParts[0]));
+ release.Size = ReleaseInfo.GetBytes(sizeParts[1], ParseUtil.CoerceFloat(sizeParts[0]));
- var dateStr = qRow.Find(".ulInfo").Text().Trim();
+ var dateStr = qRow.Find(".ulInfo").Text().Split('|').Last().Trim();
var dateParts = dateStr.Split(' ');
- var dateValue = int.Parse(dateParts[1]);
+ var dateValue = ParseUtil.CoerceInt(dateParts[0]);
TimeSpan ts = TimeSpan.Zero;
if (dateStr.Contains("sec"))
ts = TimeSpan.FromSeconds(dateValue);
@@ -172,8 +172,8 @@ namespace Jackett.Indexers
ts = TimeSpan.FromDays(dateValue * 365);
release.PublishDate = DateTime.Now - ts;
- release.Seeders = int.Parse(qRow.Find(".seedersInfo").Text(), NumberStyles.AllowThousands);
- release.Peers = int.Parse(qRow.Find(".leechersInfo").Text(), NumberStyles.AllowThousands) + release.Seeders;
+ release.Seeders = ParseUtil.CoerceInt(qRow.Find(".seedersInfo").Text());
+ release.Peers = ParseUtil.CoerceInt(qRow.Find(".leechersInfo").Text()) + release.Seeders;
releases.Add(release);
}
diff --git a/src/Jackett/Indexers/TorrentLeech.cs b/src/Jackett/Indexers/TorrentLeech.cs
index 2e8610abf..b4a29f160 100644
--- a/src/Jackett/Indexers/TorrentLeech.cs
+++ b/src/Jackett/Indexers/TorrentLeech.cs
@@ -146,10 +146,10 @@ namespace Jackett.Indexers
release.PublishDate = DateTime.ParseExact(dateString, "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);
var sizeStringParts = qRow.Children().ElementAt(4).InnerText.Split(' ');
- release.Size = ReleaseInfo.GetBytes(sizeStringParts[1], float.Parse(sizeStringParts[0]));
+ release.Size = ReleaseInfo.GetBytes(sizeStringParts[1], ParseUtil.CoerceFloat(sizeStringParts[0]));
- release.Seeders = int.Parse(qRow.Find(".seeders").Text());
- release.Peers = release.Seeders + int.Parse(qRow.Find(".leechers").Text());
+ release.Seeders = ParseUtil.CoerceInt(qRow.Find(".seeders").Text());
+ release.Peers = release.Seeders + ParseUtil.CoerceInt(qRow.Find(".leechers").Text());
releases.Add(release);
}
diff --git a/src/Jackett/Indexers/TorrentShack.cs b/src/Jackett/Indexers/TorrentShack.cs
index 74366b36a..7945a77c4 100644
--- a/src/Jackett/Indexers/TorrentShack.cs
+++ b/src/Jackett/Indexers/TorrentShack.cs
@@ -139,7 +139,7 @@ namespace Jackett.Indexers
else
{
var dateParts = dateStr.Split(' ');
- var dateValue = int.Parse(dateParts[0]);
+ var dateValue = ParseUtil.CoerceInt(dateParts[0]);
TimeSpan ts = TimeSpan.Zero;
if (dateStr.Contains("sec"))
ts = TimeSpan.FromSeconds(dateValue);
@@ -160,9 +160,9 @@ namespace Jackett.Indexers
var sizeStr = qRow.Find(".size")[0].ChildNodes[0].NodeValue.Trim();
var sizeParts = sizeStr.Split(' ');
- release.Size = ReleaseInfo.GetBytes(sizeParts[1], float.Parse(sizeParts[0], NumberStyles.AllowThousands));
- release.Seeders = int.Parse(qRow.Children().ElementAt(6).InnerText.Trim(), NumberStyles.AllowThousands);
- release.Peers = int.Parse(qRow.Children().ElementAt(7).InnerText.Trim(), NumberStyles.AllowThousands) + release.Seeders;
+ release.Size = ReleaseInfo.GetBytes(sizeParts[1], ParseUtil.CoerceFloat(sizeParts[0]));
+ release.Seeders = ParseUtil.CoerceInt(qRow.Children().ElementAt(6).InnerText.Trim());
+ release.Peers = ParseUtil.CoerceInt(qRow.Children().ElementAt(7).InnerText.Trim()) + release.Seeders;
releases.Add(release);
}
diff --git a/src/Jackett/Indexers/Torrentz.cs b/src/Jackett/Indexers/Torrentz.cs
index 78b60edf1..4fcb136fa 100644
--- a/src/Jackett/Indexers/Torrentz.cs
+++ b/src/Jackett/Indexers/Torrentz.cs
@@ -232,13 +232,13 @@ namespace Jackett.Indexers
switch (counter)
{
case 0:
- this.Size = ReleaseInfo.BytesFromMB(long.Parse(val.Substring(0, val.IndexOf(" ") - 1)));
+ this.Size = ReleaseInfo.BytesFromMB(ParseUtil.CoerceLong(val.Substring(0, val.IndexOf(" ") - 1)));
break;
case 1:
- this.Seeders = int.Parse(val.Contains(",") ? val.Remove(val.IndexOf(","), 1) : val);
+ this.Seeders = ParseUtil.CoerceInt(val.Contains(",") ? val.Remove(val.IndexOf(","), 1) : val);
break;
case 2:
- this.Peers = int.Parse(val.Contains(",") ? val.Remove(val.IndexOf(","), 1) : val);
+ this.Peers = ParseUtil.CoerceInt(val.Contains(",") ? val.Remove(val.IndexOf(","), 1) : val);
break;
case 3:
this.hash = val;
diff --git a/src/Jackett/Jackett.csproj b/src/Jackett/Jackett.csproj
index dd29577c3..d99942c88 100644
--- a/src/Jackett/Jackett.csproj
+++ b/src/Jackett/Jackett.csproj
@@ -114,6 +114,7 @@
Main.cs
+
@@ -163,7 +164,9 @@
PreserveNewest
-
+
+ PreserveNewest
+
PreserveNewest
@@ -237,7 +240,9 @@
PreserveNewest
-
+
+ PreserveNewest
+
PreserveNewest
diff --git a/src/Jackett/ParseUtil.cs b/src/Jackett/ParseUtil.cs
new file mode 100644
index 000000000..7eb7b8fcf
--- /dev/null
+++ b/src/Jackett/ParseUtil.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Jackett
+{
+ public static class ParseUtil
+ {
+ public static float CoerceFloat(string str)
+ {
+ return float.Parse(str, NumberStyles.Any, CultureInfo.InvariantCulture);
+ }
+
+ public static int CoerceInt(string str)
+ {
+ return int.Parse(str, NumberStyles.Any, CultureInfo.InvariantCulture);
+ }
+
+ public static long CoerceLong(string str)
+ {
+ return long.Parse(str, NumberStyles.Any, CultureInfo.InvariantCulture);
+ }
+
+ }
+}
diff --git a/src/Jackett/SonarApi.cs b/src/Jackett/SonarApi.cs
index c5274caaa..6b33622d4 100644
--- a/src/Jackett/SonarApi.cs
+++ b/src/Jackett/SonarApi.cs
@@ -129,9 +129,9 @@ namespace Jackett
{
var config = new ConfigurationSonarr();
config.LoadValuesFromJson(configJson);
- await ReloadNameMappings(config.Host.Value, int.Parse(config.Port.Value), config.ApiKey.Value);
+ await ReloadNameMappings(config.Host.Value, ParseUtil.CoerceInt(config.Port.Value), config.ApiKey.Value);
Host = "http://" + new Uri(config.Host.Value).Host;
- Port = int.Parse(config.Port.Value);
+ Port = ParseUtil.CoerceInt(config.Port.Value);
ApiKey = config.ApiKey.Value;
SaveSettings();
}
diff --git a/src/Jackett/TorznabQuery.cs b/src/Jackett/TorznabQuery.cs
index e2f2a20f9..06a5651d9 100644
--- a/src/Jackett/TorznabQuery.cs
+++ b/src/Jackett/TorznabQuery.cs
@@ -34,7 +34,7 @@ namespace Jackett
else if (string.IsNullOrEmpty(Episode))
episodeString = string.Format("S{0:00}", Season);
else
- episodeString = string.Format("S{0:00}E{1:00}", Season, int.Parse(Episode));
+ episodeString = string.Format("S{0:00}E{1:00}", Season, ParseUtil.CoerceInt(Episode));
return episodeString;
}
@@ -53,16 +53,16 @@ namespace Jackett
if (query["extended"] != null)
{
- q.Extended = int.Parse(query["extended"]);
+ q.Extended = ParseUtil.CoerceInt(query["extended"]);
}
q.ApiKey = query["apikey"];
if (query["limit"] != null)
{
- q.Limit = int.Parse(query["limit"]);
+ q.Limit = ParseUtil.CoerceInt(query["limit"]);
}
if (query["offset"] != null)
{
- q.Offset = int.Parse(query["offset"]);
+ q.Offset = ParseUtil.CoerceInt(query["offset"]);
}
int temp;