aboutsummaryrefslogtreecommitdiff
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
parent08eec872a57cb94d2d6d3cfbe2348a383f423e72 (diff)
fixes #365 - Overwriting 3rd-party XML values
-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
-rw-r--r--MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj33
-rw-r--r--MediaBrowser.ServerApplication/packages.config6
10 files changed, 107 insertions, 38 deletions
diff --git a/MediaBrowser.Providers/Savers/AlbumXmlSaver.cs b/MediaBrowser.Providers/Savers/AlbumXmlSaver.cs
index 829a80d31..76e4c45d0 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 1ad929731..a84575b19 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 524c1dc97..d17325c85 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 f348fccca..0cc974432 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 c83a978d7..32ec765b0 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 fb11c148a..349b5e1a9 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 b2ac44b90..535540d00 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 a58da0710..88d6ebec0 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))
diff --git a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj
index 8b419abab..aa7d45b5b 100644
--- a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj
+++ b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj
@@ -126,23 +126,8 @@
<Reference Include="MahApps.Metro">
<HintPath>..\packages\MahApps.Metro.0.11.0.17-ALPHA\lib\net45\MahApps.Metro.dll</HintPath>
</Reference>
- <Reference Include="MediaBrowser.Common, Version=3.0.4912.27515, Culture=neutral, processorArchitecture=MSIL">
- <SpecificVersion>False</SpecificVersion>
- <HintPath>..\packages\MediaBrowser.Common.3.0.123\lib\net45\MediaBrowser.Common.dll</HintPath>
- </Reference>
- <Reference Include="MediaBrowser.IsoMounter, Version=1.0.4917.10402, Culture=neutral, processorArchitecture=MSIL">
- <SpecificVersion>False</SpecificVersion>
- <HintPath>..\packages\MediaBrowser.IsoMounting.3.0.53\lib\net45\MediaBrowser.IsoMounter.dll</HintPath>
- </Reference>
- <Reference Include="MediaBrowser.Model, Version=3.0.4912.27515, Culture=neutral, processorArchitecture=MSIL">
- <SpecificVersion>False</SpecificVersion>
- <HintPath>..\packages\MediaBrowser.Common.3.0.123\lib\net45\MediaBrowser.Model.dll</HintPath>
- </Reference>
- <Reference Include="Microsoft.Threading.Tasks">
- <HintPath>..\packages\Microsoft.Bcl.Async.1.0.16\lib\net45\Microsoft.Threading.Tasks.dll</HintPath>
- </Reference>
- <Reference Include="Microsoft.Threading.Tasks.Extensions">
- <HintPath>..\packages\Microsoft.Bcl.Async.1.0.16\lib\net45\Microsoft.Threading.Tasks.Extensions.dll</HintPath>
+ <Reference Include="MediaBrowser.IsoMounter">
+ <HintPath>..\packages\MediaBrowser.IsoMounting.3.0.55\lib\net45\MediaBrowser.IsoMounter.dll</HintPath>
</Reference>
<Reference Include="MoreLinq, Version=1.0.15631.0, Culture=neutral, PublicKeyToken=384d532d7e88985d, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
@@ -152,9 +137,8 @@
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\NLog.2.0.1.2\lib\net45\NLog.dll</HintPath>
</Reference>
- <Reference Include="pfmclrapi, Version=0.0.0.0, Culture=neutral, processorArchitecture=x86">
- <SpecificVersion>False</SpecificVersion>
- <HintPath>..\packages\MediaBrowser.IsoMounting.3.0.53\lib\net45\pfmclrapi.dll</HintPath>
+ <Reference Include="pfmclrapi">
+ <HintPath>..\packages\MediaBrowser.IsoMounting.3.0.55\lib\net45\pfmclrapi.dll</HintPath>
</Reference>
<Reference Include="ServiceStack, Version=3.9.54.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
@@ -298,10 +282,18 @@
<Project>{c4d2573a-3fd3-441f-81af-174ac4cd4e1d}</Project>
<Name>MediaBrowser.Common.Implementations</Name>
</ProjectReference>
+ <ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj">
+ <Project>{9142eefa-7570-41e1-bfcc-468bb571af2f}</Project>
+ <Name>MediaBrowser.Common</Name>
+ </ProjectReference>
<ProjectReference Include="..\MediaBrowser.Controller\MediaBrowser.Controller.csproj">
<Project>{17e1f4e6-8abd-4fe5-9ecf-43d4b6087ba2}</Project>
<Name>MediaBrowser.Controller</Name>
</ProjectReference>
+ <ProjectReference Include="..\MediaBrowser.Model\MediaBrowser.Model.csproj">
+ <Project>{7eeeb4bb-f3e8-48fc-b4c5-70f0fff8329b}</Project>
+ <Name>MediaBrowser.Model</Name>
+ </ProjectReference>
<ProjectReference Include="..\MediaBrowser.Providers\MediaBrowser.Providers.csproj">
<Project>{442b5058-dcaf-4263-bb6a-f21e31120a1b}</Project>
<Name>MediaBrowser.Providers</Name>
@@ -430,5 +422,4 @@ del "$(SolutionDir)..\Deploy\MBServer.zip"
</GetAssemblyIdentity>
<Exec Command="copy &quot;$(SolutionDir)..\Deploy\MBServer.zip&quot; &quot;$(SolutionDir)..\Deploy\MBServer_%(CurrentAssembly.Version).zip&quot; /y" Condition="'$(ConfigurationName)' == 'Release'" />
</Target>
- <Import Project="..\packages\Microsoft.Bcl.Build.1.0.7\tools\Microsoft.Bcl.Build.targets" />
</Project> \ No newline at end of file
diff --git a/MediaBrowser.ServerApplication/packages.config b/MediaBrowser.ServerApplication/packages.config
index 15fd50aeb..d994c6e0f 100644
--- a/MediaBrowser.ServerApplication/packages.config
+++ b/MediaBrowser.ServerApplication/packages.config
@@ -3,11 +3,7 @@
<package id="DotNetZip" version="1.9.1.8" targetFramework="net45" />
<package id="Hardcodet.Wpf.TaskbarNotification" version="1.0.4.0" targetFramework="net45" />
<package id="MahApps.Metro" version="0.11.0.17-ALPHA" targetFramework="net45" />
- <package id="MediaBrowser.Common" version="3.0.123" targetFramework="net45" />
- <package id="MediaBrowser.IsoMounting" version="3.0.53" targetFramework="net45" />
- <package id="Microsoft.Bcl" version="1.0.19" targetFramework="net45" />
- <package id="Microsoft.Bcl.Async" version="1.0.16" targetFramework="net45" />
- <package id="Microsoft.Bcl.Build" version="1.0.7" targetFramework="net45" />
+ <package id="MediaBrowser.IsoMounting" version="3.0.55" targetFramework="net45" />
<package id="morelinq" version="1.0.15631-beta" targetFramework="net45" />
<package id="NLog" version="2.0.1.2" targetFramework="net45" />
<package id="ServiceStack" version="3.9.54" targetFramework="net45" />