浏览代码

Update NfoSavers so they don't duplicate user defined IExternalIds

Darrell King 8 年之前
父节点
当前提交
8e605ba613

+ 7 - 7
MediaBrowser.XbmcMetadata/Savers/AlbumNfoSaver.cs

@@ -85,15 +85,15 @@ namespace MediaBrowser.XbmcMetadata.Savers
             }
             }
         }
         }
 
 
-        protected override List<string> GetTagsUsed()
+        protected override List<string> GetTagsUsed(IHasMetadata item)
         {
         {
-            var list = new List<string>
+            var list = base.GetTagsUsed(item);
+            list.AddRange(new string[]
             {
             {
-                    "track",
-                    "artist",
-                    "albumartist"
-            };
-
+                "track",
+                "artist",
+                "albumartist"
+            });
             return list;
             return list;
         }
         }
 
 

+ 6 - 6
MediaBrowser.XbmcMetadata/Savers/ArtistNfoSaver.cs

@@ -79,14 +79,14 @@ namespace MediaBrowser.XbmcMetadata.Savers
             }
             }
         }
         }
 
 
-        protected override List<string> GetTagsUsed()
+        protected override List<string> GetTagsUsed(IHasMetadata item)
         {
         {
-            var list = new List<string>
+            var list = base.GetTagsUsed(item);
+            list.AddRange(new string[]
             {
             {
-                    "album",
-                    "disbanded"
-            };
-
+                "album",
+                "disbanded"
+            });
             return list;
             return list;
         }
         }
 
 

+ 19 - 4
MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs

@@ -183,9 +183,18 @@ namespace MediaBrowser.XbmcMetadata.Savers
         /// <returns><c>true</c> if [is enabled for] [the specified item]; otherwise, <c>false</c>.</returns>
         /// <returns><c>true</c> if [is enabled for] [the specified item]; otherwise, <c>false</c>.</returns>
         public abstract bool IsEnabledFor(IHasMetadata item, ItemUpdateType updateType);
         public abstract bool IsEnabledFor(IHasMetadata item, ItemUpdateType updateType);
 
 
-        protected virtual List<string> GetTagsUsed()
+        protected virtual List<string> GetTagsUsed(IHasMetadata item)
         {
         {
-            return new List<string>();
+            var list = new List<string>();
+            foreach (var providerKey in item.ProviderIds.Keys)
+            {
+                var providerIdTagName = GetTagForProviderKey(providerKey);
+                if (!CommonTags.ContainsKey(providerIdTagName))
+                {
+                    list.Add(providerIdTagName);
+                }
+            }
+            return list;
         }
         }
 
 
         public void Save(IHasMetadata item, CancellationToken cancellationToken)
         public void Save(IHasMetadata item, CancellationToken cancellationToken)
@@ -271,7 +280,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
                     AddMediaInfo(hasMediaSources, writer);
                     AddMediaInfo(hasMediaSources, writer);
                 }
                 }
 
 
-                var tagsUsed = GetTagsUsed();
+                var tagsUsed = GetTagsUsed(item);
 
 
                 try
                 try
                 {
                 {
@@ -834,7 +843,8 @@ namespace MediaBrowser.XbmcMetadata.Savers
                     var providerId = item.ProviderIds[providerKey];
                     var providerId = item.ProviderIds[providerKey];
                     if (!string.IsNullOrEmpty(providerId) && !writtenProviderIds.Contains(providerKey))
                     if (!string.IsNullOrEmpty(providerId) && !writtenProviderIds.Contains(providerKey))
                     {
                     {
-                        writer.WriteElementString(providerKey.ToLower() + "id", providerId);
+                        writer.WriteElementString(GetTagForProviderKey(providerKey), providerId);
+                        writtenProviderIds.Add(providerKey);
                     }
                     }
                 }
                 }
             }
             }
@@ -1093,5 +1103,10 @@ namespace MediaBrowser.XbmcMetadata.Savers
                 }
                 }
             }
             }
         }
         }
+
+        private static string GetTagForProviderKey(string providerKey)
+        {
+            return providerKey.ToLower() + "id";
+        }
     }
     }
 }
 }

+ 16 - 16
MediaBrowser.XbmcMetadata/Savers/EpisodeNfoSaver.cs

@@ -108,24 +108,24 @@ namespace MediaBrowser.XbmcMetadata.Savers
 
 
         private static readonly CultureInfo UsCulture = new CultureInfo("en-US");
         private static readonly CultureInfo UsCulture = new CultureInfo("en-US");
 
 
-        protected override List<string> GetTagsUsed()
+        protected override List<string> GetTagsUsed(IHasMetadata item)
         {
         {
-            var list = new List<string>
+            var list = base.GetTagsUsed(item);
+            list.AddRange(new string[]
             {
             {
-                    "aired",
-                    "season",
-                    "episode",
-                    "episodenumberend",
-                    "airsafter_season",
-                    "airsbefore_episode",
-                    "airsbefore_season",
-                    "DVD_episodenumber",
-                    "DVD_season",
-                    "absolute_number",
-                    "displayseason",
-                    "displayepisode"
-            };
-
+                "aired",
+                "season",
+                "episode",
+                "episodenumberend",
+                "airsafter_season",
+                "airsbefore_episode",
+                "airsbefore_season",
+                "DVD_episodenumber",
+                "DVD_season",
+                "absolute_number",
+                "displayseason",
+                "displayepisode"
+            });
             return list;
             return list;
         }
         }
 
 

+ 8 - 8
MediaBrowser.XbmcMetadata/Savers/MovieNfoSaver.cs

@@ -113,16 +113,16 @@ namespace MediaBrowser.XbmcMetadata.Savers
             }
             }
         }
         }
 
 
-        protected override List<string> GetTagsUsed()
+        protected override List<string> GetTagsUsed(IHasMetadata item)
         {
         {
-            var list = new List<string>
+            var list = base.GetTagsUsed(item);
+            list.AddRange(new string[]
             {
             {
-                    "album",
-                    "artist",
-                    "set",
-                    "id"
-            };
-
+                "album",
+                "artist",
+                "set",
+                "id"
+            });
             return list;
             return list;
         }
         }
 
 

+ 6 - 4
MediaBrowser.XbmcMetadata/Savers/SeasonNfoSaver.cs

@@ -51,11 +51,13 @@ namespace MediaBrowser.XbmcMetadata.Savers
             }
             }
         }
         }
 
 
-        protected override List<string> GetTagsUsed()
+        protected override List<string> GetTagsUsed(IHasMetadata item)
         {
         {
-            var list = base.GetTagsUsed();
-
-            list.Add("seasonnumber");
+            var list = base.GetTagsUsed(item);
+            list.AddRange(new string[]
+            {
+                "seasonnumber"
+            });
 
 
             return list;
             return list;
         }
         }

+ 12 - 12
MediaBrowser.XbmcMetadata/Savers/SeriesNfoSaver.cs

@@ -90,20 +90,20 @@ namespace MediaBrowser.XbmcMetadata.Savers
             }
             }
         }
         }
 
 
-        protected override List<string> GetTagsUsed()
+        protected override List<string> GetTagsUsed(IHasMetadata item)
         {
         {
-            var list = new List<string>
+            var list = base.GetTagsUsed(item);
+            list.AddRange(new string[]
             {
             {
-                    "id",
-                    "episodeguide",
-                    "season",
-                    "episode",
-                    "status",
-                    "airs_time",
-                    "airs_dayofweek",
-                    "animeseriesindex"
-            };
-
+                "id",
+                "episodeguide",
+                "season",
+                "episode",
+                "status",
+                "airs_time",
+                "airs_dayofweek",
+                "animeseriesindex"
+            });
             return list;
             return list;
         }
         }