Procházet zdrojové kódy

Initial metadata provider hook in. No refresh intelligence yet.

ebr11 Eric Reed spam před 12 roky
rodič
revize
946c0e8256

+ 48 - 0
MediaBrowser.Controller/Entities/BaseEntity.cs

@@ -1,4 +1,8 @@
 using System;
+using System.Collections.Generic;
+using System.Linq;
+using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.IO;
 
 namespace MediaBrowser.Controller.Entities
 {
@@ -11,6 +15,10 @@ namespace MediaBrowser.Controller.Entities
 
         public Guid Id { get; set; }
 
+        public string Path { get; set; }
+
+        public Folder Parent { get; set; }
+
         public string PrimaryImagePath { get; set; }
 
         public DateTime DateCreated { get; set; }
@@ -21,5 +29,45 @@ namespace MediaBrowser.Controller.Entities
         {
             return Name;
         }
+
+        protected ItemResolveEventArgs _resolveArgs;
+        /// <summary>
+        /// We attach these to the item so that we only ever have to hit the file system once
+        /// (this includes the children of the containing folder)
+        /// Use ResolveArgs.FileSystemChildren to check for the existence of files instead of File.Exists
+        /// </summary>
+        public ItemResolveEventArgs ResolveArgs
+        {
+            get
+            {
+                if (_resolveArgs == null)
+                {
+                    _resolveArgs = new ItemResolveEventArgs()
+                    {
+                        FileInfo = FileData.GetFileData(this.Path),
+                        Parent = this.Parent,
+                        Cancel = false,
+                        Path = this.Path
+                    };
+                    _resolveArgs = FileSystemHelper.FilterChildFileSystemEntries(_resolveArgs, (this.Parent != null && this.Parent.IsRoot));
+                }
+                return _resolveArgs;
+            }
+            set
+            {
+                _resolveArgs = value;
+            }
+        }
+
+        /// <summary>
+        /// Refresh metadata on us by execution our provider chain
+        /// </summary>
+        /// <returns>true if a provider reports we changed</returns>
+        public bool RefreshMetadata()
+        {
+            Kernel.Instance.ExecuteMetadataProviders(this).ConfigureAwait(false);
+            return true;
+        }
+
     }
 }

+ 0 - 42
MediaBrowser.Controller/Entities/BaseItem.cs

@@ -9,35 +9,6 @@ namespace MediaBrowser.Controller.Entities
 {
     public abstract class BaseItem : BaseEntity, IHasProviderIds
     {
-        protected ItemResolveEventArgs _resolveArgs;
-        /// <summary>
-        /// We attach these to the item so that we only ever have to hit the file system once
-        /// (this includes the children of the containing folder)
-        /// Use ResolveArgs.FileSystemChildren to check for the existence of files instead of File.Exists
-        /// </summary>
-        public ItemResolveEventArgs ResolveArgs
-        {
-            get
-            {
-                if (_resolveArgs == null)
-                {
-                    _resolveArgs = new ItemResolveEventArgs()
-                    {
-                        FileInfo = FileData.GetFileData(this.Path),
-                        Parent = this.Parent,
-                        Cancel = false,
-                        Path = this.Path
-                    };
-                    _resolveArgs = FileSystemHelper.FilterChildFileSystemEntries(_resolveArgs, (this.Parent != null && this.Parent.IsRoot));
-                }
-                return _resolveArgs;
-            }
-            set
-            {
-                _resolveArgs = value;
-            }
-        }
-
         public string SortName { get; set; }
 
         /// <summary>
@@ -45,10 +16,6 @@ namespace MediaBrowser.Controller.Entities
         /// </summary>
         public DateTime? PremiereDate { get; set; }
 
-        public string Path { get; set; }
-
-        public Folder Parent { get; set; }
-
         public string LogoImagePath { get; set; }
 
         public string ArtImagePath { get; set; }
@@ -177,15 +144,6 @@ namespace MediaBrowser.Controller.Entities
             return changed;
         }
 
-        /// <summary>
-        /// Refresh metadata on us by execution our provider chain
-        /// </summary>
-        /// <returns>true if a provider reports we changed</returns>
-        public bool RefreshMetadata()
-        {
-            return false;
-        }
-
         /// <summary>
         /// Determines if the item is considered new based on user settings
         /// </summary>

+ 4 - 5
MediaBrowser.Controller/Kernel.cs

@@ -118,9 +118,6 @@ namespace MediaBrowser.Controller
             //watch the root folder children for changes
             RootFolder.ChildrenChanged += RootFolder_ChildrenChanged;
 
-            System.Threading.Thread.Sleep(25000);
-            var allChildren = RootFolder.RecursiveChildren;
-            Logger.LogInfo(string.Format("Loading complete.  Movies: {0} Episodes: {1}", allChildren.OfType<Entities.Movies.Movie>().Count(), allChildren.OfType<Entities.TV.Episode>().Count()));
         }
 
         protected override void OnComposablePartsLoaded()
@@ -180,6 +177,8 @@ namespace MediaBrowser.Controller
             //re-start the directory watchers
             DirectoryWatchers.Stop();
             DirectoryWatchers.Start();
+            var allChildren = RootFolder.RecursiveChildren;
+            Logger.LogInfo(string.Format("Loading complete.  Movies: {0} Episodes: {1}", allChildren.OfType<Entities.Movies.Movie>().Count(), allChildren.OfType<Entities.TV.Episode>().Count()));
         }
 
         /// <summary>
@@ -328,7 +327,7 @@ namespace MediaBrowser.Controller
         /// <summary>
         /// Runs all metadata providers for an entity
         /// </summary>
-        internal async Task ExecuteMetadataProviders(BaseEntity item, ItemResolveEventArgs args, bool allowInternetProviders = true)
+        internal async Task ExecuteMetadataProviders(BaseEntity item, bool allowInternetProviders = true)
         {
             // Run them sequentially in order of priority
             for (int i = 0; i < MetadataProviders.Length; i++)
@@ -349,7 +348,7 @@ namespace MediaBrowser.Controller
 
                 try
                 {
-                    await provider.FetchAsync(item, args).ConfigureAwait(false);
+                    await provider.FetchAsync(item, item.ResolveArgs).ConfigureAwait(false);
                 }
                 catch (Exception ex)
                 {

+ 1 - 1
MediaBrowser.Controller/Library/ItemController.cs

@@ -217,7 +217,7 @@ namespace MediaBrowser.Controller.Library
             args.FileInfo = FileData.GetFileData(path);
             args.FileSystemChildren = FileData.GetFileSystemEntries(path, "*").ToArray();
 
-            await Kernel.Instance.ExecuteMetadataProviders(item, args).ConfigureAwait(false);
+            await Kernel.Instance.ExecuteMetadataProviders(item).ConfigureAwait(false);
 
             return item;
         }