1
0
Fork 0
mirror of https://github.com/Jackett/Jackett synced 2025-02-24 15:21:06 +00:00

core: Add enumerable extension FirstIfSingleOrDefault (#7837)

This commit is contained in:
Cory 2020-03-25 12:54:51 -05:00 committed by GitHub
parent 8de87f4b23
commit 707298b0d7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 18 additions and 39 deletions

View file

@ -231,11 +231,9 @@ namespace Jackett.Common.Indexers.Abstract
if (imdbInTags)
{
var imdbTags = tags
.Select(tag => ParseUtil.GetImdbID((string)tag))
.Where(tag => tag != null);
if (imdbTags.Count() == 1)
release.Imdb = imdbTags.First();
release.Imdb = tags
.Select(tag => ParseUtil.GetImdbID((string)tag))
.Where(tag => tag != null).FirstIfSingleOrDefault();
}
if (r["torrents"] is JArray)

View file

@ -103,15 +103,7 @@ namespace Jackett.Common.Indexers
var queryCollection = new NameValueCollection();
queryCollection.Add("total", "146"); // Not sure what this is about but its required!
var cat = "0";
var queryCats = MapTorznabCapsToTrackers(query);
if (queryCats.Count == 1)
{
cat = queryCats.First().ToString();
}
queryCollection.Add("cat", cat);
queryCollection.Add("cat", MapTorznabCapsToTrackers(query).FirstIfSingleOrDefault("0"));
queryCollection.Add("searchin", "filename");
queryCollection.Add("search", searchString);
queryCollection.Add("page", "1");

View file

@ -116,10 +116,9 @@ namespace Jackett.Common.Indexers
protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
{
var releases = new List<ReleaseInfo>();
var cats = MapTorznabCapsToTrackers(query, true);
var qc = new NameValueCollection
{
{"cat", cats.Count == 1 ? cats[0] : "0"}
{"cat", MapTorznabCapsToTrackers(query, true).FirstIfSingleOrDefault("0")}
};
var results = new List<WebClientStringResult>();
var search = new UriBuilder(SearchUrl);

View file

@ -105,11 +105,7 @@ namespace Jackett.Common.Indexers
var releases = new List<ReleaseInfo>();
var searchUrl = BrowseUrl;
var searchString = query.GetQueryString();
var cats = MapTorznabCapsToTrackers(query);
var cat = "0";
if (cats.Count == 1)
cat = cats[0];
var cat = MapTorznabCapsToTrackers(query).FirstIfSingleOrDefault("0");
var queryCollection = new NameValueCollection();

View file

@ -77,13 +77,11 @@ namespace Jackett.Common.Indexers
protected override async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
{
var releases = new List<ReleaseInfo>();
var cats = MapTorznabCapsToTrackers(query);
var qc = new NameValueCollection
{
{"incldead", "1"},
{"showspam", "1"},
{"cat", cats.Count == 1 ? cats[0] : "0"}
{"cat", MapTorznabCapsToTrackers(query).FirstIfSingleOrDefault("0")}
};
if (!string.IsNullOrWhiteSpace(query.GetQueryString()))
qc.Add("search", query.GetQueryString());

View file

@ -9,6 +9,7 @@ using AngleSharp.Html.Parser;
using Jackett.Common.Models;
using Jackett.Common.Models.IndexerConfig;
using Jackett.Common.Services.Interfaces;
using Jackett.Common.Utils;
using Jackett.Common.Utils.Clients;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
@ -99,13 +100,10 @@ namespace Jackett.Common.Indexers
{"freetorrent", "false"},
{"ordenar_por", "created_at"},
{"orden", "desc"},
{"titulo", query.GetQueryString()}
{"titulo", query.GetQueryString()},
{"categoria", MapTorznabCapsToTrackers(query).FirstIfSingleOrDefault("0")}
};
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(CultureInfo.InvariantCulture).Replace(".", "");
var bodyParts = new List<string>();

View file

@ -142,13 +142,7 @@ namespace Jackett.Common.Indexers
queryCollection.Add("search", searchString);
}
var cats = MapTorznabCapsToTrackers(query);
var cat = "0";
if (cats.Count == 1)
{
cat = cats[0];
}
queryCollection.Add("cat", cat);
queryCollection.Add("cat", MapTorznabCapsToTrackers(query).FirstIfSingleOrDefault("0"));
searchUrl += "?" + queryCollection.GetQueryString();

View file

@ -41,9 +41,13 @@ namespace Jackett.Common.Utils
{
public static string AsString(this IEnumerable<char> chars) => string.Concat(chars);
// Should be collection.Any()
// Remove in favor of existing built in function?
public static bool IsEmpty<T>(this IEnumerable<T> collection) => collection.Count() > 0;
public static T FirstIfSingleOrDefault<T>(this IEnumerable<T> enumerable, T replace = default)
{
//Avoid enumerating the whole array.
//If enumerable.Count() < 2, takes whole array.
var test = enumerable.Take(2).ToList();
return test.Count == 1 ? test[0] : replace;
}
public static IEnumerable<T> Flatten<T>(this IEnumerable<IEnumerable<T>> list) => list.SelectMany(x => x);
}