aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.XbmcMetadata/EntryPoint.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.XbmcMetadata/EntryPoint.cs')
-rw-r--r--MediaBrowser.XbmcMetadata/EntryPoint.cs35
1 files changed, 23 insertions, 12 deletions
diff --git a/MediaBrowser.XbmcMetadata/EntryPoint.cs b/MediaBrowser.XbmcMetadata/EntryPoint.cs
index 2d978781f..a7015e41f 100644
--- a/MediaBrowser.XbmcMetadata/EntryPoint.cs
+++ b/MediaBrowser.XbmcMetadata/EntryPoint.cs
@@ -36,22 +36,39 @@ namespace MediaBrowser.XbmcMetadata
void _libraryManager_ItemUpdated(object sender, ItemChangeEventArgs e)
{
- if (e.UpdateReason == ItemUpdateType.ImageUpdate && e.Item is Person)
+ // TODO: Need a more accurate check here to see if xbmc metadata saving is enabled.
+ // This is probably good enough, but no guarantee
+ var userId = _config.GetNfoConfiguration().UserId;
+ if (string.IsNullOrWhiteSpace(userId))
{
- var person = e.Item.Name;
+ return;
+ }
- var items = _libraryManager.RootFolder
- .GetRecursiveChildren(i => !i.IsFolder && i.People.Any(p => string.Equals(p.Name, person, StringComparison.OrdinalIgnoreCase)));
+ if (e.UpdateReason == ItemUpdateType.ImageUpdate)
+ {
+ var person = e.Item as Person;
- foreach (var item in items)
+ if (person != null)
{
- SaveMetadataForItem(item, ItemUpdateType.MetadataEdit);
+ var items = _libraryManager.RootFolder.RecursiveChildren;
+ items = person.GetTaggedItems(items).ToList();
+
+ foreach (var item in items)
+ {
+ SaveMetadataForItem(item, ItemUpdateType.MetadataEdit);
+ }
}
}
}
void _userDataManager_UserDataSaved(object sender, UserDataSaveEventArgs e)
{
+ var userId = _config.GetNfoConfiguration().UserId;
+ if (string.IsNullOrWhiteSpace(userId))
+ {
+ return;
+ }
+
if (e.SaveReason == UserDataSaveReason.PlaybackFinished || e.SaveReason == UserDataSaveReason.TogglePlayed)
{
var item = e.Item as BaseItem;
@@ -73,12 +90,6 @@ namespace MediaBrowser.XbmcMetadata
private async void SaveMetadataForItem(BaseItem item, ItemUpdateType updateReason)
{
- var userId = _config.GetNfoConfiguration().UserId;
- if (string.IsNullOrWhiteSpace(userId))
- {
- return;
- }
-
var locationType = item.LocationType;
if (locationType == LocationType.Remote ||
locationType == LocationType.Virtual)