Browse Source

improve identify feature

Luke Pulverenti 9 years ago
parent
commit
1cea5bcbd8

+ 10 - 5
MediaBrowser.Api/ItemLookupService.cs

@@ -202,14 +202,19 @@ namespace MediaBrowser.Api
             //    }
             //}
             Logger.Info("Setting provider id's to item {0}-{1}: {2}", item.Id, item.Name, _json.SerializeToString(request.ProviderIds));
+
+            // Since the refresh process won't erase provider Ids, we need to set this explicitly now.
             item.ProviderIds = request.ProviderIds;
+            //item.ProductionYear = request.ProductionYear;
+            //item.Name = request.Name;
 
-			var task = _providerManager.RefreshFullItem(item, new MetadataRefreshOptions(_fileSystem)
+            var task = _providerManager.RefreshFullItem(item, new MetadataRefreshOptions(_fileSystem)
             {
                 MetadataRefreshMode = MetadataRefreshMode.FullRefresh,
                 ImageRefreshMode = ImageRefreshMode.FullRefresh,
                 ReplaceAllMetadata = true,
-                ReplaceAllImages = request.ReplaceAllImages
+                ReplaceAllImages = request.ReplaceAllImages,
+                SearchResult = request
 
             }, CancellationToken.None);
             Task.WaitAll(task);
@@ -234,7 +239,7 @@ namespace MediaBrowser.Api
                     contentPath = await reader.ReadToEndAsync().ConfigureAwait(false);
                 }
 
-				if (_fileSystem.FileExists(contentPath))
+                if (_fileSystem.FileExists(contentPath))
                 {
                     return ToStaticFileResult(contentPath);
                 }
@@ -275,7 +280,7 @@ namespace MediaBrowser.Api
 
             var fullCachePath = GetFullCachePath(urlHash + "." + ext);
 
-			_fileSystem.CreateDirectory(Path.GetDirectoryName(fullCachePath));
+            _fileSystem.CreateDirectory(Path.GetDirectoryName(fullCachePath));
             using (var stream = result.Content)
             {
                 using (var filestream = _fileSystem.GetFileStream(fullCachePath, FileMode.Create, FileAccess.Write, FileShare.Read, true))
@@ -284,7 +289,7 @@ namespace MediaBrowser.Api
                 }
             }
 
-			_fileSystem.CreateDirectory(Path.GetDirectoryName(pointerCachePath));
+            _fileSystem.CreateDirectory(Path.GetDirectoryName(pointerCachePath));
             using (var writer = new StreamWriter(pointerCachePath))
             {
                 await writer.WriteAsync(fullCachePath).ConfigureAwait(false);

+ 3 - 0
MediaBrowser.Controller/Providers/MetadataRefreshOptions.cs

@@ -1,5 +1,6 @@
 using System.Linq;
 using CommonIO;
+using MediaBrowser.Model.Providers;
 
 namespace MediaBrowser.Controller.Providers
 {
@@ -13,6 +14,7 @@ namespace MediaBrowser.Controller.Providers
         public bool IsPostRecursiveRefresh { get; set; }
 
         public MetadataRefreshMode MetadataRefreshMode { get; set; }
+        public RemoteSearchResult SearchResult { get; set; }
 
         public bool ForceSave { get; set; }
 
@@ -37,6 +39,7 @@ namespace MediaBrowser.Controller.Providers
             ImageRefreshMode = copy.ImageRefreshMode;
             ReplaceAllImages = copy.ReplaceAllImages;
             ReplaceImages = copy.ReplaceImages.ToList();
+            SearchResult = copy.SearchResult;
         }
     }
 }

+ 13 - 0
MediaBrowser.Providers/Manager/MetadataService.cs

@@ -13,6 +13,7 @@ using System.Threading.Tasks;
 using CommonIO;
 using MediaBrowser.Controller.Entities.Audio;
 using MediaBrowser.Controller.Entities.Movies;
+using MediaBrowser.Model.Providers;
 
 namespace MediaBrowser.Providers.Manager
 {
@@ -136,6 +137,11 @@ namespace MediaBrowser.Providers.Manager
                 {
                     var id = itemOfType.GetLookupInfo();
 
+                    if (refreshOptions.SearchResult != null)
+                    {
+                        ApplySearchResult(id, refreshOptions.SearchResult);
+                    }
+
                     //await FindIdentities(id, cancellationToken).ConfigureAwait(false);
                     id.IsAutomated = refreshOptions.IsAutomated;
 
@@ -207,6 +213,13 @@ namespace MediaBrowser.Providers.Manager
             return updateType;
         }
 
+        private void ApplySearchResult(ItemLookupInfo lookupInfo, RemoteSearchResult result)
+        {
+            lookupInfo.ProviderIds = result.ProviderIds;
+            lookupInfo.Name = result.Name;
+            lookupInfo.Year = result.ProductionYear;
+        }
+
         private async Task FindIdentities(TIdType id, CancellationToken cancellationToken)
         {
             try

+ 2 - 4
MediaBrowser.Providers/Omdb/OmdbItemProvider.cs

@@ -60,9 +60,8 @@ namespace MediaBrowser.Providers.Omdb
             return GetSearchResultsInternal(searchInfo, type, true, cancellationToken);
         }
 
-        private async Task<IEnumerable<RemoteSearchResult>> GetSearchResultsInternal(ItemLookupInfo searchInfo, string type, bool enableMultipleResults, CancellationToken cancellationToken)
+        private async Task<IEnumerable<RemoteSearchResult>> GetSearchResultsInternal(ItemLookupInfo searchInfo, string type, bool isSearch, CancellationToken cancellationToken)
         {
-            bool isSearch = false;
             var episodeSearchInfo = searchInfo as EpisodeInfo;
 
             var list = new List<RemoteSearchResult>();
@@ -95,10 +94,9 @@ namespace MediaBrowser.Providers.Omdb
                 }
 
                 // &s means search and returns a list of results as opposed to t
-                if (enableMultipleResults)
+                if (isSearch)
                 {
                     url += "&s=" + WebUtility.UrlEncode(name);
-                    isSearch = true;
                 }
                 else
                 {

+ 13 - 10
MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs

@@ -344,6 +344,19 @@ namespace MediaBrowser.Server.Implementations.HttpServer
                 LoggerUtils.LogRequest(_logger, urlToLog, httpReq.HttpMethod, httpReq.UserAgent);
             }
 
+            if (string.Equals(localPath, "/emby/", StringComparison.OrdinalIgnoreCase) ||
+                string.Equals(localPath, "/mediabrowser/", StringComparison.OrdinalIgnoreCase))
+            {
+                httpRes.RedirectToUrl(DefaultRedirectPath);
+                return Task.FromResult(true);
+            }
+            if (string.Equals(localPath, "/emby", StringComparison.OrdinalIgnoreCase) ||
+                string.Equals(localPath, "/mediabrowser", StringComparison.OrdinalIgnoreCase))
+            {
+                httpRes.RedirectToUrl("emby/" + DefaultRedirectPath);
+                return Task.FromResult(true);
+            }
+
             if (string.Equals(localPath, "/mediabrowser/", StringComparison.OrdinalIgnoreCase) ||
                 string.Equals(localPath, "/mediabrowser", StringComparison.OrdinalIgnoreCase) ||
                 localPath.IndexOf("mediabrowser/web", StringComparison.OrdinalIgnoreCase) != -1 ||
@@ -363,16 +376,6 @@ namespace MediaBrowser.Server.Implementations.HttpServer
                 }
             }
 
-            if (string.Equals(localPath, "/emby/", StringComparison.OrdinalIgnoreCase))
-            {
-                httpRes.RedirectToUrl(DefaultRedirectPath);
-                return Task.FromResult(true);
-            }
-            if (string.Equals(localPath, "/emby", StringComparison.OrdinalIgnoreCase))
-            {
-                httpRes.RedirectToUrl("emby/" + DefaultRedirectPath);
-                return Task.FromResult(true);
-            }
             if (string.Equals(localPath, "/web", StringComparison.OrdinalIgnoreCase))
             {
                 httpRes.RedirectToUrl(DefaultRedirectPath);

+ 1 - 1
MediaBrowser.Server.Implementations/LiveTv/TunerHosts/HdHomerun/HdHomerunHost.cs

@@ -75,7 +75,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.TunerHosts.HdHomerun
                     lineup = lineup.Where(i => i.Favorite).ToList();
                 }
 
-                return lineup;
+                return lineup.Where(i => !i.DRM).ToList();
             }
         }