aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-06-24 12:41:37 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-06-24 12:41:37 -0400
commit12c6bc27f291fda668faaceba2fdc0920c446445 (patch)
treec78e23bdfddb6a51dcf7241a43e84e629af38c08 /MediaBrowser.Providers
parent08eec872a57cb94d2d6d3cfbe2348a383f423e72 (diff)
fixes #365 - Overwriting 3rd-party XML values
Diffstat (limited to 'MediaBrowser.Providers')
-rw-r--r--MediaBrowser.Providers/Savers/AlbumXmlSaver.cs2
-rw-r--r--MediaBrowser.Providers/Savers/ArtistXmlSaver.cs2
-rw-r--r--MediaBrowser.Providers/Savers/EpisodeXmlSaver.cs8
-rw-r--r--MediaBrowser.Providers/Savers/FolderXmlSaver.cs2
-rw-r--r--MediaBrowser.Providers/Savers/MovieXmlSaver.cs2
-rw-r--r--MediaBrowser.Providers/Savers/PersonXmlSaver.cs2
-rw-r--r--MediaBrowser.Providers/Savers/SeriesXmlSaver.cs10
-rw-r--r--MediaBrowser.Providers/Savers/XmlSaverHelpers.cs78
8 files changed, 94 insertions, 12 deletions
diff --git a/MediaBrowser.Providers/Savers/AlbumXmlSaver.cs b/MediaBrowser.Providers/Savers/AlbumXmlSaver.cs
index 829a80d318..76e4c45d02 100644
--- a/MediaBrowser.Providers/Savers/AlbumXmlSaver.cs
+++ b/MediaBrowser.Providers/Savers/AlbumXmlSaver.cs
@@ -58,7 +58,7 @@ namespace MediaBrowser.Providers.Savers
var xmlFilePath = GetSavePath(item);
- XmlSaverHelpers.Save(builder, xmlFilePath);
+ XmlSaverHelpers.Save(builder, xmlFilePath, new string[] { });
// Set last refreshed so that the provider doesn't trigger after the file save
PersonProviderFromXml.Current.SetLastRefreshed(item, DateTime.UtcNow);
diff --git a/MediaBrowser.Providers/Savers/ArtistXmlSaver.cs b/MediaBrowser.Providers/Savers/ArtistXmlSaver.cs
index 1ad9297317..a84575b19d 100644
--- a/MediaBrowser.Providers/Savers/ArtistXmlSaver.cs
+++ b/MediaBrowser.Providers/Savers/ArtistXmlSaver.cs
@@ -58,7 +58,7 @@ namespace MediaBrowser.Providers.Savers
var xmlFilePath = GetSavePath(item);
- XmlSaverHelpers.Save(builder, xmlFilePath);
+ XmlSaverHelpers.Save(builder, xmlFilePath, new string[] { });
// Set last refreshed so that the provider doesn't trigger after the file save
PersonProviderFromXml.Current.SetLastRefreshed(item, DateTime.UtcNow);
diff --git a/MediaBrowser.Providers/Savers/EpisodeXmlSaver.cs b/MediaBrowser.Providers/Savers/EpisodeXmlSaver.cs
index 524c1dc97b..d17325c85a 100644
--- a/MediaBrowser.Providers/Savers/EpisodeXmlSaver.cs
+++ b/MediaBrowser.Providers/Savers/EpisodeXmlSaver.cs
@@ -80,7 +80,13 @@ namespace MediaBrowser.Providers.Savers
var xmlFilePath = GetSavePath(item);
- XmlSaverHelpers.Save(builder, xmlFilePath);
+ XmlSaverHelpers.Save(builder, xmlFilePath, new[]
+ {
+ "FirstAired",
+ "SeasonNumber",
+ "EpisodeNumber",
+ "EpisodeName"
+ });
// Set last refreshed so that the provider doesn't trigger after the file save
EpisodeProviderFromXml.Current.SetLastRefreshed(item, DateTime.UtcNow);
diff --git a/MediaBrowser.Providers/Savers/FolderXmlSaver.cs b/MediaBrowser.Providers/Savers/FolderXmlSaver.cs
index f348fccca1..0cc974432c 100644
--- a/MediaBrowser.Providers/Savers/FolderXmlSaver.cs
+++ b/MediaBrowser.Providers/Savers/FolderXmlSaver.cs
@@ -53,7 +53,7 @@ namespace MediaBrowser.Providers.Savers
var xmlFilePath = GetSavePath(item);
- XmlSaverHelpers.Save(builder, xmlFilePath);
+ XmlSaverHelpers.Save(builder, xmlFilePath, new string[] { });
}
/// <summary>
diff --git a/MediaBrowser.Providers/Savers/MovieXmlSaver.cs b/MediaBrowser.Providers/Savers/MovieXmlSaver.cs
index c83a978d7b..32ec765b0f 100644
--- a/MediaBrowser.Providers/Savers/MovieXmlSaver.cs
+++ b/MediaBrowser.Providers/Savers/MovieXmlSaver.cs
@@ -64,7 +64,7 @@ namespace MediaBrowser.Providers.Savers
var xmlFilePath = GetSavePath(item);
- XmlSaverHelpers.Save(builder, xmlFilePath);
+ XmlSaverHelpers.Save(builder, xmlFilePath, new string[] { });
// Set last refreshed so that the provider doesn't trigger after the file save
MovieProviderFromXml.Current.SetLastRefreshed(item, DateTime.UtcNow);
diff --git a/MediaBrowser.Providers/Savers/PersonXmlSaver.cs b/MediaBrowser.Providers/Savers/PersonXmlSaver.cs
index fb11c148a9..349b5e1a99 100644
--- a/MediaBrowser.Providers/Savers/PersonXmlSaver.cs
+++ b/MediaBrowser.Providers/Savers/PersonXmlSaver.cs
@@ -47,7 +47,7 @@ namespace MediaBrowser.Providers.Savers
var xmlFilePath = GetSavePath(item);
- XmlSaverHelpers.Save(builder, xmlFilePath);
+ XmlSaverHelpers.Save(builder, xmlFilePath, new string[] { });
// Set last refreshed so that the provider doesn't trigger after the file save
PersonProviderFromXml.Current.SetLastRefreshed(item, DateTime.UtcNow);
diff --git a/MediaBrowser.Providers/Savers/SeriesXmlSaver.cs b/MediaBrowser.Providers/Savers/SeriesXmlSaver.cs
index b2ac44b905..535540d00a 100644
--- a/MediaBrowser.Providers/Savers/SeriesXmlSaver.cs
+++ b/MediaBrowser.Providers/Savers/SeriesXmlSaver.cs
@@ -92,7 +92,15 @@ namespace MediaBrowser.Providers.Savers
var xmlFilePath = GetSavePath(item);
- XmlSaverHelpers.Save(builder, xmlFilePath);
+ XmlSaverHelpers.Save(builder, xmlFilePath, new[]
+ {
+ "id",
+ "SeriesName",
+ "Status",
+ "Network",
+ "Airs_Time",
+ "Airs_DayOfWeek"
+ });
// Set last refreshed so that the provider doesn't trigger after the file save
SeriesProviderFromXml.Current.SetLastRefreshed(item, DateTime.UtcNow);
diff --git a/MediaBrowser.Providers/Savers/XmlSaverHelpers.cs b/MediaBrowser.Providers/Savers/XmlSaverHelpers.cs
index a58da0710e..88d6ebec0e 100644
--- a/MediaBrowser.Providers/Savers/XmlSaverHelpers.cs
+++ b/MediaBrowser.Providers/Savers/XmlSaverHelpers.cs
@@ -2,8 +2,10 @@
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Model.Entities;
using System;
+using System.Collections.Generic;
using System.Globalization;
using System.IO;
+using System.Linq;
using System.Security;
using System.Text;
using System.Xml;
@@ -25,8 +27,55 @@ namespace MediaBrowser.Providers.Savers
/// </summary>
/// <param name="xml">The XML.</param>
/// <param name="path">The path.</param>
- public static void Save(StringBuilder xml, string path)
+ /// <param name="xmlTagsUsed">The XML tags used.</param>
+ public static void Save(StringBuilder xml, string path, IEnumerable<string> xmlTagsUsed)
{
+ if (File.Exists(path))
+ {
+ var tags = xmlTagsUsed.ToList();
+
+ tags.AddRange(new[]
+ {
+ "MediaInfo",
+ "ContentRating",
+ "MPAARating",
+ "certification",
+ "Persons",
+ "Type",
+ "Overview",
+ "CustomRating",
+ "LocalTitle",
+ "SortTitle",
+ "PremiereDate",
+ "Budget",
+ "Revenue",
+ "Rating",
+ "ProductionYear",
+ "Website",
+ "AspectRatio",
+ "Language",
+ "RunningTime",
+ "Runtime",
+ "TagLine",
+ "TagLines",
+ "IMDB_ID",
+ "IMDB",
+ "IMDbId",
+ "TMDbId",
+ "TVcomId",
+ "RottenTomatoesId",
+ "MusicbrainzId",
+ "CollectionNumber",
+ "Genres",
+ "Studios",
+ "Tags",
+ "Added"
+ });
+
+ var position = xml.ToString().LastIndexOf("</", StringComparison.OrdinalIgnoreCase);
+ xml.Insert(position, GetCustomTags(path, tags));
+ }
+
var xmlDocument = new XmlDocument();
xmlDocument.LoadXml(xml.ToString());
@@ -47,6 +96,25 @@ namespace MediaBrowser.Providers.Savers
}
/// <summary>
+ /// Gets the custom tags.
+ /// </summary>
+ /// <param name="path">The path.</param>
+ /// <param name="xmlTagsUsed">The XML tags used.</param>
+ /// <returns>System.String.</returns>
+ private static string GetCustomTags(string path, ICollection<string> xmlTagsUsed)
+ {
+ var doc = new XmlDocument();
+ doc.Load(path);
+
+ var nodes = doc.DocumentElement.ChildNodes.Cast<XmlNode>()
+ .Where(i => !xmlTagsUsed.Contains(i.Name))
+ .Select(i => i.OuterXml)
+ .ToArray();
+
+ return string.Join(Environment.NewLine, nodes);
+ }
+
+ /// <summary>
/// Adds the common nodes.
/// </summary>
/// <param name="item">The item.</param>
@@ -105,7 +173,7 @@ namespace MediaBrowser.Providers.Savers
{
builder.Append("<PremiereDate>" + SecurityElement.Escape(item.PremiereDate.Value.ToString("yyyy-MM-dd")) + "</PremiereDate>");
}
-
+
if (item.Budget.HasValue)
{
builder.Append("<Budget>" + SecurityElement.Escape(item.Budget.Value.ToString(UsCulture)) + "</Budget>");
@@ -125,7 +193,7 @@ namespace MediaBrowser.Providers.Savers
{
builder.Append("<ProductionYear>" + SecurityElement.Escape(item.ProductionYear.Value.ToString(UsCulture)) + "</ProductionYear>");
}
-
+
if (!string.IsNullOrEmpty(item.HomePageUrl))
{
builder.Append("<Website>" + SecurityElement.Escape(item.HomePageUrl) + "</Website>");
@@ -148,7 +216,7 @@ namespace MediaBrowser.Providers.Savers
builder.Append("<RunningTime>" + Convert.ToInt32(timespan.TotalMinutes).ToString(UsCulture) + "</RunningTime>");
builder.Append("<Runtime>" + Convert.ToInt32(timespan.TotalMinutes).ToString(UsCulture) + "</Runtime>");
}
-
+
if (item.Taglines.Count > 0)
{
builder.Append("<TagLine>" + SecurityElement.Escape(item.Taglines[0]) + "</TagLine>");
@@ -199,7 +267,7 @@ namespace MediaBrowser.Providers.Savers
{
builder.Append("<MusicbrainzId>" + SecurityElement.Escape(mbz) + "</MusicbrainzId>");
}
-
+
var tmdbCollection = item.GetProviderId(MetadataProviders.TmdbCollection);
if (!string.IsNullOrEmpty(tmdbCollection))