aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers/Manager/ProviderManager.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Providers/Manager/ProviderManager.cs')
-rw-r--r--MediaBrowser.Providers/Manager/ProviderManager.cs76
1 files changed, 40 insertions, 36 deletions
diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs
index 19d1e3ba2..a961be960 100644
--- a/MediaBrowser.Providers/Manager/ProviderManager.cs
+++ b/MediaBrowser.Providers/Manager/ProviderManager.cs
@@ -106,16 +106,6 @@ namespace MediaBrowser.Providers.Manager
return Task.FromResult(true);
}
- /// <summary>
- /// Saves the image.
- /// </summary>
- /// <param name="item">The item.</param>
- /// <param name="url">The URL.</param>
- /// <param name="resourcePool">The resource pool.</param>
- /// <param name="type">The type.</param>
- /// <param name="imageIndex">Index of the image.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task.</returns>
public async Task SaveImage(IHasImages item, string url, SemaphoreSlim resourcePool, ImageType type, int? imageIndex, CancellationToken cancellationToken)
{
var response = await _httpClient.GetResponse(new HttpRequestOptions
@@ -130,28 +120,11 @@ namespace MediaBrowser.Providers.Manager
.ConfigureAwait(false);
}
- /// <summary>
- /// Saves the image.
- /// </summary>
- /// <param name="item">The item.</param>
- /// <param name="source">The source.</param>
- /// <param name="mimeType">Type of the MIME.</param>
- /// <param name="type">The type.</param>
- /// <param name="imageIndex">Index of the image.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task.</returns>
public Task SaveImage(IHasImages item, Stream source, string mimeType, ImageType type, int? imageIndex, CancellationToken cancellationToken)
{
return new ImageSaver(ConfigurationManager, _libraryMonitor, _fileSystem, _logger).SaveImage(item, source, mimeType, type, imageIndex, cancellationToken);
}
- /// <summary>
- /// Gets the available remote images.
- /// </summary>
- /// <param name="item">The item.</param>
- /// <param name="query">The query.</param>
- /// <param name="cancellationToken">The cancellation token.</param>
- /// <returns>Task{IEnumerable{RemoteImageInfo}}.</returns>
public async Task<IEnumerable<RemoteImageInfo>> GetAvailableRemoteImages(IHasImages item, RemoteImageQuery query, CancellationToken cancellationToken)
{
var providers = GetRemoteImageProviders(item, query.IncludeDisabledProviders);
@@ -327,7 +300,7 @@ namespace MediaBrowser.Providers.Manager
{
return false;
}
-
+
if (provider is IRemoteImageProvider)
{
if (Array.IndexOf(options.DisabledImageFetchers, provider.Name) != -1)
@@ -397,7 +370,7 @@ namespace MediaBrowser.Providers.Manager
// Not configured. Just return some high number to put it at the end.
return 100;
}
-
+
private int GetDefaultOrder(IMetadataProvider provider)
{
var hasOrder = provider as IHasOrder;
@@ -531,7 +504,7 @@ namespace MediaBrowser.Providers.Manager
}
private readonly ConcurrentDictionary<string, SemaphoreSlim> _fileLocks = new ConcurrentDictionary<string, SemaphoreSlim>();
-
+
/// <summary>
/// Saves the metadata.
/// </summary>
@@ -613,13 +586,44 @@ namespace MediaBrowser.Providers.Manager
}
}
- //private IEnumerable<TLookupType> GetRemoteSearchResults<TLookupType>(TLookupType searchInfo,
- // CancellationToken cancellationToken)
- // where TLookupType : ItemLookupInfo
- //{
- // var providers = _metadataProviders.OfType<IRemoteSearchProvider<TLookupType>>();
+ public async Task<IEnumerable<SearchResult<TLookupType>>> GetRemoteSearchResults<TItemType, TLookupType>(RemoteSearchQuery<TLookupType> searchInfo,
+ CancellationToken cancellationToken)
+ where TItemType : BaseItem, new()
+ where TLookupType : ItemLookupInfo
+ {
+ // Give it a dummy path just so that it looks like a file system item
+ var dummy = new TItemType
+ {
+ Path = "C:\\",
+
+ // Dummy this up to fool the local trailer check
+ Parent = new Folder()
+ };
+
+ var options = GetMetadataOptions(dummy);
+
+ var providers = GetMetadataProvidersInternal<TItemType>(dummy, options, searchInfo.IncludeDisabledProviders)
+ .OfType<IRemoteSearchProvider<TLookupType>>();
+ if (!string.IsNullOrEmpty(searchInfo.SearchProviderName))
+ {
+ providers = providers.Where(i => string.Equals(i.Name, searchInfo.SearchProviderName, StringComparison.OrdinalIgnoreCase));
+ }
+
+ foreach (var provider in providers)
+ {
+ var results = await provider.GetSearchResults(searchInfo.SearchInfo, cancellationToken).ConfigureAwait(false);
+
+ var list = results.ToList();
- //}
+ if (list.Count > 0)
+ {
+ return list;
+ }
+ }
+
+ // Nothing found
+ return new List<SearchResult<TLookupType>>();
+ }
}
} \ No newline at end of file