Convert TorrentDay to AngleSharp (#7383)

This commit is contained in:
Diego Heras 2020-02-29 20:22:29 +01:00 committed by GitHub
parent b83a984365
commit 348461ebfc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 19 additions and 25 deletions

View File

@ -3,7 +3,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using CsQuery; using AngleSharp.Html.Parser;
using Jackett.Common.Helpers; using Jackett.Common.Helpers;
using Jackett.Common.Models; using Jackett.Common.Models;
using Jackett.Common.Models.IndexerConfig; using Jackett.Common.Models.IndexerConfig;
@ -22,11 +22,11 @@ namespace Jackett.Common.Indexers
private string LoginUrl => SiteLink + "tak3login.php"; private string LoginUrl => SiteLink + "tak3login.php";
private string SearchUrl => SiteLink + "t.json"; private string SearchUrl => SiteLink + "t.json";
public override string[] LegacySiteLinks { get; protected set; } = new string[] { public override string[] LegacySiteLinks { get; protected set; } = {
"https://torrentday.com/", "https://torrentday.com/",
}; };
public override string[] AlternativeSiteLinks { get; protected set; } = new string[] { public override string[] AlternativeSiteLinks { get; protected set; } = {
"https://tday.love/", "https://tday.love/",
"https://torrentday.cool/", "https://torrentday.cool/",
"https://tdonline.org/", "https://tdonline.org/",
@ -125,12 +125,14 @@ namespace Jackett.Common.Indexers
loginPage = await RequestStringWithCookies(loginPage.RedirectingTo, string.Empty); loginPage = await RequestStringWithCookies(loginPage.RedirectingTo, string.Empty);
if (loginPage.IsRedirect) if (loginPage.IsRedirect)
loginPage = await RequestStringWithCookies(loginPage.RedirectingTo, string.Empty); loginPage = await RequestStringWithCookies(loginPage.RedirectingTo, string.Empty);
CQ cq = loginPage.Content;
var parser = new HtmlParser();
var dom = parser.ParseDocument(loginPage.Content);
var result = configData; var result = configData;
//result.CookieHeader.Value = loginPage.Cookies; //result.CookieHeader.Value = loginPage.Cookies;
UpdateCookieHeader(loginPage.Cookies); // update cookies instead of replacing them, see #3717 UpdateCookieHeader(loginPage.Cookies); // update cookies instead of replacing them, see #3717
result.Captcha.SiteKey = cq.Find(".g-recaptcha").Attr("data-sitekey"); result.Captcha.SiteKey = dom.QuerySelector(".g-recaptcha").GetAttribute("data-sitekey");
result.Captcha.Version = "2"; result.Captcha.Version = "2";
return result; return result;
} }
@ -151,10 +153,8 @@ namespace Jackett.Common.Indexers
try try
{ {
var results = await PerformQuery(new TorznabQuery()); var results = await PerformQuery(new TorznabQuery());
if (results.Count() == 0) if (!results.Any())
{
throw new Exception("no results found, please report this bug"); throw new Exception("no results found, please report this bug");
}
IsConfigured = true; IsConfigured = true;
SaveConfig(); SaveConfig();
@ -170,20 +170,18 @@ namespace Jackett.Common.Indexers
var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, configData.CookieHeader.Value, true, null, LoginUrl); var result = await RequestLoginAndFollowRedirect(LoginUrl, pairs, configData.CookieHeader.Value, true, null, LoginUrl);
await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("logout.php"), () => await ConfigureIfOK(result.Cookies, result.Content != null && result.Content.Contains("logout.php"), () =>
{ {
CQ dom = result.Content; var parser = new HtmlParser();
var messageEl = dom["#login"]; var dom = parser.ParseDocument(result.Content);
messageEl.Children("form").Remove(); var messageEl = dom.QuerySelector("#login");
var errorMessage = messageEl.Text().Trim(); foreach (var child in messageEl.QuerySelectorAll("form"))
child.Remove();
var errorMessage = messageEl.TextContent.Trim();
if (string.IsNullOrWhiteSpace(errorMessage)) if (string.IsNullOrWhiteSpace(errorMessage))
{ errorMessage = dom.TextContent;
errorMessage = dom.Text();
}
if (string.IsNullOrWhiteSpace(errorMessage) && result.IsRedirect) if (string.IsNullOrWhiteSpace(errorMessage) && result.IsRedirect)
{
errorMessage = string.Format("Got a redirect to {0}, please adjust your the alternative link", result.RedirectingTo); errorMessage = string.Format("Got a redirect to {0}, please adjust your the alternative link", result.RedirectingTo);
}
throw new ExceptionWithConfigData(errorMessage, configData); throw new ExceptionWithConfigData(errorMessage, configData);
}); });
@ -204,13 +202,9 @@ namespace Jackett.Common.Indexers
queryUrl += "?" + catStr; queryUrl += "?" + catStr;
if (!string.IsNullOrWhiteSpace(query.ImdbID)) if (!string.IsNullOrWhiteSpace(query.ImdbID))
{
queryUrl += ";q=" + query.ImdbID; queryUrl += ";q=" + query.ImdbID;
}
else else
{
queryUrl += ";q=" + WebUtilityHelpers.UrlEncode(searchString, Encoding); queryUrl += ";q=" + WebUtilityHelpers.UrlEncode(searchString, Encoding);
}
var results = await RequestStringWithCookiesAndRetry(queryUrl); var results = await RequestStringWithCookiesAndRetry(queryUrl);
@ -223,7 +217,7 @@ namespace Jackett.Common.Indexers
try try
{ {
dynamic json = JsonConvert.DeserializeObject<dynamic>(results.Content); var json = JsonConvert.DeserializeObject<dynamic>(results.Content);
foreach (var torrent in json) foreach (var torrent in json)
{ {
@ -237,10 +231,10 @@ namespace Jackett.Common.Indexers
release.MinimumSeedTime = 172800; // 48 hours release.MinimumSeedTime = 172800; // 48 hours
release.Category = MapTrackerCatToNewznab(torrent.c.ToString()); release.Category = MapTrackerCatToNewznab(torrent.c.ToString());
var torrentID = (long)torrent.t; var torrentId = (long)torrent.t;
release.Comments = new Uri(SiteLink + "details.php?id=" + torrentID); release.Comments = new Uri(SiteLink + "details.php?id=" + torrentId);
release.Guid = release.Comments; release.Guid = release.Comments;
release.Link = new Uri(SiteLink + "download.php/" + torrentID + "/" + torrentID + ".torrent"); release.Link = new Uri(SiteLink + "download.php/" + torrentId + "/" + torrentId + ".torrent");
release.PublishDate = DateTimeUtil.UnixTimestampToDateTime((long)torrent.ctime).ToLocalTime(); release.PublishDate = DateTimeUtil.UnixTimestampToDateTime((long)torrent.ctime).ToLocalTime();
release.Size = (long)torrent.size; release.Size = (long)torrent.size;