diff options
| author | Jesús Higueras <jesus@dabbleam.com> | 2020-03-25 17:26:53 +0100 |
|---|---|---|
| committer | Vasily <just.one.man@yandex.ru> | 2020-05-18 23:21:38 +0300 |
| commit | fe480caf5486a21d7ef152009e5c3e08364e0f33 (patch) | |
| tree | 697884af75b1c9b845ab2e03f051462a25ea4862 | |
| parent | b9fc0d26287e46017515e4ac3e569ca2c60f622f (diff) | |
Add endpoint to update all items in library
| -rw-r--r-- | Emby.Server.Implementations/Library/LibraryManager.cs | 28 | ||||
| -rw-r--r-- | MediaBrowser.Api/ItemUpdateService.cs | 6 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Library/ILibraryManager.cs | 1 |
3 files changed, 35 insertions, 0 deletions
diff --git a/Emby.Server.Implementations/Library/LibraryManager.cs b/Emby.Server.Implementations/Library/LibraryManager.cs index bc35b04106..0a97e007cd 100644 --- a/Emby.Server.Implementations/Library/LibraryManager.cs +++ b/Emby.Server.Implementations/Library/LibraryManager.cs @@ -1912,6 +1912,34 @@ namespace Emby.Server.Implementations.Library } /// <summary> + /// Updates everything in the database. + /// </summary> + public void UpdateAll() + { + Task.Run(() => + { + var items = ItemRepository.GetItemList(new InternalItemsQuery { + Recursive = true + }); + foreach (var item in items) + { + _logger.LogDebug("Updating item {Name} ({ItemId})", + item.Name, + item.Id); + try + { + item.UpdateToRepository(ItemUpdateType.MetadataEdit, CancellationToken.None); + } + catch (Exception ex) + { + _logger.LogError(ex, "Updating item {ItemId} failed", item.Id); + } + } + _logger.LogDebug("All items have been updated"); + }); + } + + /// <summary> /// Reports the item removed. /// </summary> /// <param name="item">The item.</param> diff --git a/MediaBrowser.Api/ItemUpdateService.cs b/MediaBrowser.Api/ItemUpdateService.cs index 2db6d717aa..808627b41a 100644 --- a/MediaBrowser.Api/ItemUpdateService.cs +++ b/MediaBrowser.Api/ItemUpdateService.cs @@ -198,6 +198,12 @@ namespace MediaBrowser.Api public void Post(UpdateItem request) { + if (request.ItemId == "*") + { + // Special case: Refresh everything in database. Probably not a great idea to run often. + _libraryManager.UpdateAll(); + return; + } var item = _libraryManager.GetItemById(request.ItemId); var newLockData = request.LockData ?? false; diff --git a/MediaBrowser.Controller/Library/ILibraryManager.cs b/MediaBrowser.Controller/Library/ILibraryManager.cs index 2e1c97f674..559a5415fb 100644 --- a/MediaBrowser.Controller/Library/ILibraryManager.cs +++ b/MediaBrowser.Controller/Library/ILibraryManager.cs @@ -196,6 +196,7 @@ namespace MediaBrowser.Controller.Library /// </summary> void UpdateItems(IEnumerable<BaseItem> items, BaseItem parent, ItemUpdateType updateReason, CancellationToken cancellationToken); void UpdateItem(BaseItem item, BaseItem parent, ItemUpdateType updateReason, CancellationToken cancellationToken); + void UpdateAll(); /// <summary> /// Retrieves the item. |
