diff --git a/src/Jackett.Common/Indexers/HDOlimpo.cs b/src/Jackett.Common/Indexers/HDOlimpo.cs index 57e3f59b8..674f448c0 100644 --- a/src/Jackett.Common/Indexers/HDOlimpo.cs +++ b/src/Jackett.Common/Indexers/HDOlimpo.cs @@ -1,10 +1,10 @@ using System; using System.Collections.Generic; +using System.Globalization; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; -using AngleSharp.Dom; using AngleSharp.Html.Parser; using Jackett.Common.Models; using Jackett.Common.Models.IndexerConfig; @@ -24,6 +24,7 @@ namespace Jackett.Common.Indexers private string SearchUrl => SiteLink + "torrents/buscar?page=1"; private string CommentsUrl => SiteLink + "torrents/detalles/"; private string DownloadUrl => SiteLink + "torrents/descargar/"; + private string BannerUrl => SiteLink + "storage/imagenes/portadas/m/"; private new ConfigurationDataBasicLoginWithEmail configData { @@ -93,17 +94,19 @@ namespace Jackett.Common.Indexers { var includePremium = ((BoolItem)configData.GetDynamic("IncludePremium")).Value; - var pairs = new Dictionary(); - pairs.Add("freetorrent", "false"); - pairs.Add("ordenar_por", "created_at"); - pairs.Add("orden", "desc"); - pairs.Add("titulo", query.GetQueryString()); + var pairs = new Dictionary + { + {"freetorrent", "false"}, + {"ordenar_por", "created_at"}, + {"orden", "desc"}, + {"titulo", query.GetQueryString()} + }; var cats = MapTorznabCapsToTrackers(query); var category = cats.Count == 1 ? cats.First() : "0"; 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(); foreach (var pair in pairs) @@ -118,9 +121,11 @@ namespace Jackett.Common.Indexers bodyParts.Add("--" + boundary + "--"); var body = string.Join("\r\n", bodyParts); - var headers = new Dictionary(); - headers.Add("Content-Type", "multipart/form-data; boundary=" + boundary); - addXsrfTokenHeader(headers, configData.CookieHeader.Value); + var headers = new Dictionary + { + {"Content-Type", "multipart/form-data; boundary=" + boundary} + }; + AddXsrfTokenHeader(headers, configData.CookieHeader.Value); var response = await PostDataWithCookies(SearchUrl, pairs, configData.CookieHeader.Value, SiteLink, headers, body); if (response.Content.StartsWith("")) @@ -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 await DoLogin(); - addXsrfTokenHeader(headers, configData.CookieHeader.Value); + AddXsrfTokenHeader(headers, configData.CookieHeader.Value); response = await PostDataWithCookies(SearchUrl, pairs, configData.CookieHeader.Value, SiteLink, headers, body); } - var releases = ParseResponse(query, response, includePremium); + var releases = ParseResponse(response, includePremium); return releases; } - private void addXsrfTokenHeader(Dictionary headers, string cookie) + private static void AddXsrfTokenHeader(IDictionary headers, string cookie) { var xsrfToken = new Regex("XSRF-TOKEN=([^;]+)").Match(cookie).Groups[1].ToString(); xsrfToken = Uri.UnescapeDataString(xsrfToken); headers["X-XSRF-TOKEN"] = xsrfToken; } - private List ParseResponse(TorznabQuery query, WebClientStringResult response, bool includePremium) + private List ParseResponse(WebClientStringResult response, bool includePremium) { var releases = new List(); @@ -174,6 +179,9 @@ namespace Jackett.Common.Indexers if (torrent["created_at"] != null) 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.Size = (long)torrent["size"];