aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2015-12-03 12:03:47 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2015-12-03 12:03:47 -0500
commit00bcbfa958a202ca5556c72bea05300ba8004e3e (patch)
tree67f44010cb3c99a3d6b81153d426912f0718e525
parent6c0743a70dfa11bf8603243b27de2aaecb102962 (diff)
update providers
-rw-r--r--MediaBrowser.Providers/Manager/MetadataService.cs47
-rw-r--r--MediaBrowser.Server.Implementations/Dto/DtoService.cs8
-rw-r--r--MediaBrowser.Server.Implementations/Persistence/SqliteProviderInfoRepository.cs42
-rw-r--r--MediaBrowser.Server.Implementations/Persistence/SqliteUserRepository.cs7
-rw-r--r--MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs20
-rw-r--r--MediaBrowser.Server.Implementations/Photos/PhotoAlbumImageProvider.cs19
-rw-r--r--MediaBrowser.Server.Implementations/Sync/MediaSync.cs2
-rw-r--r--MediaBrowser.Server.Implementations/Sync/SyncManager.cs1
-rw-r--r--MediaBrowser.Server.Implementations/Sync/SyncRepository.cs85
-rw-r--r--MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs4
-rw-r--r--MediaBrowser.Server.Startup.Common/ApplicationHost.cs2
11 files changed, 99 insertions, 138 deletions
diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs
index 3ed34e5be..f80b3f14d 100644
--- a/MediaBrowser.Providers/Manager/MetadataService.cs
+++ b/MediaBrowser.Providers/Manager/MetadataService.cs
@@ -50,12 +50,6 @@ namespace MediaBrowser.Providers.Manager
protected Task SaveProviderResult(TItemType item, MetadataStatus result, IDirectoryService directoryService)
{
result.ItemId = item.Id;
- result.ItemName = item.Name;
- result.ItemType = item.GetType().Name;
-
- var series = item as IHasSeries;
-
- result.SeriesName = series == null ? null : series.SeriesName;
//var locationType = item.LocationType;
@@ -99,7 +93,6 @@ namespace MediaBrowser.Providers.Manager
var updateType = ItemUpdateType.None;
var refreshResult = GetLastResult(item);
- refreshResult.LastErrorMessage = string.Empty;
var itemImageProvider = new ItemImageProvider(Logger, ProviderManager, ServerConfigurationManager, FileSystem);
var localImagesFailed = false;
@@ -119,7 +112,6 @@ namespace MediaBrowser.Providers.Manager
{
localImagesFailed = true;
Logger.ErrorException("Error validating images for {0}", ex, item.Path ?? item.Name ?? "Unknown name");
- refreshResult.AddStatus(ex.Message);
}
var metadataResult = new MetadataResult<TItemType>
@@ -150,7 +142,6 @@ namespace MediaBrowser.Providers.Manager
var result = await RefreshWithProviders(metadataResult, id, refreshOptions, providers, itemImageProvider, cancellationToken).ConfigureAwait(false);
updateType = updateType | result.UpdateType;
- refreshResult.AddStatus(result.ErrorMessage);
if (result.Failures == 0)
{
refreshResult.SetDateLastMetadataRefresh(DateTime.UtcNow);
@@ -172,7 +163,6 @@ namespace MediaBrowser.Providers.Manager
var result = await itemImageProvider.RefreshImages(itemOfType, providers, refreshOptions, config, cancellationToken).ConfigureAwait(false);
updateType = updateType | result.UpdateType;
- refreshResult.AddStatus(result.ErrorMessage);
if (result.Failures == 0)
{
refreshResult.SetDateLastImagesRefresh(DateTime.UtcNow);
@@ -231,22 +221,32 @@ namespace MediaBrowser.Providers.Manager
private DateTime GetLastRefreshDate(IHasMetadata item)
{
- if (item.DateLastRefreshed != default(DateTime))
+ if (EnableDateLastRefreshed(item))
{
return item.DateLastRefreshed;
}
+ return item.DateLastSaved;
+ }
+
+ private bool EnableDateLastRefreshed(IHasMetadata item)
+ {
if (ServerConfigurationManager.Configuration.EnableDateLastRefresh)
{
- return item.DateLastRefreshed;
+ return true;
+ }
+
+ if (item.DateLastRefreshed != default(DateTime))
+ {
+ return true;
}
if (item is BoxSet || (item is IItemByName && !(item is MusicArtist)))
{
- return item.DateLastRefreshed;
+ return true;
}
- return item.DateLastSaved;
+ return false;
}
protected async Task SaveItem(MetadataResult<TItemType> result, ItemUpdateType reason, CancellationToken cancellationToken)
@@ -668,7 +668,14 @@ namespace MediaBrowser.Providers.Manager
{
try
{
- return changeMonitor.HasChanged(item, status, directoryService);
+ var hasChanged = changeMonitor.HasChanged(item, status, directoryService);
+
+ //if (hasChanged)
+ //{
+ // Logger.Debug("{0} reports change to {1}", changeMonitor.GetType().Name, item.Path ?? item.Name);
+ //}
+
+ return hasChanged;
}
catch (Exception ex)
{
@@ -681,7 +688,15 @@ namespace MediaBrowser.Providers.Manager
{
try
{
- return changeMonitor.HasChanged(item, directoryService, date);
+ var hasChanged = changeMonitor.HasChanged(item, directoryService, date);
+
+ //if (hasChanged)
+ //{
+ // Logger.Debug("{0} reports change to {1} since {2}", changeMonitor.GetType().Name,
+ // item.Path ?? item.Name, date);
+ //}
+
+ return hasChanged;
}
catch (Exception ex)
{
diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
index 20e1eb543..bb7f818ba 100644
--- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs
+++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs
@@ -1765,14 +1765,6 @@ namespace MediaBrowser.Server.Implementations.Dto
return;
}
- if (fields.Contains(ItemFields.OriginalPrimaryImageAspectRatio))
- {
- if (size.Width > 0 && size.Height > 0)
- {
- dto.OriginalPrimaryImageAspectRatio = size.Width / size.Height;
- }
- }
-
var supportedEnhancers = _imageProcessor.GetSupportedEnhancers(item, ImageType.Primary).ToList();
foreach (var enhancer in supportedEnhancers)
diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteProviderInfoRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteProviderInfoRepository.cs
index e7853b458..dbceda727 100644
--- a/MediaBrowser.Server.Implementations/Persistence/SqliteProviderInfoRepository.cs
+++ b/MediaBrowser.Server.Implementations/Persistence/SqliteProviderInfoRepository.cs
@@ -47,7 +47,7 @@ namespace MediaBrowser.Server.Implementations.Persistence
string[] queries = {
- "create table if not exists MetadataStatus (ItemId GUID PRIMARY KEY, ItemName TEXT, ItemType TEXT, SeriesName TEXT, DateLastMetadataRefresh datetime, DateLastImagesRefresh datetime, LastErrorMessage TEXT, ItemDateModified DateTimeNull)",
+ "create table if not exists MetadataStatus (ItemId GUID PRIMARY KEY, DateLastMetadataRefresh datetime, DateLastImagesRefresh datetime, ItemDateModified DateTimeNull)",
"create index if not exists idx_MetadataStatus on MetadataStatus(ItemId)",
//pragmas
@@ -66,12 +66,8 @@ namespace MediaBrowser.Server.Implementations.Persistence
private static readonly string[] StatusColumns =
{
"ItemId",
- "ItemName",
- "ItemType",
- "SeriesName",
"DateLastMetadataRefresh",
"DateLastImagesRefresh",
- "LastErrorMessage",
"ItemDateModified"
};
@@ -160,37 +156,17 @@ namespace MediaBrowser.Server.Implementations.Persistence
if (!reader.IsDBNull(1))
{
- result.ItemName = reader.GetString(1);
+ result.DateLastMetadataRefresh = reader.GetDateTime(1).ToUniversalTime();
}
if (!reader.IsDBNull(2))
{
- result.ItemName = reader.GetString(2);
+ result.DateLastImagesRefresh = reader.GetDateTime(2).ToUniversalTime();
}
if (!reader.IsDBNull(3))
{
- result.SeriesName = reader.GetString(3);
- }
-
- if (!reader.IsDBNull(4))
- {
- result.DateLastMetadataRefresh = reader.GetDateTime(4).ToUniversalTime();
- }
-
- if (!reader.IsDBNull(5))
- {
- result.DateLastImagesRefresh = reader.GetDateTime(5).ToUniversalTime();
- }
-
- if (!reader.IsDBNull(6))
- {
- result.LastErrorMessage = reader.GetString(6);
- }
-
- if (!reader.IsDBNull(7))
- {
- result.ItemDateModified = reader.GetDateTime(7).ToUniversalTime();
+ result.ItemDateModified = reader.GetDateTime(3).ToUniversalTime();
}
return result;
@@ -214,13 +190,9 @@ namespace MediaBrowser.Server.Implementations.Persistence
transaction = _connection.BeginTransaction();
_saveStatusCommand.GetParameter(0).Value = status.ItemId;
- _saveStatusCommand.GetParameter(1).Value = status.ItemName;
- _saveStatusCommand.GetParameter(2).Value = status.ItemType;
- _saveStatusCommand.GetParameter(3).Value = status.SeriesName;
- _saveStatusCommand.GetParameter(4).Value = status.DateLastMetadataRefresh;
- _saveStatusCommand.GetParameter(5).Value = status.DateLastImagesRefresh;
- _saveStatusCommand.GetParameter(6).Value = status.LastErrorMessage;
- _saveStatusCommand.GetParameter(7).Value = status.ItemDateModified;
+ _saveStatusCommand.GetParameter(1).Value = status.DateLastMetadataRefresh;
+ _saveStatusCommand.GetParameter(2).Value = status.DateLastImagesRefresh;
+ _saveStatusCommand.GetParameter(3).Value = status.ItemDateModified;
_saveStatusCommand.Transaction = transaction;
diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteUserRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteUserRepository.cs
index ad784ae5d..9bd7e47f3 100644
--- a/MediaBrowser.Server.Implementations/Persistence/SqliteUserRepository.cs
+++ b/MediaBrowser.Server.Implementations/Persistence/SqliteUserRepository.cs
@@ -144,15 +144,18 @@ namespace MediaBrowser.Server.Implementations.Persistence
{
using (var cmd = _connection.CreateCommand())
{
- cmd.CommandText = "select data from users";
+ cmd.CommandText = "select guid,data from users";
using (var reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess | CommandBehavior.SingleResult))
{
while (reader.Read())
{
- using (var stream = reader.GetMemoryStream(0))
+ var id = reader.GetGuid(0);
+
+ using (var stream = reader.GetMemoryStream(1))
{
var user = _jsonSerializer.DeserializeFromStream<User>(stream);
+ user.Id = id;
yield return user;
}
}
diff --git a/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs b/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs
index fd34e3248..c30d35ed2 100644
--- a/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs
+++ b/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs
@@ -285,5 +285,25 @@ namespace MediaBrowser.Server.Implementations.Photos
return 0;
}
}
+
+ protected async Task<string> CreateSingleImage(List<BaseItem> itemsWithImages, string outputPathWithoutExtension, ImageType imageType)
+ {
+ var image = itemsWithImages
+ .Where(i => i.HasImage(imageType) && i.GetImageInfo(imageType, 0).IsLocalFile && Path.HasExtension(i.GetImagePath(imageType)))
+ .Select(i => i.GetImagePath(imageType))
+ .FirstOrDefault();
+
+ if (string.IsNullOrWhiteSpace(image))
+ {
+ return null;
+ }
+
+ var ext = Path.GetExtension(image);
+
+ var outputPath = Path.ChangeExtension(outputPathWithoutExtension, ext);
+ File.Copy(image, outputPath);
+
+ return outputPath;
+ }
}
}
diff --git a/MediaBrowser.Server.Implementations/Photos/PhotoAlbumImageProvider.cs b/MediaBrowser.Server.Implementations/Photos/PhotoAlbumImageProvider.cs
index 3abb7e70e..56a174756 100644
--- a/MediaBrowser.Server.Implementations/Photos/PhotoAlbumImageProvider.cs
+++ b/MediaBrowser.Server.Implementations/Photos/PhotoAlbumImageProvider.cs
@@ -26,24 +26,9 @@ namespace MediaBrowser.Server.Implementations.Photos
return Task.FromResult(items);
}
- protected override async Task<string> CreateImage(IHasImages item, List<BaseItem> itemsWithImages, string outputPathWithoutExtension, ImageType imageType, int imageIndex)
+ protected override Task<string> CreateImage(IHasImages item, List<BaseItem> itemsWithImages, string outputPathWithoutExtension, ImageType imageType, int imageIndex)
{
- var image = itemsWithImages
- .Where(i => i.HasImage(ImageType.Primary) && i.GetImageInfo(ImageType.Primary, 0).IsLocalFile && Path.HasExtension(i.GetImagePath(ImageType.Primary)))
- .Select(i => i.GetImagePath(ImageType.Primary))
- .FirstOrDefault();
-
- if (string.IsNullOrWhiteSpace(image))
- {
- return null;
- }
-
- var ext = Path.GetExtension(image);
-
- var outputPath = Path.ChangeExtension(outputPathWithoutExtension, ext);
- File.Copy(image, outputPath);
-
- return outputPath;
+ return CreateSingleImage(itemsWithImages, outputPathWithoutExtension, ImageType.Primary);
}
}
}
diff --git a/MediaBrowser.Server.Implementations/Sync/MediaSync.cs b/MediaBrowser.Server.Implementations/Sync/MediaSync.cs
index cff72ae58..fd2f8ae8d 100644
--- a/MediaBrowser.Server.Implementations/Sync/MediaSync.cs
+++ b/MediaBrowser.Server.Implementations/Sync/MediaSync.cs
@@ -66,7 +66,7 @@ namespace MediaBrowser.Server.Implementations.Sync
// Do the data sync twice so the server knows what was removed from the device
await SyncData(provider, dataProvider, serverId, target, cancellationToken).ConfigureAwait(false);
-
+
progress.Report(100);
}
diff --git a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs
index c715c3f50..db6a753b7 100644
--- a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs
+++ b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs
@@ -640,7 +640,6 @@ namespace MediaBrowser.Server.Implementations.Sync
dtoOptions.Fields.Remove(ItemFields.MediaStreams);
dtoOptions.Fields.Remove(ItemFields.IndexOptions);
dtoOptions.Fields.Remove(ItemFields.MediaSourceCount);
- dtoOptions.Fields.Remove(ItemFields.OriginalPrimaryImageAspectRatio);
dtoOptions.Fields.Remove(ItemFields.Path);
dtoOptions.Fields.Remove(ItemFields.SeriesGenres);
dtoOptions.Fields.Remove(ItemFields.Settings);
diff --git a/MediaBrowser.Server.Implementations/Sync/SyncRepository.cs b/MediaBrowser.Server.Implementations/Sync/SyncRepository.cs
index 75c929016..d266a534d 100644
--- a/MediaBrowser.Server.Implementations/Sync/SyncRepository.cs
+++ b/MediaBrowser.Server.Implementations/Sync/SyncRepository.cs
@@ -17,12 +17,9 @@ using System.Threading.Tasks;
namespace MediaBrowser.Server.Implementations.Sync
{
- public class SyncRepository : ISyncRepository, IDisposable
+ public class SyncRepository : BaseSqliteRepository, ISyncRepository
{
private IDbConnection _connection;
- private readonly ILogger _logger;
- private readonly SemaphoreSlim _writeLock = new SemaphoreSlim(1, 1);
- private readonly IServerApplicationPaths _appPaths;
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
private IDbCommand _insertJobCommand;
@@ -34,19 +31,20 @@ namespace MediaBrowser.Server.Implementations.Sync
private IDbCommand _updateJobItemCommand;
private readonly IJsonSerializer _json;
+ private readonly IServerApplicationPaths _appPaths;
- public SyncRepository(ILogger logger, IServerApplicationPaths appPaths, IJsonSerializer json)
+ public SyncRepository(ILogManager logManager, IJsonSerializer json, IServerApplicationPaths appPaths)
+ : base(logManager)
{
- _logger = logger;
- _appPaths = appPaths;
_json = json;
+ _appPaths = appPaths;
}
public async Task Initialize()
{
var dbFile = Path.Combine(_appPaths.DataPath, "sync14.db");
- _connection = await SqliteExtensions.ConnectToDb(dbFile, _logger).ConfigureAwait(false);
+ _connection = await SqliteExtensions.ConnectToDb(dbFile, Logger).ConfigureAwait(false);
string[] queries = {
@@ -62,10 +60,10 @@ namespace MediaBrowser.Server.Implementations.Sync
"pragma shrink_memory"
};
- _connection.RunQueries(queries, _logger);
+ _connection.RunQueries(queries, Logger);
- _connection.AddColumn(_logger, "SyncJobs", "Profile", "TEXT");
- _connection.AddColumn(_logger, "SyncJobs", "Bitrate", "INT");
+ _connection.AddColumn(Logger, "SyncJobs", "Profile", "TEXT");
+ _connection.AddColumn(Logger, "SyncJobs", "Bitrate", "INT");
PrepareStatements();
}
@@ -298,7 +296,7 @@ namespace MediaBrowser.Server.Implementations.Sync
CheckDisposed();
- await _writeLock.WaitAsync().ConfigureAwait(false);
+ await WriteLock.WaitAsync().ConfigureAwait(false);
IDbTransaction transaction = null;
@@ -344,7 +342,7 @@ namespace MediaBrowser.Server.Implementations.Sync
}
catch (Exception e)
{
- _logger.ErrorException("Failed to save record:", e);
+ Logger.ErrorException("Failed to save record:", e);
if (transaction != null)
{
@@ -360,7 +358,7 @@ namespace MediaBrowser.Server.Implementations.Sync
transaction.Dispose();
}
- _writeLock.Release();
+ WriteLock.Release();
}
}
@@ -373,7 +371,7 @@ namespace MediaBrowser.Server.Implementations.Sync
CheckDisposed();
- await _writeLock.WaitAsync().ConfigureAwait(false);
+ await WriteLock.WaitAsync().ConfigureAwait(false);
IDbTransaction transaction = null;
@@ -405,7 +403,7 @@ namespace MediaBrowser.Server.Implementations.Sync
}
catch (Exception e)
{
- _logger.ErrorException("Failed to save record:", e);
+ Logger.ErrorException("Failed to save record:", e);
if (transaction != null)
{
@@ -421,7 +419,7 @@ namespace MediaBrowser.Server.Implementations.Sync
transaction.Dispose();
}
- _writeLock.Release();
+ WriteLock.Release();
}
}
@@ -656,7 +654,7 @@ namespace MediaBrowser.Server.Implementations.Sync
CheckDisposed();
- await _writeLock.WaitAsync().ConfigureAwait(false);
+ await WriteLock.WaitAsync().ConfigureAwait(false);
IDbTransaction transaction = null;
@@ -699,7 +697,7 @@ namespace MediaBrowser.Server.Implementations.Sync
}
catch (Exception e)
{
- _logger.ErrorException("Failed to save record:", e);
+ Logger.ErrorException("Failed to save record:", e);
if (transaction != null)
{
@@ -715,7 +713,7 @@ namespace MediaBrowser.Server.Implementations.Sync
transaction.Dispose();
}
- _writeLock.Release();
+ WriteLock.Release();
}
}
@@ -802,15 +800,6 @@ namespace MediaBrowser.Server.Implementations.Sync
return item;
}
- /// <summary>
- /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
- /// </summary>
- public void Dispose()
- {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
-
private bool _disposed;
private void CheckDisposed()
{
@@ -820,38 +809,26 @@ namespace MediaBrowser.Server.Implementations.Sync
}
}
- private readonly object _disposeLock = new object();
-
- /// <summary>
- /// Releases unmanaged and - optionally - managed resources.
- /// </summary>
- /// <param name="dispose"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
- protected virtual void Dispose(bool dispose)
+ protected override void Dispose(bool dispose)
{
if (dispose)
{
_disposed = true;
+ }
+ base.Dispose(dispose);
+ }
- try
- {
- lock (_disposeLock)
- {
- if (_connection != null)
- {
- if (_connection.IsOpen())
- {
- _connection.Close();
- }
-
- _connection.Dispose();
- _connection = null;
- }
- }
- }
- catch (Exception ex)
+ protected override void CloseConnection()
+ {
+ if (_connection != null)
+ {
+ if (_connection.IsOpen())
{
- _logger.ErrorException("Error disposing database", ex);
+ _connection.Close();
}
+
+ _connection.Dispose();
+ _connection = null;
}
}
}
diff --git a/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs b/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs
index cdffadcd7..167b5706e 100644
--- a/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs
+++ b/MediaBrowser.Server.Implementations/UserViews/DynamicImageProvider.cs
@@ -54,9 +54,7 @@ namespace MediaBrowser.Server.Implementations.UserViews
return new List<BaseItem>();
}
- if (string.Equals(view.ViewType, SpecialFolder.GameGenre, StringComparison.OrdinalIgnoreCase) ||
- string.Equals(view.ViewType, SpecialFolder.MusicGenre, StringComparison.OrdinalIgnoreCase) ||
- string.Equals(view.ViewType, SpecialFolder.MovieGenre, StringComparison.OrdinalIgnoreCase) ||
+ if (string.Equals(view.ViewType, SpecialFolder.MovieGenre, StringComparison.OrdinalIgnoreCase) ||
string.Equals(view.ViewType, SpecialFolder.TvGenre, StringComparison.OrdinalIgnoreCase))
{
var userItemsResult = await view.GetItems(new InternalItemsQuery
diff --git a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs
index 97a457a1b..99a7f0a15 100644
--- a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs
+++ b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs
@@ -680,7 +680,7 @@ namespace MediaBrowser.Server.Startup.Common
private async Task<ISyncRepository> GetSyncRepository()
{
- var repo = new SyncRepository(LogManager.GetLogger("SyncRepository"), ServerConfigurationManager.ApplicationPaths, JsonSerializer);
+ var repo = new SyncRepository(LogManager, JsonSerializer, ServerConfigurationManager.ApplicationPaths);
await repo.Initialize().ConfigureAwait(false);