aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2016-04-08 14:32:38 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2016-04-08 14:32:38 -0400
commite31aec4bc5bdda2731fcef9d1d85ccd0f41847f3 (patch)
tree9a50fca0c21ef0c03247a819bf6066c4ea23ab2f
parent3889bc0a115070892dcfb60fda7d8802d6edc242 (diff)
update metadata refresh
-rw-r--r--MediaBrowser.Controller/Channels/IChannelItem.cs11
-rw-r--r--MediaBrowser.Controller/Channels/IChannelMediaItem.cs18
-rw-r--r--MediaBrowser.Controller/Entities/BaseItem.cs3
-rw-r--r--MediaBrowser.Controller/Entities/IHasImages.cs5
-rw-r--r--MediaBrowser.Controller/Entities/IHasMetadata.cs2
-rw-r--r--MediaBrowser.Controller/MediaBrowser.Controller.csproj2
-rw-r--r--MediaBrowser.Controller/Providers/IHasItemChangeMonitor.cs3
-rw-r--r--MediaBrowser.Providers/Folders/DefaultImageProvider.cs2
-rw-r--r--MediaBrowser.Providers/Manager/MetadataService.cs76
-rw-r--r--MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs9
-rw-r--r--MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs6
-rw-r--r--MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs6
-rw-r--r--MediaBrowser.Providers/Photos/PhotoProvider.cs6
-rw-r--r--MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesImageProvider.cs4
-rw-r--r--MediaBrowser.Server.Implementations/Channels/ChannelImageProvider.cs2
-rw-r--r--MediaBrowser.Server.Implementations/Channels/ChannelManager.cs3
-rw-r--r--MediaBrowser.Server.Implementations/LiveTv/ChannelImageProvider.cs2
-rw-r--r--MediaBrowser.Server.Implementations/LiveTv/ProgramImageProvider.cs2
-rw-r--r--MediaBrowser.Server.Implementations/LiveTv/RecordingImageProvider.cs2
-rw-r--r--MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs23
20 files changed, 115 insertions, 72 deletions
diff --git a/MediaBrowser.Controller/Channels/IChannelItem.cs b/MediaBrowser.Controller/Channels/IChannelItem.cs
deleted file mode 100644
index 9b5f0359b..000000000
--- a/MediaBrowser.Controller/Channels/IChannelItem.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using MediaBrowser.Controller.Entities;
-
-namespace MediaBrowser.Controller.Channels
-{
- public interface IChannelItem : IHasImages, IHasTags
- {
- string ChannelId { get; set; }
-
- string ExternalId { get; set; }
- }
-}
diff --git a/MediaBrowser.Controller/Channels/IChannelMediaItem.cs b/MediaBrowser.Controller/Channels/IChannelMediaItem.cs
deleted file mode 100644
index 60a29da90..000000000
--- a/MediaBrowser.Controller/Channels/IChannelMediaItem.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using MediaBrowser.Model.Channels;
-using MediaBrowser.Model.Entities;
-using System.Collections.Generic;
-
-namespace MediaBrowser.Controller.Channels
-{
- public interface IChannelMediaItem : IChannelItem
- {
- long? RunTimeTicks { get; set; }
- string MediaType { get; }
-
- ChannelMediaContentType ContentType { get; set; }
-
- ExtraType? ExtraType { get; set; }
-
- List<ChannelMediaInfo> ChannelMediaSources { get; set; }
- }
-} \ No newline at end of file
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs
index ba5da03d1..29f416b8c 100644
--- a/MediaBrowser.Controller/Entities/BaseItem.cs
+++ b/MediaBrowser.Controller/Entities/BaseItem.cs
@@ -412,6 +412,9 @@ namespace MediaBrowser.Controller.Entities
[IgnoreDataMember]
public DateTime DateLastRefreshed { get; set; }
+ [IgnoreDataMember]
+ public DateTime? DateModifiedDuringLastRefresh { get; set; }
+
/// <summary>
/// The logger
/// </summary>
diff --git a/MediaBrowser.Controller/Entities/IHasImages.cs b/MediaBrowser.Controller/Entities/IHasImages.cs
index a38b7394d..897250caa 100644
--- a/MediaBrowser.Controller/Entities/IHasImages.cs
+++ b/MediaBrowser.Controller/Entities/IHasImages.cs
@@ -1,4 +1,5 @@
-using MediaBrowser.Controller.Providers;
+using System;
+using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
using System.Collections.Generic;
using System.Threading;
@@ -206,6 +207,8 @@ namespace MediaBrowser.Controller.Entities
/// <param name="image">The image.</param>
/// <param name="index">The index.</param>
void SetImage(ItemImageInfo image, int index);
+
+ DateTime? DateModifiedDuringLastRefresh { get; set; }
}
public static class HasImagesExtensions
diff --git a/MediaBrowser.Controller/Entities/IHasMetadata.cs b/MediaBrowser.Controller/Entities/IHasMetadata.cs
index 0e4ae04ff..1f680b35f 100644
--- a/MediaBrowser.Controller/Entities/IHasMetadata.cs
+++ b/MediaBrowser.Controller/Entities/IHasMetadata.cs
@@ -25,6 +25,8 @@ namespace MediaBrowser.Controller.Entities
/// <value>The date last saved.</value>
DateTime DateLastSaved { get; set; }
+ SourceType SourceType { get; set; }
+
/// <summary>
/// Gets or sets the date last refreshed.
/// </summary>
diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
index 6f429ed2f..235638b5f 100644
--- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj
+++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
@@ -85,10 +85,8 @@
<Compile Include="Channels\ChannelSearchInfo.cs" />
<Compile Include="Channels\ChannelVideoItem.cs" />
<Compile Include="Channels\IChannel.cs" />
- <Compile Include="Channels\IChannelItem.cs" />
<Compile Include="Channels\IChannelManager.cs" />
<Compile Include="Channels\Channel.cs" />
- <Compile Include="Channels\IChannelMediaItem.cs" />
<Compile Include="Channels\IHasCacheKey.cs" />
<Compile Include="Channels\IIndexableChannel.cs" />
<Compile Include="Channels\InternalAllChannelMediaQuery.cs" />
diff --git a/MediaBrowser.Controller/Providers/IHasItemChangeMonitor.cs b/MediaBrowser.Controller/Providers/IHasItemChangeMonitor.cs
index 4c7069dd6..9441c3ecd 100644
--- a/MediaBrowser.Controller/Providers/IHasItemChangeMonitor.cs
+++ b/MediaBrowser.Controller/Providers/IHasItemChangeMonitor.cs
@@ -8,9 +8,8 @@ namespace MediaBrowser.Controller.Providers
/// Determines whether the specified item has changed.
/// </summary>
/// <param name="item">The item.</param>
- /// <param name="status">The status.</param>
/// <param name="directoryService">The directory service.</param>
/// <returns><c>true</c> if the specified item has changed; otherwise, <c>false</c>.</returns>
- bool HasChanged(IHasMetadata item, MetadataStatus status, IDirectoryService directoryService);
+ bool HasChanged(IHasMetadata item, IDirectoryService directoryService);
}
} \ No newline at end of file
diff --git a/MediaBrowser.Providers/Folders/DefaultImageProvider.cs b/MediaBrowser.Providers/Folders/DefaultImageProvider.cs
index ee83efd26..afd8c583d 100644
--- a/MediaBrowser.Providers/Folders/DefaultImageProvider.cs
+++ b/MediaBrowser.Providers/Folders/DefaultImageProvider.cs
@@ -157,7 +157,7 @@ namespace MediaBrowser.Providers.Folders
});
}
- public bool HasChanged(IHasMetadata item, MetadataStatus status, IDirectoryService directoryService)
+ public bool HasChanged(IHasMetadata item, IDirectoryService directoryService)
{
return GetSupportedImages(item).Any(i => !item.HasImage(i));
}
diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs
index 8f7c93f32..47783ebc6 100644
--- a/MediaBrowser.Providers/Manager/MetadataService.cs
+++ b/MediaBrowser.Providers/Manager/MetadataService.cs
@@ -1,4 +1,5 @@
using MediaBrowser.Common.Extensions;
+using MediaBrowser.Common.IO;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
@@ -11,8 +12,11 @@ using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using CommonIO;
+using MediaBrowser.Controller.Channels;
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Entities.Movies;
+using MediaBrowser.Controller.LiveTv;
+using MediaBrowser.Controller.Playlists;
using MediaBrowser.Model.Providers;
namespace MediaBrowser.Providers.Manager
@@ -68,6 +72,11 @@ namespace MediaBrowser.Providers.Manager
result.ItemDateModified = item.DateModified;
+ if (EnableDateLastRefreshed(item))
+ {
+ return Task.FromResult(true);
+ }
+
return ProviderRepo.SaveMetadataStatus(result, CancellationToken.None);
}
@@ -83,7 +92,22 @@ namespace MediaBrowser.Providers.Manager
return new MetadataStatus { ItemId = item.Id };
}
- return ProviderRepo.GetMetadataStatus(item.Id) ?? new MetadataStatus { ItemId = item.Id };
+ if (EnableDateLastRefreshed(item) && item.DateModifiedDuringLastRefresh.HasValue)
+ {
+ return new MetadataStatus
+ {
+ ItemId = item.Id,
+ DateLastImagesRefresh = item.DateLastRefreshed,
+ DateLastMetadataRefresh = item.DateLastRefreshed,
+ ItemDateModified = item.DateModifiedDuringLastRefresh.Value
+ };
+ }
+
+ var result = ProviderRepo.GetMetadataStatus(item.Id) ?? new MetadataStatus { ItemId = item.Id };
+
+ item.DateModifiedDuringLastRefresh = result.ItemDateModified;
+
+ return result;
}
public async Task<ItemUpdateType> RefreshMetadata(IHasMetadata item, MetadataRefreshOptions refreshOptions, CancellationToken cancellationToken)
@@ -119,13 +143,20 @@ namespace MediaBrowser.Providers.Manager
Item = itemOfType
};
+ bool hasRefreshedMetadata = false;
+ bool hasRefreshedImages = false;
+
// Next run metadata providers
if (refreshOptions.MetadataRefreshMode != MetadataRefreshMode.None)
{
var providers = GetProviders(item, refreshResult, refreshOptions)
.ToList();
- if (providers.Count > 0 || !refreshResult.DateLastMetadataRefresh.HasValue)
+ var dateLastRefresh = EnableDateLastRefreshed(item)
+ ? item.DateLastRefreshed
+ : refreshResult.DateLastMetadataRefresh ?? default(DateTime);
+
+ if (providers.Count > 0 || dateLastRefresh == default(DateTime))
{
if (item.BeforeMetadataRefresh())
{
@@ -151,6 +182,7 @@ namespace MediaBrowser.Providers.Manager
if (result.Failures == 0)
{
refreshResult.SetDateLastMetadataRefresh(DateTime.UtcNow);
+ hasRefreshedMetadata = true;
}
else
{
@@ -172,6 +204,7 @@ namespace MediaBrowser.Providers.Manager
if (result.Failures == 0)
{
refreshResult.SetDateLastImagesRefresh(DateTime.UtcNow);
+ hasRefreshedImages = true;
}
else
{
@@ -194,9 +227,15 @@ namespace MediaBrowser.Providers.Manager
updateType = updateType | ItemUpdateType.MetadataDownload;
}
- if (refreshOptions.MetadataRefreshMode >= MetadataRefreshMode.Default && refreshOptions.ImageRefreshMode >= ImageRefreshMode.Default)
+ if (hasRefreshedMetadata && hasRefreshedImages)
{
item.DateLastRefreshed = DateTime.UtcNow;
+ item.DateModifiedDuringLastRefresh = item.DateModified;
+ }
+ else
+ {
+ item.DateLastRefreshed = default(DateTime);
+ item.DateModifiedDuringLastRefresh = null;
}
// Save to database
@@ -254,7 +293,12 @@ namespace MediaBrowser.Providers.Manager
return true;
}
- if (item is BoxSet || (item is IItemByName && !(item is MusicArtist)))
+ if (item is BoxSet || item is IItemByName || item is Playlist)
+ {
+ return true;
+ }
+
+ if (item.SourceType != SourceType.Library)
{
return true;
}
@@ -364,8 +408,12 @@ namespace MediaBrowser.Providers.Manager
// Get providers to refresh
var providers = ((ProviderManager)ProviderManager).GetMetadataProviders<TItemType>(item).ToList();
+ var dateLastRefresh = EnableDateLastRefreshed(item)
+ ? item.DateLastRefreshed
+ : status.DateLastMetadataRefresh ?? default(DateTime);
+
// Run all if either of these flags are true
- var runAllProviders = options.ReplaceAllMetadata || options.MetadataRefreshMode == MetadataRefreshMode.FullRefresh || !status.DateLastMetadataRefresh.HasValue;
+ var runAllProviders = options.ReplaceAllMetadata || options.MetadataRefreshMode == MetadataRefreshMode.FullRefresh || dateLastRefresh == default(DateTime);
if (!runAllProviders)
{
@@ -384,7 +432,7 @@ namespace MediaBrowser.Providers.Manager
var hasFileChangeMonitor = i as IHasItemChangeMonitor;
if (hasFileChangeMonitor != null)
{
- return HasChanged(item, hasFileChangeMonitor, status, options.DirectoryService);
+ return HasChanged(item, hasFileChangeMonitor, options.DirectoryService);
}
return false;
@@ -429,8 +477,12 @@ namespace MediaBrowser.Providers.Manager
// Get providers to refresh
var providers = allImageProviders.Where(i => !(i is ILocalImageProvider)).ToList();
+ var dateLastImageRefresh = EnableDateLastRefreshed(item)
+ ? item.DateLastRefreshed
+ : status.DateLastImagesRefresh ?? default(DateTime);
+
// Run all if either of these flags are true
- var runAllProviders = options.ImageRefreshMode == ImageRefreshMode.FullRefresh || !status.DateLastImagesRefresh.HasValue;
+ var runAllProviders = options.ImageRefreshMode == ImageRefreshMode.FullRefresh || dateLastImageRefresh == default(DateTime);
if (!runAllProviders)
{
@@ -440,13 +492,13 @@ namespace MediaBrowser.Providers.Manager
var hasChangeMonitor = i as IHasChangeMonitor;
if (hasChangeMonitor != null)
{
- return HasChanged(item, hasChangeMonitor, status.DateLastImagesRefresh.Value, options.DirectoryService);
+ return HasChanged(item, hasChangeMonitor, dateLastImageRefresh, options.DirectoryService);
}
var hasFileChangeMonitor = i as IHasItemChangeMonitor;
if (hasFileChangeMonitor != null)
{
- return HasChanged(item, hasFileChangeMonitor, status, options.DirectoryService);
+ return HasChanged(item, hasFileChangeMonitor, options.DirectoryService);
}
return false;
@@ -558,7 +610,7 @@ namespace MediaBrowser.Providers.Manager
if (options.MetadataRefreshMode != MetadataRefreshMode.FullRefresh)
{
// If the local provider fails don't continue with remote providers because the user's saved metadata could be lost
- return refreshResult;
+ //return refreshResult;
}
}
}
@@ -738,11 +790,11 @@ namespace MediaBrowser.Providers.Manager
}
}
- private bool HasChanged(IHasMetadata item, IHasItemChangeMonitor changeMonitor, MetadataStatus status, IDirectoryService directoryService)
+ private bool HasChanged(IHasMetadata item, IHasItemChangeMonitor changeMonitor, IDirectoryService directoryService)
{
try
{
- var hasChanged = changeMonitor.HasChanged(item, status, directoryService);
+ var hasChanged = changeMonitor.HasChanged(item, directoryService);
//if (hasChanged)
//{
diff --git a/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs b/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs
index af610520f..aa495afbc 100644
--- a/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs
+++ b/MediaBrowser.Providers/MediaInfo/AudioImageProvider.cs
@@ -159,14 +159,11 @@ namespace MediaBrowser.Providers.MediaInfo
return item.LocationType == LocationType.FileSystem && audio != null && !audio.IsArchive;
}
- public bool HasChanged(IHasMetadata item, MetadataStatus status, IDirectoryService directoryService)
+ public bool HasChanged(IHasMetadata item, IDirectoryService directoryService)
{
- if (status.ItemDateModified.HasValue)
+ if (item.DateModifiedDuringLastRefresh.HasValue)
{
- if (status.ItemDateModified.Value != item.DateModified)
- {
- return true;
- }
+ return item.DateModifiedDuringLastRefresh.Value != item.DateModified;
}
return false;
diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs b/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs
index a2d15d863..9db4ab96e 100644
--- a/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs
+++ b/MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs
@@ -163,11 +163,11 @@ namespace MediaBrowser.Providers.MediaInfo
return prober.Probe(item, cancellationToken);
}
- public bool HasChanged(IHasMetadata item, MetadataStatus status, IDirectoryService directoryService)
+ public bool HasChanged(IHasMetadata item, IDirectoryService directoryService)
{
- if (status.ItemDateModified.HasValue)
+ if (item.DateModifiedDuringLastRefresh.HasValue)
{
- if (status.ItemDateModified.Value != item.DateModified)
+ if (item.DateModifiedDuringLastRefresh.Value != item.DateModified)
{
return true;
}
diff --git a/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs b/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs
index f3235a102..a5751da0a 100644
--- a/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs
+++ b/MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs
@@ -151,11 +151,11 @@ namespace MediaBrowser.Providers.MediaInfo
}
}
- public bool HasChanged(IHasMetadata item, MetadataStatus status, IDirectoryService directoryService)
+ public bool HasChanged(IHasMetadata item, IDirectoryService directoryService)
{
- if (status.ItemDateModified.HasValue)
+ if (item.DateModifiedDuringLastRefresh.HasValue)
{
- if (status.ItemDateModified.Value != item.DateModified)
+ if (item.DateModifiedDuringLastRefresh.Value != item.DateModified)
{
return true;
}
diff --git a/MediaBrowser.Providers/Photos/PhotoProvider.cs b/MediaBrowser.Providers/Photos/PhotoProvider.cs
index ef3144958..882363b2f 100644
--- a/MediaBrowser.Providers/Photos/PhotoProvider.cs
+++ b/MediaBrowser.Providers/Photos/PhotoProvider.cs
@@ -152,11 +152,11 @@ namespace MediaBrowser.Providers.Photos
get { return "Embedded Information"; }
}
- public bool HasChanged(IHasMetadata item, MetadataStatus status, IDirectoryService directoryService)
+ public bool HasChanged(IHasMetadata item, IDirectoryService directoryService)
{
- if (status.ItemDateModified.HasValue)
+ if (item.DateModifiedDuringLastRefresh.HasValue)
{
- return status.ItemDateModified.Value != item.DateModified;
+ return item.DateModifiedDuringLastRefresh.Value != item.DateModified;
}
return false;
diff --git a/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesImageProvider.cs b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesImageProvider.cs
index 011ed9ed0..d1cdc717e 100644
--- a/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesImageProvider.cs
+++ b/MediaBrowser.Providers/TV/TheTVDB/TvdbSeriesImageProvider.cs
@@ -332,7 +332,7 @@ namespace MediaBrowser.Providers.TV
});
}
- public bool HasChanged(IHasMetadata item, MetadataStatus status, IDirectoryService directoryService)
+ public bool HasChanged(IHasMetadata item, IDirectoryService directoryService)
{
if (!TvdbSeriesProvider.Current.GetTvDbOptions().EnableAutomaticUpdates)
{
@@ -346,7 +346,7 @@ namespace MediaBrowser.Providers.TV
var fileInfo = _fileSystem.GetFileInfo(imagesXmlPath);
- return fileInfo.Exists && _fileSystem.GetLastWriteTimeUtc(fileInfo) > (status.DateLastMetadataRefresh ?? DateTime.MinValue);
+ return fileInfo.Exists && _fileSystem.GetLastWriteTimeUtc(fileInfo) > item.DateLastRefreshed;
}
return false;
diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelImageProvider.cs b/MediaBrowser.Server.Implementations/Channels/ChannelImageProvider.cs
index f13c71c6d..c98f71ce2 100644
--- a/MediaBrowser.Server.Implementations/Channels/ChannelImageProvider.cs
+++ b/MediaBrowser.Server.Implementations/Channels/ChannelImageProvider.cs
@@ -47,7 +47,7 @@ namespace MediaBrowser.Server.Implementations.Channels
return ((ChannelManager)_channelManager).GetChannelProvider(channel);
}
- public bool HasChanged(IHasMetadata item, MetadataStatus status, IDirectoryService directoryService)
+ public bool HasChanged(IHasMetadata item, IDirectoryService directoryService)
{
return GetSupportedImages(item).Any(i => !item.HasImage(i));
}
diff --git a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs
index a206c1925..c9956c68a 100644
--- a/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs
+++ b/MediaBrowser.Server.Implementations/Channels/ChannelManager.cs
@@ -1406,7 +1406,8 @@ namespace MediaBrowser.Server.Implementations.Channels
throw new ArgumentNullException("channel");
}
- var result = GetAllChannels().FirstOrDefault(i => string.Equals(GetInternalChannelId(i.Name).ToString("N"), channel.ChannelId, StringComparison.OrdinalIgnoreCase) || string.Equals(i.Name, channel.Name, StringComparison.OrdinalIgnoreCase));
+ var result = GetAllChannels()
+ .FirstOrDefault(i => string.Equals(GetInternalChannelId(i.Name).ToString("N"), channel.ChannelId, StringComparison.OrdinalIgnoreCase) || string.Equals(i.Name, channel.Name, StringComparison.OrdinalIgnoreCase));
if (result == null)
{
diff --git a/MediaBrowser.Server.Implementations/LiveTv/ChannelImageProvider.cs b/MediaBrowser.Server.Implementations/LiveTv/ChannelImageProvider.cs
index 24d38a63e..dccc7aa93 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/ChannelImageProvider.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/ChannelImageProvider.cs
@@ -77,7 +77,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
get { return 0; }
}
- public bool HasChanged(IHasMetadata item, MetadataStatus status, IDirectoryService directoryService)
+ public bool HasChanged(IHasMetadata item, IDirectoryService directoryService)
{
return GetSupportedImages(item).Any(i => !item.HasImage(i));
}
diff --git a/MediaBrowser.Server.Implementations/LiveTv/ProgramImageProvider.cs b/MediaBrowser.Server.Implementations/LiveTv/ProgramImageProvider.cs
index ab8ec720b..3f0538bd0 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/ProgramImageProvider.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/ProgramImageProvider.cs
@@ -74,7 +74,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
}
}
- public bool HasChanged(IHasMetadata item, MetadataStatus status, IDirectoryService directoryService)
+ public bool HasChanged(IHasMetadata item, IDirectoryService directoryService)
{
var liveTvItem = item as LiveTvProgram;
diff --git a/MediaBrowser.Server.Implementations/LiveTv/RecordingImageProvider.cs b/MediaBrowser.Server.Implementations/LiveTv/RecordingImageProvider.cs
index fce3223ea..25678c29d 100644
--- a/MediaBrowser.Server.Implementations/LiveTv/RecordingImageProvider.cs
+++ b/MediaBrowser.Server.Implementations/LiveTv/RecordingImageProvider.cs
@@ -68,7 +68,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
get { return 0; }
}
- public bool HasChanged(IHasMetadata item, MetadataStatus status, IDirectoryService directoryService)
+ public bool HasChanged(IHasMetadata item, IDirectoryService directoryService)
{
var liveTvItem = item as ILiveTvRecording;
diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
index b6699d164..a30ff66df 100644
--- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
+++ b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs
@@ -223,6 +223,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
_connection.AddColumn(Logger, "TypedBaseItems", "TrailerTypes", "Text");
_connection.AddColumn(Logger, "TypedBaseItems", "CriticRating", "Float");
_connection.AddColumn(Logger, "TypedBaseItems", "CriticRatingSummary", "Text");
+ _connection.AddColumn(Logger, "TypedBaseItems", "DateModifiedDuringLastRefresh", "DATETIME");
PrepareStatements();
@@ -355,7 +356,8 @@ namespace MediaBrowser.Server.Implementations.Persistence
"Studios",
"Tags",
"SourceType",
- "TrailerTypes"
+ "TrailerTypes",
+ "DateModifiedDuringLastRefresh"
};
private readonly string[] _mediaStreamSaveColumns =
@@ -459,7 +461,8 @@ namespace MediaBrowser.Server.Implementations.Persistence
"SourceType",
"TrailerTypes",
"CriticRating",
- "CriticRatingSummary"
+ "CriticRatingSummary",
+ "DateModifiedDuringLastRefresh"
};
_saveItemCommand = _connection.CreateCommand();
_saveItemCommand.CommandText = "replace into TypedBaseItems (" + string.Join(",", saveColumns.ToArray()) + ") values (";
@@ -752,7 +755,16 @@ namespace MediaBrowser.Server.Implementations.Persistence
_saveItemCommand.GetParameter(index++).Value = item.CriticRating;
_saveItemCommand.GetParameter(index++).Value = item.CriticRatingSummary;
-
+
+ if (!item.DateModifiedDuringLastRefresh.HasValue || item.DateModifiedDuringLastRefresh.Value == default(DateTime))
+ {
+ _saveItemCommand.GetParameter(index++).Value = null;
+ }
+ else
+ {
+ _saveItemCommand.GetParameter(index++).Value = item.DateModifiedDuringLastRefresh.Value;
+ }
+
_saveItemCommand.Transaction = transaction;
_saveItemCommand.ExecuteNonQuery();
@@ -1125,6 +1137,11 @@ namespace MediaBrowser.Server.Implementations.Persistence
}
}
+ if (!reader.IsDBNull(51))
+ {
+ item.DateModifiedDuringLastRefresh = reader.GetDateTime(51).ToUniversalTime();
+ }
+
return item;
}