diff --git a/src/Jackett.Common/Indexers/TorrentsCSV.cs b/src/Jackett.Common/Indexers/TorrentsCSV.cs index f54a7985c..549edc436 100644 --- a/src/Jackett.Common/Indexers/TorrentsCSV.cs +++ b/src/Jackett.Common/Indexers/TorrentsCSV.cs @@ -3,10 +3,12 @@ using System.Collections.Generic; using System.Collections.Specialized; using System.Diagnostics.CodeAnalysis; using System.Linq; +using System.Text.Json.Serialization; using System.Threading.Tasks; using Jackett.Common.Extensions; using Jackett.Common.Models; using Jackett.Common.Models.IndexerConfig; +using Jackett.Common.Serializer; using Jackett.Common.Services.Interfaces; using Jackett.Common.Utils; using Jackett.Common.Utils.Clients; @@ -121,32 +123,31 @@ namespace Jackett.Common.Indexers try { - var jsonContent = JObject.Parse(response.ContentString); + var jsonResponse = STJson.Deserialize(response.ContentString); - foreach (var torrent in jsonContent.Value("torrents")) + foreach (var torrent in jsonResponse.Torrents) { if (torrent == null) { throw new Exception("Error: No data returned!"); } - var infoHash = torrent.Value("infohash"); - var title = torrent.Value("name"); - var size = torrent.Value("size_bytes"); - var seeders = torrent.Value("seeders") ?? 0; - var leechers = torrent.Value("leechers") ?? 0; - var grabs = torrent.Value("completed") ?? 0; - var publishDate = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc).AddSeconds(torrent.Value("created_unix")); + var infoHash = torrent.InfoHash; + var title = torrent.Name; + var seeders = torrent.Seeders ?? 0; + var leechers = torrent.Leechers ?? 0; + var grabs = torrent.Completed ?? 0; + var publishDate = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc).AddSeconds(torrent.Created); var release = new ReleaseInfo { - Title = title, - Details = new Uri($"{SiteLink}search?q={title}"), // there is no details link Guid = new Uri($"magnet:?xt=urn:btih:{infoHash}"), + Details = new Uri($"{SiteLink}search?q={title}"), // there is no details link + Title = title, InfoHash = infoHash, // magnet link is auto generated from infohash Category = new List { TorznabCatType.Other.ID }, PublishDate = publishDate, - Size = size, + Size = torrent.Size, Grabs = grabs, Seeders = seeders, Peers = leechers + seeders, @@ -167,4 +168,29 @@ namespace Jackett.Common.Indexers .ToArray(); } } + + public class TorrentsCSVResponse + { + public IReadOnlyCollection Torrents { get; set; } + } + + public class TorrentsCSVTorrent + { + [JsonPropertyName("infohash")] + public string InfoHash { get; set; } + + public string Name { get; set; } + + [JsonPropertyName("size_bytes")] + public long Size { get; set; } + + [JsonPropertyName("created_unix")] + public long Created { get; set; } + + public int? Leechers { get; set; } + + public int? Seeders { get; set; } + + public int? Completed { get; set; } + } }