reduce dictionary creation in xml savers

pull/702/head
Luke Pulverenti 11 years ago
parent 3528d01fdb
commit 230dfd452d

@ -18,73 +18,74 @@ namespace MediaBrowser.Providers.Savers
/// </summary> /// </summary>
public static class XmlSaverHelpers public static class XmlSaverHelpers
{ {
/// <summary> private static readonly Dictionary<string, string> CommonTags = new[] {
/// The us culture
/// </summary>
private static readonly CultureInfo UsCulture = new CultureInfo("en-US");
/// <summary> "Added",
/// Saves the specified XML. "AspectRatio",
/// </summary> "BirthDate",
/// <param name="xml">The XML.</param> "Budget",
/// <param name="path">The path.</param>
/// <param name="xmlTagsUsed">The XML tags used.</param>
public static void Save(StringBuilder xml, string path, List<string> xmlTagsUsed)
{
if (File.Exists(path))
{
xmlTagsUsed.AddRange(new[]
{
"MediaInfo",
"ContentRating",
"MPAARating",
"certification", "certification",
"Persons", "Chapters",
"Type", "ContentRating",
"Overview",
"CustomRating", "CustomRating",
"CriticRating",
"CriticRatingSummary",
"DeathDate",
"EndDate",
"Genres",
"Genre",
"GamesDbId",
"IMDB_ID",
"IMDB",
"IMDbId",
"Language",
"LocalTitle", "LocalTitle",
"SortTitle", "LockData",
"LockedFields",
"MediaInfo",
"MPAARating",
"MusicbrainzId",
"MusicBrainzReleaseGroupId",
"Overview",
"Persons",
"PremiereDate", "PremiereDate",
"EndDate",
"Budget",
"Revenue",
"Rating",
"ProductionYear", "ProductionYear",
"Website", "Rating",
"AspectRatio", "Revenue",
"Language", "RottenTomatoesId",
"RunningTime", "RunningTime",
"Runtime", "Runtime",
"SortTitle",
"Studios",
"Tags",
"TagLine", "TagLine",
"Taglines", "Taglines",
"IMDB_ID", "TMDbCollectionId",
"IMDB",
"IMDbId",
"TMDbId", "TMDbId",
"Trailer",
"TVcomId", "TVcomId",
"TvDbId", "TvDbId",
"RottenTomatoesId", "Type",
"MusicbrainzId", "Website",
"TMDbCollectionId",
"Genres",
"Genre",
"Studios",
"Tags",
"Added",
"LockData",
"Trailer",
"CriticRating",
"CriticRatingSummary",
"GamesDbId",
"BirthDate",
"DeathDate",
"LockedFields",
"Chapters",
"MusicBrainzReleaseGroupId",
"Zap2ItId" "Zap2ItId"
});
}.ToDictionary(i => i, StringComparer.OrdinalIgnoreCase);
/// <summary>
/// The us culture
/// </summary>
private static readonly CultureInfo UsCulture = new CultureInfo("en-US");
/// <summary>
/// Saves the specified XML.
/// </summary>
/// <param name="xml">The XML.</param>
/// <param name="path">The path.</param>
/// <param name="xmlTagsUsed">The XML tags used.</param>
public static void Save(StringBuilder xml, string path, List<string> xmlTagsUsed)
{
if (File.Exists(path))
{
var position = xml.ToString().LastIndexOf("</", StringComparison.OrdinalIgnoreCase); var position = xml.ToString().LastIndexOf("</", StringComparison.OrdinalIgnoreCase);
xml.Insert(position, GetCustomTags(path, xmlTagsUsed)); xml.Insert(position, GetCustomTags(path, xmlTagsUsed));
} }
@ -140,7 +141,7 @@ namespace MediaBrowser.Providers.Savers
/// <param name="path">The path.</param> /// <param name="path">The path.</param>
/// <param name="xmlTagsUsed">The XML tags used.</param> /// <param name="xmlTagsUsed">The XML tags used.</param>
/// <returns>System.String.</returns> /// <returns>System.String.</returns>
private static string GetCustomTags(string path, IEnumerable<string> xmlTagsUsed) private static string GetCustomTags(string path, List<string> xmlTagsUsed)
{ {
var settings = new XmlReaderSettings var settings = new XmlReaderSettings
{ {
@ -150,8 +151,6 @@ namespace MediaBrowser.Providers.Savers
ValidationType = ValidationType.None ValidationType = ValidationType.None
}; };
var tagsDictionary = xmlTagsUsed.ToDictionary(i => i, StringComparer.OrdinalIgnoreCase);
var builder = new StringBuilder(); var builder = new StringBuilder();
using (var streamReader = new StreamReader(path, Encoding.UTF8)) using (var streamReader = new StreamReader(path, Encoding.UTF8))
@ -166,7 +165,9 @@ namespace MediaBrowser.Providers.Savers
{ {
if (reader.NodeType == XmlNodeType.Element) if (reader.NodeType == XmlNodeType.Element)
{ {
if (!tagsDictionary.ContainsKey(reader.Name)) var name = reader.Name;
if (!CommonTags.ContainsKey(name) && !xmlTagsUsed.Contains(name, StringComparer.OrdinalIgnoreCase))
{ {
builder.AppendLine(reader.ReadOuterXml()); builder.AppendLine(reader.ReadOuterXml());
} }

Loading…
Cancel
Save