Initial metadata provider hook in. No refresh intelligence yet.

This commit is contained in:
ebr11 Eric Reed spam 2012-09-17 16:08:32 -04:00
parent 7186d66109
commit 946c0e8256
4 changed files with 53 additions and 48 deletions

View File

@ -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;
}
}
}

View File

@ -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>

View File

@ -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)
{

View File

@ -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;
}