From a2fd26dcdc8088a832b5d08c1afdfe398ea53e60 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 12 Jul 2015 13:50:24 -0600 Subject: [PATCH] Minor improvements, bug fixes --- README.md | 1 + src/Jackett/Indexers/HDTorrents.cs | 20 +++++++++++++++++--- src/Jackett/Indexers/Torrentz.cs | 2 +- src/Jackett/Jackett.csproj | 4 +++- src/Jackett/ParseUtil.cs | 18 ++++++------------ src/Jackett/Server.cs | 2 ++ src/Jackett/WebContent/logos/hdtorrents.png | Bin 9574 -> 26864 bytes 7 files changed, 30 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index e98ec3a2a..8a52c5580 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,7 @@ Download in the [Releases page](https://github.com/zone117x/Jackett/releases) * [SceneAccess](https://sceneaccess.eu/login) * [ShowRSS](https://showrss.info/) * [Torrentz](https://torrentz.eu/) + * [HD-Torrents.org](https://hd-torrents.org/) ### Additional Trackers diff --git a/src/Jackett/Indexers/HDTorrents.cs b/src/Jackett/Indexers/HDTorrents.cs index 243c2a17f..25abcb125 100644 --- a/src/Jackett/Indexers/HDTorrents.cs +++ b/src/Jackett/Indexers/HDTorrents.cs @@ -164,15 +164,29 @@ namespace Jackett.Indexers release.Description = release.Title; if (0 != qRow.Find("td.mainblockcontent u").Length) - release.Imdb = ParseUtil.TryCoerceLong(qRow.Find("td.mainblockcontent u").Parent().First().Attr("href").Replace("http://www.imdb.com/title/tt", "").Replace("/", "")); + { + var imdbStr = qRow.Find("td.mainblockcontent u").Parent().First().Attr("href").Replace("http://www.imdb.com/title/tt", "").Replace("/", ""); + long imdb; + if (ParseUtil.TryCoerceLong(imdbStr, out imdb)) + { + release.Imdb = imdb; + } + } release.MinimumRatio = 1; release.MinimumSeedTime = 172800; release.MagnetUri = new Uri(DefaultUrl + "/" + qRow.Find("td.mainblockcontent").Get(3).FirstChild.GetAttribute("href")); - release.Seeders = ParseUtil.TryCoerceInt(qRow.Find("td").Get(9).FirstChild.FirstChild.InnerText); - release.Peers = ParseUtil.TryCoerceInt(qRow.Find("td").Get(10).FirstChild.FirstChild.InnerText); + int seeders, peers; + if (ParseUtil.TryCoerceInt(qRow.Find("td").Get(9).FirstChild.FirstChild.InnerText, out seeders)) + { + release.Seeders = seeders; + if (ParseUtil.TryCoerceInt(qRow.Find("td").Get(10).FirstChild.FirstChild.InnerText, out peers)) + { + release.Peers = peers + release.Seeders; + } + } string fullSize = qRow.Find("td.mainblockcontent").Get(6).InnerText; string[] sizeSplit = fullSize.Split(' '); diff --git a/src/Jackett/Indexers/Torrentz.cs b/src/Jackett/Indexers/Torrentz.cs index 85d019ad5..d822f93a8 100644 --- a/src/Jackett/Indexers/Torrentz.cs +++ b/src/Jackett/Indexers/Torrentz.cs @@ -144,7 +144,7 @@ namespace Jackett.Indexers release.InfoHash = td.hash; release.Size = td.Size; release.Seeders = td.Seeders; - release.Peers = td.Peers; + release.Peers = td.Peers + release.Seeders; release.MagnetUri = TorrentzHelper.createMagnetLink(td.hash, serie_title); releases.Add(release); } diff --git a/src/Jackett/Jackett.csproj b/src/Jackett/Jackett.csproj index 9773b7ea2..5ba2dc7e8 100644 --- a/src/Jackett/Jackett.csproj +++ b/src/Jackett/Jackett.csproj @@ -164,7 +164,9 @@ PreserveNewest - + + PreserveNewest + PreserveNewest diff --git a/src/Jackett/ParseUtil.cs b/src/Jackett/ParseUtil.cs index d7dfcdece..9b62c0027 100644 --- a/src/Jackett/ParseUtil.cs +++ b/src/Jackett/ParseUtil.cs @@ -25,25 +25,19 @@ namespace Jackett } - public static float TryCoerceFloat(string str) + public static bool TryCoerceFloat(string str, out float result) { - float val; - float.TryParse(str, NumberStyles.Any, CultureInfo.InvariantCulture, out val); - return val; + return float.TryParse(str, NumberStyles.Any, CultureInfo.InvariantCulture, out result); } - public static int TryCoerceInt(string str) + public static bool TryCoerceInt(string str, out int result) { - int val; - int.TryParse(str, NumberStyles.Any, CultureInfo.InvariantCulture, out val); - return val; + return int.TryParse(str, NumberStyles.Any, CultureInfo.InvariantCulture, out result); } - public static long TryCoerceLong(string str) + public static bool TryCoerceLong(string str, out long result) { - long val; - long.TryParse(str, NumberStyles.Any, CultureInfo.InvariantCulture, out val); - return val; + return long.TryParse(str, NumberStyles.Any, CultureInfo.InvariantCulture, out result); } } diff --git a/src/Jackett/Server.cs b/src/Jackett/Server.cs index 3931b8137..30e060746 100644 --- a/src/Jackett/Server.cs +++ b/src/Jackett/Server.cs @@ -90,7 +90,9 @@ namespace Jackett } } else + { Program.LoggerInstance.FatalException("Failed to start HTTP server. " + ex.Message, ex); + } } catch (Exception ex) { diff --git a/src/Jackett/WebContent/logos/hdtorrents.png b/src/Jackett/WebContent/logos/hdtorrents.png index 31254c372bc24c4691e84fe4b47fc0c24f0bedcf..0817e54d032ec51f534b2191f323d4c5c04f10d3 100644 GIT binary patch literal 26864 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 G9{+#VE|y6E delta 6889 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