mirror of
https://github.com/Prowlarr/Prowlarr.git
synced 2025-09-17 17:14:18 +02:00
Fixed: Grab from Search page
This commit is contained in:
@@ -27,5 +27,6 @@ namespace NzbDrone.Core.IndexerSearch
|
||||
public string title { get; set; }
|
||||
public string configured { get; set; }
|
||||
public string source { get; set; }
|
||||
public string server { get; set; }
|
||||
}
|
||||
}
|
||||
|
@@ -22,21 +22,22 @@ namespace NzbDrone.Core.IndexerSearch
|
||||
{
|
||||
private readonly IEventAggregator _eventAggregator;
|
||||
private readonly IIndexerFactory _indexerFactory;
|
||||
private readonly IDownloadMappingService _downloadMappingService;
|
||||
private readonly Logger _logger;
|
||||
|
||||
public NzbSearchService(IEventAggregator eventAggregator,
|
||||
IIndexerFactory indexerFactory,
|
||||
IDownloadMappingService downloadMappingService,
|
||||
Logger logger)
|
||||
{
|
||||
_eventAggregator = eventAggregator;
|
||||
_indexerFactory = indexerFactory;
|
||||
_downloadMappingService = downloadMappingService;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public NewznabResults Search(NewznabRequest request, List<int> indexerIds, bool interactiveSearch)
|
||||
{
|
||||
var results = new NewznabResults();
|
||||
|
||||
switch (request.t)
|
||||
{
|
||||
case "movie":
|
||||
@@ -60,7 +61,7 @@ namespace NzbDrone.Core.IndexerSearch
|
||||
searchSpec.TmdbId = request.tmdbid;
|
||||
searchSpec.TraktId = request.traktid;
|
||||
|
||||
return new NewznabResults { Releases = Dispatch(indexer => indexer.Fetch(searchSpec), searchSpec) };
|
||||
return new NewznabResults { Releases = MapReleases(Dispatch(indexer => indexer.Fetch(searchSpec), searchSpec), request.server) };
|
||||
}
|
||||
|
||||
private NewznabResults MusicSearch(NewznabRequest request, List<int> indexerIds, bool interactiveSearch)
|
||||
@@ -71,7 +72,7 @@ namespace NzbDrone.Core.IndexerSearch
|
||||
searchSpec.Album = request.album;
|
||||
searchSpec.Label = request.label;
|
||||
|
||||
return new NewznabResults { Releases = Dispatch(indexer => indexer.Fetch(searchSpec), searchSpec) };
|
||||
return new NewznabResults { Releases = MapReleases(Dispatch(indexer => indexer.Fetch(searchSpec), searchSpec), request.server) };
|
||||
}
|
||||
|
||||
private NewznabResults TvSearch(NewznabRequest request, List<int> indexerIds, bool interactiveSearch)
|
||||
@@ -86,7 +87,7 @@ namespace NzbDrone.Core.IndexerSearch
|
||||
searchSpec.RId = request.rid;
|
||||
searchSpec.TvMazeId = request.tvmazeid;
|
||||
|
||||
return new NewznabResults { Releases = Dispatch(indexer => indexer.Fetch(searchSpec), searchSpec) };
|
||||
return new NewznabResults { Releases = MapReleases(Dispatch(indexer => indexer.Fetch(searchSpec), searchSpec), request.server) };
|
||||
}
|
||||
|
||||
private NewznabResults BookSearch(NewznabRequest request, List<int> indexerIds, bool interactiveSearch)
|
||||
@@ -96,14 +97,24 @@ namespace NzbDrone.Core.IndexerSearch
|
||||
searchSpec.Author = request.author;
|
||||
searchSpec.Title = request.title;
|
||||
|
||||
return new NewznabResults { Releases = Dispatch(indexer => indexer.Fetch(searchSpec), searchSpec) };
|
||||
return new NewznabResults { Releases = MapReleases(Dispatch(indexer => indexer.Fetch(searchSpec), searchSpec), request.server) };
|
||||
}
|
||||
|
||||
private NewznabResults BasicSearch(NewznabRequest request, List<int> indexerIds, bool interactiveSearch)
|
||||
{
|
||||
var searchSpec = Get<BasicSearchCriteria>(request, indexerIds, interactiveSearch);
|
||||
|
||||
return new NewznabResults { Releases = Dispatch(indexer => indexer.Fetch(searchSpec), searchSpec) };
|
||||
return new NewznabResults { Releases = MapReleases(Dispatch(indexer => indexer.Fetch(searchSpec), searchSpec), request.server) };
|
||||
}
|
||||
|
||||
private List<ReleaseInfo> MapReleases(List<ReleaseInfo> releases, string serverUrl)
|
||||
{
|
||||
foreach (var result in releases)
|
||||
{
|
||||
result.DownloadUrl = _downloadMappingService.ConvertToProxyLink(new Uri(result.DownloadUrl), serverUrl, result.IndexerId, result.Title).ToString();
|
||||
}
|
||||
|
||||
return releases;
|
||||
}
|
||||
|
||||
private TSpec Get<TSpec>(NewznabRequest query, List<int> indexerIds, bool interactiveSearch)
|
||||
|
@@ -54,6 +54,7 @@ namespace Prowlarr.Api.V1.Indexers
|
||||
{
|
||||
var requestType = request.t;
|
||||
request.source = UserAgentParser.ParseSource(Request.Headers.UserAgent);
|
||||
request.server = Request.GetServerUrl();
|
||||
|
||||
if (requestType.IsNullOrWhiteSpace())
|
||||
{
|
||||
@@ -68,7 +69,6 @@ namespace Prowlarr.Api.V1.Indexers
|
||||
}
|
||||
|
||||
var indexerInstance = _indexerFactory.GetInstance(indexer);
|
||||
var serverUrl = Request.GetServerUrl();
|
||||
|
||||
switch (requestType)
|
||||
{
|
||||
@@ -83,11 +83,6 @@ namespace Prowlarr.Api.V1.Indexers
|
||||
case "movie":
|
||||
var results = _nzbSearchService.Search(request, new List<int> { indexer.Id }, false);
|
||||
|
||||
foreach (var result in results.Releases)
|
||||
{
|
||||
result.DownloadUrl = _downloadMappingService.ConvertToProxyLink(new Uri(result.DownloadUrl), serverUrl, indexer.Id, result.Title).ToString();
|
||||
}
|
||||
|
||||
Response searchResponse = results.ToXml(indexerInstance.Protocol);
|
||||
searchResponse.ContentType = "application/rss+xml";
|
||||
return searchResponse;
|
||||
|
@@ -9,6 +9,7 @@ using NzbDrone.Core.IndexerSearch;
|
||||
using NzbDrone.Core.IndexerSearch.Definitions;
|
||||
using NzbDrone.Core.Parser.Model;
|
||||
using Prowlarr.Http;
|
||||
using Prowlarr.Http.Extensions;
|
||||
|
||||
namespace Prowlarr.Api.V1.Search
|
||||
{
|
||||
@@ -51,7 +52,8 @@ namespace Prowlarr.Api.V1.Search
|
||||
{
|
||||
try
|
||||
{
|
||||
var decisions = _nzbSearhService.Search(new NewznabRequest { q = query, source = "Prowlarr", t = "search", cat = string.Join(",", categories) }, indexerIds, true).Releases;
|
||||
var request = new NewznabRequest { q = query, source = "Prowlarr", t = "search", cat = string.Join(",", categories), server = Request.GetServerUrl() };
|
||||
var decisions = _nzbSearhService.Search(request, indexerIds, true).Releases;
|
||||
|
||||
return MapDecisions(decisions);
|
||||
}
|
||||
|
Reference in New Issue
Block a user