1
0
Fork 0
mirror of https://github.com/Jackett/Jackett synced 2025-02-25 15:42:48 +00:00

hdolimpo: add banner image (#7568)

This commit is contained in:
Diego Heras 2020-03-08 12:31:58 +01:00 committed by GitHub
parent 93d200895b
commit 389daf9957
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,10 +1,10 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading.Tasks; using System.Threading.Tasks;
using AngleSharp.Dom;
using AngleSharp.Html.Parser; using AngleSharp.Html.Parser;
using Jackett.Common.Models; using Jackett.Common.Models;
using Jackett.Common.Models.IndexerConfig; using Jackett.Common.Models.IndexerConfig;
@ -24,6 +24,7 @@ namespace Jackett.Common.Indexers
private string SearchUrl => SiteLink + "torrents/buscar?page=1"; private string SearchUrl => SiteLink + "torrents/buscar?page=1";
private string CommentsUrl => SiteLink + "torrents/detalles/"; private string CommentsUrl => SiteLink + "torrents/detalles/";
private string DownloadUrl => SiteLink + "torrents/descargar/"; private string DownloadUrl => SiteLink + "torrents/descargar/";
private string BannerUrl => SiteLink + "storage/imagenes/portadas/m/";
private new ConfigurationDataBasicLoginWithEmail configData private new ConfigurationDataBasicLoginWithEmail configData
{ {
@ -93,17 +94,19 @@ namespace Jackett.Common.Indexers
{ {
var includePremium = ((BoolItem)configData.GetDynamic("IncludePremium")).Value; var includePremium = ((BoolItem)configData.GetDynamic("IncludePremium")).Value;
var pairs = new Dictionary<string, string>(); var pairs = new Dictionary<string, string>
pairs.Add("freetorrent", "false"); {
pairs.Add("ordenar_por", "created_at"); {"freetorrent", "false"},
pairs.Add("orden", "desc"); {"ordenar_por", "created_at"},
pairs.Add("titulo", query.GetQueryString()); {"orden", "desc"},
{"titulo", query.GetQueryString()}
};
var cats = MapTorznabCapsToTrackers(query); var cats = MapTorznabCapsToTrackers(query);
var category = cats.Count == 1 ? cats.First() : "0"; var category = cats.Count == 1 ? cats.First() : "0";
pairs.Add("categoria", category); pairs.Add("categoria", category);
var boundary = "---------------------------" + (DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds.ToString().Replace(".", ""); var boundary = "---------------------------" + (DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds.ToString(CultureInfo.InvariantCulture).Replace(".", "");
var bodyParts = new List<string>(); var bodyParts = new List<string>();
foreach (var pair in pairs) foreach (var pair in pairs)
@ -118,9 +121,11 @@ namespace Jackett.Common.Indexers
bodyParts.Add("--" + boundary + "--"); bodyParts.Add("--" + boundary + "--");
var body = string.Join("\r\n", bodyParts); var body = string.Join("\r\n", bodyParts);
var headers = new Dictionary<string, string>(); var headers = new Dictionary<string, string>
headers.Add("Content-Type", "multipart/form-data; boundary=" + boundary); {
addXsrfTokenHeader(headers, configData.CookieHeader.Value); {"Content-Type", "multipart/form-data; boundary=" + boundary}
};
AddXsrfTokenHeader(headers, configData.CookieHeader.Value);
var response = await PostDataWithCookies(SearchUrl, pairs, configData.CookieHeader.Value, SiteLink, headers, body); var response = await PostDataWithCookies(SearchUrl, pairs, configData.CookieHeader.Value, SiteLink, headers, body);
if (response.Content.StartsWith("<!doctype html>")) if (response.Content.StartsWith("<!doctype html>"))
@ -128,23 +133,23 @@ namespace Jackett.Common.Indexers
//Cookie appears to expire after a period of time or logging in to the site via browser //Cookie appears to expire after a period of time or logging in to the site via browser
await DoLogin(); await DoLogin();
addXsrfTokenHeader(headers, configData.CookieHeader.Value); AddXsrfTokenHeader(headers, configData.CookieHeader.Value);
response = await PostDataWithCookies(SearchUrl, pairs, configData.CookieHeader.Value, SiteLink, headers, body); response = await PostDataWithCookies(SearchUrl, pairs, configData.CookieHeader.Value, SiteLink, headers, body);
} }
var releases = ParseResponse(query, response, includePremium); var releases = ParseResponse(response, includePremium);
return releases; return releases;
} }
private void addXsrfTokenHeader(Dictionary<string, string> headers, string cookie) private static void AddXsrfTokenHeader(IDictionary<string, string> headers, string cookie)
{ {
var xsrfToken = new Regex("XSRF-TOKEN=([^;]+)").Match(cookie).Groups[1].ToString(); var xsrfToken = new Regex("XSRF-TOKEN=([^;]+)").Match(cookie).Groups[1].ToString();
xsrfToken = Uri.UnescapeDataString(xsrfToken); xsrfToken = Uri.UnescapeDataString(xsrfToken);
headers["X-XSRF-TOKEN"] = xsrfToken; headers["X-XSRF-TOKEN"] = xsrfToken;
} }
private List<ReleaseInfo> ParseResponse(TorznabQuery query, WebClientStringResult response, bool includePremium) private List<ReleaseInfo> ParseResponse(WebClientStringResult response, bool includePremium)
{ {
var releases = new List<ReleaseInfo>(); var releases = new List<ReleaseInfo>();
@ -174,6 +179,9 @@ namespace Jackett.Common.Indexers
if (torrent["created_at"] != null) if (torrent["created_at"] != null)
release.PublishDate = DateTime.Parse((string)torrent["created_at"]); release.PublishDate = DateTime.Parse((string)torrent["created_at"]);
if (torrent["portada"] != null)
release.BannerUrl = new Uri(BannerUrl + (string)(torrent["portada"]["hash"]) + "." + (string)(torrent["portada"]["ext"]));
release.Category = MapTrackerCatToNewznab((string)torrent["categoria"]); release.Category = MapTrackerCatToNewznab((string)torrent["categoria"]);
release.Size = (long)torrent["size"]; release.Size = (long)torrent["size"];