boxset image fixes

This commit is contained in:
Luke Pulverenti
2015-10-14 01:02:30 -04:00
parent 574a796280
commit 1f7e1f5c4a
14 changed files with 97 additions and 24 deletions

View File

@@ -22,6 +22,17 @@ namespace MediaBrowser.Server.Implementations.Collections
{
}
protected override bool Supports(IHasImages item)
{
// Right now this is the only way to prevent this image from getting created ahead of internet image providers
if (!item.IsLocked)
{
return false;
}
return base.Supports(item);
}
protected override Task<List<BaseItem>> GetItemsWithImages(IHasImages item)
{
var playlist = (BoxSet)item;

View File

@@ -73,7 +73,7 @@ namespace MediaBrowser.Server.Implementations.Collections
try
{
_fileSystem.CreateDirectory(path);
_fileSystem.CreateDirectory(path);
var collection = new BoxSet
{
@@ -93,7 +93,12 @@ namespace MediaBrowser.Server.Implementations.Collections
if (options.ItemIdList.Count > 0)
{
await AddToCollection(collection.Id, options.ItemIdList, false);
await AddToCollection(collection.Id, options.ItemIdList, false, new MetadataRefreshOptions(_fileSystem)
{
// The initial adding of items is going to create a local metadata file
// This will cause internet metadata to be skipped as a result
MetadataRefreshMode = MetadataRefreshMode.FullRefresh
});
}
else
{
@@ -145,10 +150,10 @@ namespace MediaBrowser.Server.Implementations.Collections
public Task AddToCollection(Guid collectionId, IEnumerable<Guid> ids)
{
return AddToCollection(collectionId, ids, true);
return AddToCollection(collectionId, ids, true, new MetadataRefreshOptions(_fileSystem));
}
private async Task AddToCollection(Guid collectionId, IEnumerable<Guid> ids, bool fireEvent)
private async Task AddToCollection(Guid collectionId, IEnumerable<Guid> ids, bool fireEvent, MetadataRefreshOptions refreshOptions)
{
var collection = _libraryManager.GetItemById(collectionId) as BoxSet;
@@ -186,7 +191,7 @@ namespace MediaBrowser.Server.Implementations.Collections
await collection.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None).ConfigureAwait(false);
_providerManager.QueueRefresh(collection.Id, new MetadataRefreshOptions(_fileSystem));
_providerManager.QueueRefresh(collection.Id, refreshOptions);
if (fireEvent)
{

View File

@@ -1699,7 +1699,7 @@ namespace MediaBrowser.Server.Implementations.Library
if (!refresh)
{
refresh = (DateTime.UtcNow - item.DateLastSaved) >= _viewRefreshInterval;
refresh = (DateTime.UtcNow - item.DateLastRefreshed) >= _viewRefreshInterval;
}
if (refresh)
@@ -1796,7 +1796,7 @@ namespace MediaBrowser.Server.Implementations.Library
await item.UpdateToRepository(ItemUpdateType.MetadataEdit, cancellationToken).ConfigureAwait(false);
}
var refresh = isNew || (DateTime.UtcNow - item.DateLastSaved) >= _viewRefreshInterval;
var refresh = isNew || (DateTime.UtcNow - item.DateLastRefreshed) >= _viewRefreshInterval;
if (refresh)
{
@@ -1866,7 +1866,7 @@ namespace MediaBrowser.Server.Implementations.Library
await item.UpdateToRepository(ItemUpdateType.MetadataEdit, cancellationToken).ConfigureAwait(false);
}
var refresh = isNew || (DateTime.UtcNow - item.DateLastSaved) >= _viewRefreshInterval;
var refresh = isNew || (DateTime.UtcNow - item.DateLastRefreshed) >= _viewRefreshInterval;
if (refresh)
{

View File

@@ -706,7 +706,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
isNew = true;
}
item.ChannelId = _tvDtoService.GetInternalChannelId(serviceName, info.ChannelId).ToString("N");
item.CommunityRating = info.CommunityRating;
item.OfficialRating = info.OfficialRating;

View File

@@ -197,6 +197,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
_connection.AddColumn(_logger, "TypedBaseItems", "IsHD", "BIT");
_connection.AddColumn(_logger, "TypedBaseItems", "ExternalEtag", "Text");
_connection.AddColumn(_logger, "TypedBaseItems", "ExternalImagePath", "Text");
_connection.AddColumn(_logger, "TypedBaseItems", "DateLastRefreshed", "DATETIME");
PrepareStatements();
@@ -291,7 +292,8 @@ namespace MediaBrowser.Server.Implementations.Persistence
"PreferredMetadataCountryCode",
"IsHD",
"ExternalEtag",
"ExternalImagePath"
"ExternalImagePath",
"DateLastRefreshed"
};
private readonly string[] _mediaStreamSaveColumns =
@@ -378,7 +380,8 @@ namespace MediaBrowser.Server.Implementations.Persistence
"PreferredMetadataCountryCode",
"IsHD",
"ExternalEtag",
"ExternalImagePath"
"ExternalImagePath",
"DateLastRefreshed"
};
_saveItemCommand = _connection.CreateCommand();
_saveItemCommand.CommandText = "replace into TypedBaseItems (" + string.Join(",", saveColumns.ToArray()) + ") values (";
@@ -599,6 +602,15 @@ namespace MediaBrowser.Server.Implementations.Persistence
_saveItemCommand.GetParameter(index++).Value = item.ExternalEtag;
_saveItemCommand.GetParameter(index++).Value = item.ExternalImagePath;
if (item.DateLastRefreshed == default(DateTime))
{
_saveItemCommand.GetParameter(index++).Value = null;
}
else
{
_saveItemCommand.GetParameter(index++).Value = item.DateLastRefreshed;
}
_saveItemCommand.Transaction = transaction;
_saveItemCommand.ExecuteNonQuery();
@@ -820,6 +832,11 @@ namespace MediaBrowser.Server.Implementations.Persistence
item.ExternalImagePath = reader.GetString(23);
}
if (!reader.IsDBNull(24))
{
item.DateLastRefreshed = reader.GetDateTime(24).ToUniversalTime();
}
return item;
}

View File

@@ -33,7 +33,7 @@ namespace MediaBrowser.Server.Implementations.Photos
ImageProcessor = imageProcessor;
}
public virtual bool Supports(IHasImages item)
protected virtual bool Supports(IHasImages item)
{
return true;
}

View File

@@ -92,7 +92,7 @@ namespace MediaBrowser.Server.Implementations.UserViews
return GetFinalItems(items.Where(i => i.HasImage(ImageType.Primary) || i.HasImage(ImageType.Thumb)).ToList(), 8);
}
public override bool Supports(IHasImages item)
protected override bool Supports(IHasImages item)
{
return item is CollectionFolder;
}

View File

@@ -131,7 +131,7 @@ namespace MediaBrowser.Server.Implementations.UserViews
return GetFinalItems(items.Where(i => i.HasImage(ImageType.Primary)).ToList());
}
public override bool Supports(IHasImages item)
protected override bool Supports(IHasImages item)
{
var view = item as UserView;
if (view != null)