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:
parent
8de87f4b23
commit
707298b0d7
8 changed files with 18 additions and 39 deletions
|
@ -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)
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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>();
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue