From 4752dcdda459b0e1260576361df9c63849d8e594 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Sun, 25 Feb 2024 03:35:42 +0200 Subject: [PATCH] core: remove automapper Co-authored-by: ngosang --- src/Jackett.Common/Indexers/BaseIndexer.cs | 9 ++-- src/Jackett.Common/Jackett.Common.csproj | 1 - .../Models/TrackerCacheResult.cs | 48 +++++++++++++++++++ src/Jackett.Common/Services/CacheService.cs | 40 +++++++--------- src/Jackett.Common/Utils/MapperUtil.cs | 26 ---------- .../Controllers/ResultsController.cs | 18 +++---- src/Jackett.Server/Jackett.Server.csproj | 1 - 7 files changed, 79 insertions(+), 64 deletions(-) delete mode 100644 src/Jackett.Common/Utils/MapperUtil.cs diff --git a/src/Jackett.Common/Indexers/BaseIndexer.cs b/src/Jackett.Common/Indexers/BaseIndexer.cs index 39937d4a8..afde8420c 100644 --- a/src/Jackett.Common/Indexers/BaseIndexer.cs +++ b/src/Jackett.Common/Indexers/BaseIndexer.cs @@ -661,7 +661,7 @@ namespace Jackett.Common.Indexers break; } - await DoFollowIfRedirect(response, referrer, overrideRedirectUrl, overrideCookies, accumulateCookies); + response = await DoFollowIfRedirect(response, referrer, overrideRedirectUrl, overrideCookies, accumulateCookies); if (accumulateCookies) { @@ -701,7 +701,7 @@ namespace Jackett.Common.Indexers } } - private async Task DoFollowIfRedirect(WebResult incomingResponse, string referrer = null, string overrideRedirectUrl = null, string overrideCookies = null, bool accumulateCookies = false) + private async Task DoFollowIfRedirect(WebResult incomingResponse, string referrer = null, string overrideRedirectUrl = null, string overrideCookies = null, bool accumulateCookies = false) { if (incomingResponse.IsRedirect) { @@ -722,8 +722,11 @@ namespace Jackett.Common.Indexers Cookies = redirRequestCookies, Encoding = Encoding }); - MapperUtil.Mapper.Map(redirectedResponse, incomingResponse); + + return redirectedResponse; } + + return incomingResponse; } protected List GetAllTrackerCategories() => diff --git a/src/Jackett.Common/Jackett.Common.csproj b/src/Jackett.Common/Jackett.Common.csproj index 604769590..fc4b1bc51 100644 --- a/src/Jackett.Common/Jackett.Common.csproj +++ b/src/Jackett.Common/Jackett.Common.csproj @@ -13,7 +13,6 @@ - diff --git a/src/Jackett.Common/Models/TrackerCacheResult.cs b/src/Jackett.Common/Models/TrackerCacheResult.cs index c65bf09ac..cdf5dc400 100644 --- a/src/Jackett.Common/Models/TrackerCacheResult.cs +++ b/src/Jackett.Common/Models/TrackerCacheResult.cs @@ -1,4 +1,5 @@ using System; +using System.Linq; namespace Jackett.Common.Models { @@ -10,5 +11,52 @@ namespace Jackett.Common.Models public string TrackerType { get; set; } public string CategoryDesc { get; set; } public Uri BlackholeLink { get; set; } + + public TrackerCacheResult(ReleaseInfo releaseInfo) + { + Title = releaseInfo.Title; + Guid = releaseInfo.Guid; + Link = releaseInfo.Link; + Details = releaseInfo.Details; + PublishDate = releaseInfo.PublishDate; + Category = releaseInfo.Category; + Size = releaseInfo.Size; + Files = releaseInfo.Files; + Grabs = releaseInfo.Grabs; + Description = releaseInfo.Description; + RageID = releaseInfo.RageID; + TVDBId = releaseInfo.TVDBId; + Imdb = releaseInfo.Imdb; + TMDb = releaseInfo.TMDb; + TVMazeId = releaseInfo.TVMazeId; + TraktId = releaseInfo.TraktId; + DoubanId = releaseInfo.DoubanId; + Genres = releaseInfo.Genres; + Year = releaseInfo.Year; + Author = releaseInfo.Author; + BookTitle = releaseInfo.BookTitle; + Publisher = releaseInfo.Publisher; + Artist = releaseInfo.Artist; + Album = releaseInfo.Album; + Label = releaseInfo.Label; + Track = releaseInfo.Track; + Seeders = releaseInfo.Seeders; + Peers = releaseInfo.Peers; + Poster = releaseInfo.Poster; + InfoHash = releaseInfo.InfoHash; + MagnetUri = releaseInfo.MagnetUri; + MinimumRatio = releaseInfo.MinimumRatio; + MinimumSeedTime = releaseInfo.MinimumSeedTime; + DownloadVolumeFactor = releaseInfo.DownloadVolumeFactor; + UploadVolumeFactor = releaseInfo.UploadVolumeFactor; + + CategoryDesc = ""; + if (Category != null) + CategoryDesc = string.Join( + ", ", Category.Select(TorznabCatType.GetCatDesc).Where(x => !string.IsNullOrEmpty(x))); + + // Use peers as leechers + Peers -= Seeders; + } } } diff --git a/src/Jackett.Common/Services/CacheService.cs b/src/Jackett.Common/Services/CacheService.cs index 03f641ac4..4b5e568ca 100644 --- a/src/Jackett.Common/Services/CacheService.cs +++ b/src/Jackett.Common/Services/CacheService.cs @@ -69,7 +69,7 @@ namespace Jackett.Common.Services var trackerCacheQuery = new TrackerCacheQuery { Created = DateTime.Now, - Results = releases + Results = releases.Select(r => (ReleaseInfo)r.Clone()).ToList() }; var trackerCache = _cache[indexer.Id]; @@ -123,27 +123,23 @@ namespace Jackett.Common.Services PruneCacheByTtl(); // remove expired results - var results = new List(); - foreach (var trackerCache in _cache.Values) - { - var trackerResults = new List(); - foreach (var query in trackerCache.Queries.Values.OrderByDescending(q => q.Created)) // newest first - { - foreach (var release in query.Results) - { - var item = MapperUtil.Mapper.Map(release); - item.FirstSeen = query.Created; - item.Tracker = trackerCache.TrackerName; - item.TrackerId = trackerCache.TrackerId; - item.TrackerType = trackerCache.TrackerType; - item.Peers -= item.Seeders; // Use peers as leechers - trackerResults.Add(item); - } - } - trackerResults = trackerResults.GroupBy(r => r.Guid).Select(y => y.First()).Take(300).ToList(); - results.AddRange(trackerResults); - } - var result = results.OrderByDescending(i => i.PublishDate).Take(3000).ToList(); + var result = _cache.Values.SelectMany( + trackerCache => trackerCache.Queries.Values + .OrderByDescending(q => q.Created) + .SelectMany( + query => query.Results.Select(release => + new TrackerCacheResult(release) + { + FirstSeen = query.Created, + Tracker = trackerCache.TrackerName, + TrackerId = trackerCache.TrackerId, + TrackerType = trackerCache.TrackerType + })) + .GroupBy(r => r.Guid) + .Select(y => y.First()) + .Take(300)) + .OrderByDescending(i => i.PublishDate) + .Take(3000).ToList(); _logger.Debug($"CACHE GetCachedResults / Results: {result.Count} (cache may contain more results)"); PrintCacheStatus(); diff --git a/src/Jackett.Common/Utils/MapperUtil.cs b/src/Jackett.Common/Utils/MapperUtil.cs deleted file mode 100644 index c6f770f92..000000000 --- a/src/Jackett.Common/Utils/MapperUtil.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System.Linq; -using AutoMapper; -using Jackett.Common.Models; -using Jackett.Common.Utils.Clients; - -namespace Jackett.Common.Utils -{ - public static class MapperUtil - { - public static Mapper Mapper = new Mapper( - new MapperConfiguration( - cfg => - { - cfg.CreateMap(); - - cfg.CreateMap(); - - cfg.CreateMap().AfterMap((r, t) => - { - t.CategoryDesc = r.Category != null - ? string.Join(", ", r.Category.Select(x => TorznabCatType.GetCatDesc(x)).Where(x => !string.IsNullOrEmpty(x))) - : ""; - }); - })); - } -} diff --git a/src/Jackett.Server/Controllers/ResultsController.cs b/src/Jackett.Server/Controllers/ResultsController.cs index 1147297fc..87ba9874e 100644 --- a/src/Jackett.Server/Controllers/ResultsController.cs +++ b/src/Jackett.Server/Controllers/ResultsController.cs @@ -308,14 +308,11 @@ namespace Jackett.Server.Controllers var searchResults = t.Result.Releases; var indexer = t.Result.Indexer; - return searchResults.Select(result => + return searchResults.Select(result => new TrackerCacheResult(result) { - var item = MapperUtil.Mapper.Map(result); - item.Tracker = indexer.Name; - item.TrackerId = indexer.Id; - item.TrackerType = indexer.Type; - item.Peers = item.Peers - item.Seeders; // Use peers as leechers - return item; + Tracker = indexer.Name, + TrackerId = indexer.Id, + TrackerType = indexer.Type }); }).OrderByDescending(d => d.PublishDate).ToList(); @@ -447,7 +444,7 @@ namespace Jackett.Server.Controllers Link = new Uri(CurrentIndexer.SiteLink) }); - var proxiedReleases = result.Releases.Select(r => MapperUtil.Mapper.Map(r)).Select(r => + var proxiedReleases = result.Releases.Select(r => { r.Link = serverService.ConvertToProxyLink(r.Link, serverUrl, r.Origin.Id, "dl", r.Title); r.Poster = serverService.ConvertToProxyLink(r.Poster, serverUrl, r.Origin.Id, "img", "poster"); @@ -568,9 +565,8 @@ namespace Jackett.Server.Controllers logger.Info($"Potato search in {CurrentIndexer.Name} for {CurrentQuery.GetQueryString()} => Found {result.Releases.Count()} releases{cacheStr}"); var serverUrl = serverService.GetServerUrl(Request); - var potatoReleases = result.Releases.Where(r => r.Link != null || r.MagnetUri != null).Select(r => + var potatoReleases = result.Releases.Where(r => r.Link != null || r.MagnetUri != null).Select(release => { - var release = MapperUtil.Mapper.Map(r); release.Link = serverService.ConvertToProxyLink(release.Link, serverUrl, CurrentIndexer.Id, "dl", release.Title); // Poster is not used in Potato response //release.Poster = serverService.ConvertToProxyLink(release.Poster, serverUrl, CurrentIndexer.Id, "img", "poster"); @@ -589,7 +585,7 @@ namespace Jackett.Server.Controllers size = (long)release.Size / (1024 * 1024), // This is in MB leechers = (release.Peers ?? -1) - (release.Seeders ?? 0), seeders = release.Seeders ?? -1, - publish_date = r.PublishDate == DateTime.MinValue ? null : release.PublishDate.ToUniversalTime().ToString("s") + publish_date = release.PublishDate == DateTime.MinValue ? null : release.PublishDate.ToUniversalTime().ToString("s") }; return item; }); diff --git a/src/Jackett.Server/Jackett.Server.csproj b/src/Jackett.Server/Jackett.Server.csproj index 3d2e466e2..9cd55e7b2 100644 --- a/src/Jackett.Server/Jackett.Server.csproj +++ b/src/Jackett.Server/Jackett.Server.csproj @@ -55,7 +55,6 @@ -