gazellegamesapi: support for freeleech only (#15271)

This commit is contained in:
Bogdan 2024-04-24 10:51:21 +03:00 committed by GitHub
parent fc55a58309
commit 0737edd708
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 24 additions and 5 deletions

View File

@ -44,6 +44,7 @@ namespace Jackett.Common.Indexers
p: ps, p: ps,
cs: cs, cs: cs,
supportsFreeleechTokens: true, supportsFreeleechTokens: true,
supportsFreeleechOnly: true,
has2Fa: false, has2Fa: false,
useApiKey: true, useApiKey: true,
usePassKey: true, usePassKey: true,
@ -236,6 +237,11 @@ namespace Jackett.Common.Indexers
queryCollection.Add($"artistcheck[{i++}]", cat); queryCollection.Add($"artistcheck[{i++}]", cat);
} }
if (configData.FreeleechOnly is { Value: true })
{
queryCollection.Set("freetorrent", "1");
}
// remove . as not used in titles // remove . as not used in titles
searchUrl += "?" + queryCollection.GetQueryString(); searchUrl += "?" + queryCollection.GetQueryString();
@ -268,7 +274,7 @@ namespace Jackett.Common.Indexers
var groupId = int.Parse(gObj.Key); var groupId = int.Parse(gObj.Key);
var group = gObj.Value as JObject; var group = gObj.Value as JObject;
if (group["Torrents"].Type == JTokenType.Array && group["Torrents"] is JArray array && array.Count == 0) if (group["Torrents"].Type == JTokenType.Array && group["Torrents"] is JArray { Count: 0 })
{ {
continue; continue;
} }
@ -281,6 +287,18 @@ namespace Jackett.Common.Indexers
foreach (var tObj in JObject.FromObject(group["Torrents"])) foreach (var tObj in JObject.FromObject(group["Torrents"]))
{ {
var torrent = tObj.Value as JObject; var torrent = tObj.Value as JObject;
var torrentFreeTorrent = torrent.Value<string>("FreeTorrent");
var freeTorrent = torrentFreeTorrent.IsNotNullOrWhiteSpace() && int.TryParse(torrentFreeTorrent, out var freeValue) ? freeValue : 0;
var downloadVolumeFactor = freeTorrent >= 1 ? 0 : 1;
// Skip non-freeleech results when freeleech only is set
if (configData.FreeleechOnly is { Value: true } && downloadVolumeFactor != 0.0)
{
continue;
}
var torrentId = torrent.Value<int>("ID"); var torrentId = torrent.Value<int>("ID");
if (categories.Length == 0) if (categories.Length == 0)
@ -335,8 +353,6 @@ namespace Jackett.Common.Indexers
title += $" [{string.Join(", ", tags)}]"; title += $" [{string.Join(", ", tags)}]";
} }
var torrentFreeTorrent = torrent.Value<string>("FreeTorrent");
var freeTorrent = torrentFreeTorrent.IsNotNullOrWhiteSpace() && int.TryParse(torrentFreeTorrent, out var freeValue) ? freeValue : 0;
var release = new ReleaseInfo var release = new ReleaseInfo
{ {
@ -351,8 +367,8 @@ namespace Jackett.Common.Indexers
Seeders = torrent.Value<int>("Seeders"), Seeders = torrent.Value<int>("Seeders"),
Peers = torrent.Value<int>("Seeders") + torrent.Value<int>("Leechers"), Peers = torrent.Value<int>("Seeders") + torrent.Value<int>("Leechers"),
Files = torrent.Value<int>("FileCount"), Files = torrent.Value<int>("FileCount"),
DownloadVolumeFactor = downloadVolumeFactor,
UploadVolumeFactor = freeTorrent >= 2 ? 0 : 1, UploadVolumeFactor = freeTorrent >= 2 ? 0 : 1,
DownloadVolumeFactor = freeTorrent >= 1 ? 0 : 1,
MinimumRatio = 1, MinimumRatio = 1,
MinimumSeedTime = 288000, // 80 hours MinimumSeedTime = 288000, // 80 hours
}; };
@ -365,7 +381,10 @@ namespace Jackett.Common.Indexers
OnParseError(response.ContentString, ex); OnParseError(response.ContentString, ex);
} }
return releases; // order by date
return releases
.OrderByDescending(o => o.PublishDate)
.ToArray();
} }
} }
} }