From 55818f9cb6f9592027018b8c9afef4de9e2622a1 Mon Sep 17 00:00:00 2001 From: kaso17 Date: Tue, 6 Sep 2016 13:50:16 +0200 Subject: [PATCH] Add Ghost City tracker (#488) --- README.md | 1 + src/Jackett/Content/logos/ghostcity.png | Bin 0 -> 13192 bytes src/Jackett/Indexers/GhostCity.cs | 179 ++++++++++++++++++++++++ src/Jackett/Jackett.csproj | 4 + 4 files changed, 184 insertions(+) create mode 100644 src/Jackett/Content/logos/ghostcity.png create mode 100644 src/Jackett/Indexers/GhostCity.cs diff --git a/README.md b/README.md index be40a0cd5..7cd35eeaa 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,7 @@ Developer note: The software implements the [Torznab](https://github.com/Sonarr/ * FileList * Freshon * Fuzer + * Ghost City * HD-Space * HD-Torrents * Hebits diff --git a/src/Jackett/Content/logos/ghostcity.png b/src/Jackett/Content/logos/ghostcity.png new file mode 100644 index 0000000000000000000000000000000000000000..fb6915cd4f8f6fb59d0dd43b2489f2eb58eeb9eb GIT binary patch literal 13192 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 ApplyConfiguration(JToken configJson) + { + configData.LoadValuesFromJson(configJson); + + var pairs = new Dictionary { + { "username", configData.Username.Value }, + { "password", configData.Password.Value } + }; + + var result1 = await RequestLoginAndFollowRedirect(LoginUrl, pairs, null, true, null, SiteLink); + CQ result1Dom = result1.Content; + var link = result1Dom[".trow2 a"].First(); + var result2 = await RequestStringWithCookies(link.Attr("href"), result1.Cookies); + CQ result2Dom = result2.Content; + + await ConfigureIfOK(result1.Cookies, result2.Content.Contains("/logout.php"), () => + { + var errorMessage = "Login failed."; + throw new ExceptionWithConfigData(errorMessage, configData); + }); + return IndexerConfigurationStatus.RequiresTesting; + } + + public async Task> PerformQuery(TorznabQuery query) + { + var releases = new List(); + var searchString = query.GetQueryString(); + var searchUrl = BrowsePage; + var queryCollection = new NameValueCollection(); + + queryCollection.Add("do", "search"); + + if (!string.IsNullOrWhiteSpace(searchString)) + { + queryCollection.Add("keywords", searchString); + } + + queryCollection.Add("search_type", "t_name"); + + // FIXME: Tracker doesn't support multi category search + foreach (var cat in MapTorznabCapsToTrackers(query)) + { + queryCollection.Add("category", cat); + } + + if (queryCollection.Count > 0) + { + searchUrl += "?" + queryCollection.GetQueryString(); + } + + var results = await RequestStringWithCookiesAndRetry(searchUrl); + + try + { + CQ dom = results.Content; + + var rows = dom["#sortabletable tr"]; + foreach (var row in rows.Skip(1)) + { + var release = new ReleaseInfo(); + var qRow = row.Cq(); + release.Title = qRow.Find(".tooltip-content div").First().Text(); + if (string.IsNullOrWhiteSpace(release.Title)) + continue; + release.Description = qRow.Find(".tooltip-content div").Get(1).InnerText.Trim(); + + var qLink = row.Cq().Find("td:eq(2) a:eq(0)"); + release.Link = new Uri(qLink.Attr("href")); + release.Guid = release.Link; + release.Comments = new Uri(qRow.Find(".tooltip-target a").First().Attr("href")); + + var dateString = qRow.Find("td:eq(1) div").Last().Children().Remove().End().Text().Trim(); + release.PublishDate = DateTime.ParseExact(dateString, "dd-MM-yyyy HH:mm", CultureInfo.InvariantCulture); + + var sizeStr = qRow.Find("td:eq(4)").Text().Trim(); + release.Size = ReleaseInfo.GetBytes(sizeStr); + + release.Seeders = ParseUtil.CoerceInt(qRow.Find("td:eq(6)").Text().Trim()); + release.Peers = ParseUtil.CoerceInt(qRow.Find("td:eq(7)").Text().Trim()) + release.Seeders; + + var catLink = row.Cq().Find("td:eq(0) a").First().Attr("href"); + var catSplit = catLink.IndexOf("category="); + if (catSplit > -1) + { + catLink = catLink.Substring(catSplit + 9); + } + + release.Category = MapTrackerCatToNewznab(catLink); + releases.Add(release); + } + } + catch (Exception ex) + { + OnParseError(results.Content, ex); + } + + return releases; + } + } +} diff --git a/src/Jackett/Jackett.csproj b/src/Jackett/Jackett.csproj index 8711c6d4b..26cdb5d54 100644 --- a/src/Jackett/Jackett.csproj +++ b/src/Jackett/Jackett.csproj @@ -152,6 +152,7 @@ + @@ -414,6 +415,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest