handle year in name when searching

This commit is contained in:
Luke Pulverenti
2014-02-13 23:00:13 -05:00
parent 58a46171ab
commit a4b40ad9d9
21 changed files with 2761 additions and 227 deletions

View File

@@ -195,7 +195,7 @@ namespace MediaBrowser.Providers.Manager
var currentItem = item;
var providersWithChanges = providers.OfType<IHasChangeMonitor>()
.Where(i => i.HasChanged(currentItem, options.DirectoryService, currentItem.DateLastSaved))
.Where(i => HasChanged(currentItem, i, currentItem.DateLastSaved, options.DirectoryService))
.Cast<IMetadataProvider<TItemType>>()
.ToList();
@@ -242,11 +242,8 @@ namespace MediaBrowser.Providers.Manager
if (!runAllProviders)
{
// Avoid implicitly captured closure
var currentItem = item;
providers = providers.OfType<IHasChangeMonitor>()
.Where(i => i.HasChanged(currentItem, options.DirectoryService, dateLastImageRefresh.Value))
.Where(i => HasChanged(item, i, dateLastImageRefresh.Value, options.DirectoryService))
.Cast<IImageProvider>()
.ToList();
}
@@ -438,6 +435,19 @@ namespace MediaBrowser.Providers.Manager
return 0;
}
}
private bool HasChanged(IHasMetadata item, IHasChangeMonitor changeMonitor, DateTime date, IDirectoryService directoryService)
{
try
{
return changeMonitor.HasChanged(item, directoryService, date);
}
catch (Exception ex)
{
Logger.ErrorException("Error in {0}.HasChanged", ex, changeMonitor.GetType().Name);
return false;
}
}
}
public class RefreshResult

View File

@@ -572,11 +572,6 @@ namespace MediaBrowser.Providers.Manager
{
var type = item.GetType().Name;
if (item is Trailer)
{
type = typeof(Movie).Name;
}
return ConfigurationManager.Configuration.MetadataOptions
.FirstOrDefault(i => string.Equals(i.ItemType, type, StringComparison.OrdinalIgnoreCase)) ??
new MetadataOptions();

View File

@@ -48,6 +48,11 @@ namespace MediaBrowser.Providers.Movies
{
var name = idInfo.Name;
var year = idInfo.Year;
int? yearInName = null;
NameParser.ParseName(name, out name, out yearInName);
year = year ?? yearInName;
_logger.Info("MovieDbProvider: Finding id for item: " + name);
var language = idInfo.MetadataLanguage.ToLower();

View File

@@ -56,6 +56,18 @@ namespace MediaBrowser.Providers.TV
if (string.IsNullOrEmpty(seriesId))
{
seriesId = await FindSeries(itemId.Name, cancellationToken).ConfigureAwait(false);
if (string.IsNullOrEmpty(seriesId))
{
int? yearInName = null;
string nameWithoutYear;
NameParser.ParseName(itemId.Name, out nameWithoutYear, out yearInName);
if (!string.IsNullOrEmpty(nameWithoutYear) && !string.Equals(nameWithoutYear, itemId.Name, StringComparison.OrdinalIgnoreCase))
{
seriesId = await FindSeries(nameWithoutYear, cancellationToken).ConfigureAwait(false);
}
}
}
cancellationToken.ThrowIfCancellationRequested();
@@ -248,16 +260,6 @@ namespace MediaBrowser.Providers.TV
}
}
// Try stripping off the year if it was supplied
var parenthIndex = name.LastIndexOf('(');
if (parenthIndex != -1)
{
var newName = name.Substring(0, parenthIndex);
return await FindSeries(newName, cancellationToken);
}
_logger.Info("TVDb Provider - Could not find " + name + ". Check name on Thetvdb.org.");
return null;
}