diff --git a/MediaBrowser.Api/StartupWizardService.cs b/MediaBrowser.Api/StartupWizardService.cs
index 69639a5f9f..554d63ac11 100644
--- a/MediaBrowser.Api/StartupWizardService.cs
+++ b/MediaBrowser.Api/StartupWizardService.cs
@@ -68,7 +68,6 @@ namespace MediaBrowser.Api
_config.Configuration.EnableLocalizedGuids = true;
_config.Configuration.EnableLibraryMetadataSubFolder = true;
_config.Configuration.EnableCustomPathSubFolders = true;
- _config.Configuration.DisableXmlSavers = true;
_config.Configuration.DisableStartupScan = true;
_config.Configuration.EnableUserViews = true;
_config.Configuration.EnableDateLastRefresh = true;
diff --git a/MediaBrowser.LocalMetadata/MediaBrowser.LocalMetadata.csproj b/MediaBrowser.LocalMetadata/MediaBrowser.LocalMetadata.csproj
index 9a641776aa..c673c01df8 100644
--- a/MediaBrowser.LocalMetadata/MediaBrowser.LocalMetadata.csproj
+++ b/MediaBrowser.LocalMetadata/MediaBrowser.LocalMetadata.csproj
@@ -79,14 +79,11 @@
-
-
-
diff --git a/MediaBrowser.LocalMetadata/Savers/EpisodeXmlSaver.cs b/MediaBrowser.LocalMetadata/Savers/EpisodeXmlSaver.cs
deleted file mode 100644
index dc8a16cd8b..0000000000
--- a/MediaBrowser.LocalMetadata/Savers/EpisodeXmlSaver.cs
+++ /dev/null
@@ -1,166 +0,0 @@
-using MediaBrowser.Controller.Configuration;
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Entities.TV;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Controller.Persistence;
-using System.Collections.Generic;
-using System.Globalization;
-using System.IO;
-using System.Security;
-using System.Text;
-using System.Threading;
-using CommonIO;
-using MediaBrowser.Common.IO;
-
-namespace MediaBrowser.LocalMetadata.Savers
-{
- public class EpisodeXmlProvider : IMetadataFileSaver, IConfigurableProvider
- {
- private readonly IItemRepository _itemRepository;
-
- private readonly CultureInfo _usCulture = new CultureInfo("en-US");
- private readonly IServerConfigurationManager _config;
- private readonly ILibraryManager _libraryManager;
- private IFileSystem _fileSystem;
-
- public EpisodeXmlProvider(IItemRepository itemRepository, IServerConfigurationManager config, ILibraryManager libraryManager, IFileSystem fileSystem)
- {
- _itemRepository = itemRepository;
- _config = config;
- _libraryManager = libraryManager;
- _fileSystem = fileSystem;
- }
-
- ///
- /// Determines whether [is enabled for] [the specified item].
- ///
- /// The item.
- /// Type of the update.
- /// true if [is enabled for] [the specified item]; otherwise, false.
- public bool IsEnabledFor(IHasMetadata item, ItemUpdateType updateType)
- {
- if (!item.SupportsLocalMetadata)
- {
- return false;
- }
-
- return item is Episode && updateType >= ItemUpdateType.MetadataDownload;
- }
-
- public string Name
- {
- get
- {
- return XmlProviderUtils.Name;
- }
- }
-
- public bool IsEnabled
- {
- get { return !_config.Configuration.DisableXmlSavers; }
- }
-
- ///
- /// Saves the specified item.
- ///
- /// The item.
- /// The cancellation token.
- /// Task.
- public void Save(IHasMetadata item, CancellationToken cancellationToken)
- {
- var episode = (Episode)item;
-
- var builder = new StringBuilder();
-
- builder.Append("- ");
-
- if (!string.IsNullOrEmpty(item.Name))
- {
- builder.Append("" + SecurityElement.Escape(episode.Name) + "");
- }
-
- if (episode.IndexNumber.HasValue)
- {
- builder.Append("" + SecurityElement.Escape(episode.IndexNumber.Value.ToString(_usCulture)) + "");
- }
-
- if (episode.IndexNumberEnd.HasValue)
- {
- builder.Append("" + SecurityElement.Escape(episode.IndexNumberEnd.Value.ToString(_usCulture)) + "");
- }
-
- if (episode.AirsAfterSeasonNumber.HasValue)
- {
- builder.Append("" + SecurityElement.Escape(episode.AirsAfterSeasonNumber.Value.ToString(_usCulture)) + "");
- }
- if (episode.AirsBeforeEpisodeNumber.HasValue)
- {
- builder.Append("" + SecurityElement.Escape(episode.AirsBeforeEpisodeNumber.Value.ToString(_usCulture)) + "");
- }
- if (episode.AirsBeforeSeasonNumber.HasValue)
- {
- builder.Append("" + SecurityElement.Escape(episode.AirsBeforeSeasonNumber.Value.ToString(_usCulture)) + "");
- }
-
- if (episode.ParentIndexNumber.HasValue)
- {
- builder.Append("" + SecurityElement.Escape(episode.ParentIndexNumber.Value.ToString(_usCulture)) + "");
- }
-
- if (episode.AbsoluteEpisodeNumber.HasValue)
- {
- builder.Append("" + SecurityElement.Escape(episode.AbsoluteEpisodeNumber.Value.ToString(_usCulture)) + "");
- }
-
- if (episode.DvdEpisodeNumber.HasValue)
- {
- builder.Append("" + SecurityElement.Escape(episode.DvdEpisodeNumber.Value.ToString(_usCulture)) + "");
- }
-
- if (episode.DvdSeasonNumber.HasValue)
- {
- builder.Append("" + SecurityElement.Escape(episode.DvdSeasonNumber.Value.ToString(_usCulture)) + "");
- }
-
- if (episode.PremiereDate.HasValue)
- {
- builder.Append("" + SecurityElement.Escape(episode.PremiereDate.Value.ToLocalTime().ToString("yyyy-MM-dd")) + "");
- }
-
- XmlSaverHelpers.AddCommonNodes(episode, _libraryManager, builder);
- XmlSaverHelpers.AddMediaInfo(episode, builder, _itemRepository);
-
- builder.Append("
");
-
- var xmlFilePath = GetSavePath(item);
-
- XmlSaverHelpers.Save(builder, xmlFilePath, new List
- {
- "FirstAired",
- "SeasonNumber",
- "EpisodeNumber",
- "EpisodeName",
- "EpisodeNumberEnd",
- "airsafter_season",
- "airsbefore_episode",
- "airsbefore_season",
- "DVD_episodenumber",
- "DVD_season",
- "absolute_number"
-
- }, _config, _fileSystem);
- }
-
- ///
- /// Gets the save path.
- ///
- /// The item.
- /// System.String.
- public string GetSavePath(IHasMetadata item)
- {
- var filename = Path.ChangeExtension(Path.GetFileName(item.Path), ".xml");
-
- return Path.Combine(Path.GetDirectoryName(item.Path), "metadata", filename);
- }
- }
-}
diff --git a/MediaBrowser.LocalMetadata/Savers/MovieXmlSaver.cs b/MediaBrowser.LocalMetadata/Savers/MovieXmlSaver.cs
deleted file mode 100644
index 2e3e7aaa1e..0000000000
--- a/MediaBrowser.LocalMetadata/Savers/MovieXmlSaver.cs
+++ /dev/null
@@ -1,147 +0,0 @@
-using MediaBrowser.Controller.Configuration;
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Entities.Movies;
-using MediaBrowser.Controller.Entities.TV;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Controller.Persistence;
-using System.Collections.Generic;
-using System.IO;
-using System.Security;
-using System.Text;
-using System.Threading;
-using CommonIO;
-using MediaBrowser.Common.IO;
-
-namespace MediaBrowser.LocalMetadata.Savers
-{
- ///
- /// Saves movie.xml for movies, trailers and music videos
- ///
- public class MovieXmlProvider : IMetadataFileSaver, IConfigurableProvider
- {
- private readonly IItemRepository _itemRepository;
- private readonly IServerConfigurationManager _config;
- private readonly ILibraryManager _libraryManager;
- private IFileSystem _fileSystem;
-
- public MovieXmlProvider(IItemRepository itemRepository, IServerConfigurationManager config, ILibraryManager libraryManager, IFileSystem fileSystem)
- {
- _itemRepository = itemRepository;
- _config = config;
- _libraryManager = libraryManager;
- _fileSystem = fileSystem;
- }
-
- public string Name
- {
- get
- {
- return XmlProviderUtils.Name;
- }
- }
-
- public bool IsEnabled
- {
- get { return !_config.Configuration.DisableXmlSavers; }
- }
-
- ///
- /// Determines whether [is enabled for] [the specified item].
- ///
- /// The item.
- /// Type of the update.
- /// true if [is enabled for] [the specified item]; otherwise, false.
- public bool IsEnabledFor(IHasMetadata item, ItemUpdateType updateType)
- {
- if (!item.SupportsLocalMetadata)
- {
- return false;
- }
-
- var video = item as Video;
-
- // Check parent for null to avoid running this against things like video backdrops
- if (video != null && !(item is Episode) && !video.IsOwnedItem)
- {
- return updateType >= ItemUpdateType.MetadataDownload;
- }
-
- return false;
- }
-
- ///
- /// Saves the specified item.
- ///
- /// The item.
- /// The cancellation token.
- /// Task.
- public void Save(IHasMetadata item, CancellationToken cancellationToken)
- {
- var video = (Video)item;
-
- var builder = new StringBuilder();
-
- builder.Append("");
-
- XmlSaverHelpers.AddCommonNodes(video, _libraryManager, builder);
-
- var musicVideo = item as MusicVideo;
-
- if (musicVideo != null)
- {
- if (musicVideo.Artists.Count > 0)
- {
- builder.Append("" + SecurityElement.Escape(string.Join(";", musicVideo.Artists.ToArray())) + "");
- }
- if (!string.IsNullOrEmpty(musicVideo.Album))
- {
- builder.Append("" + SecurityElement.Escape(musicVideo.Album) + "");
- }
- }
-
- var movie = item as Movie;
-
- if (movie != null)
- {
- if (!string.IsNullOrEmpty(movie.TmdbCollectionName))
- {
- builder.Append("" + SecurityElement.Escape(movie.TmdbCollectionName) + "");
- }
- }
-
- XmlSaverHelpers.AddMediaInfo(video, builder, _itemRepository);
-
- builder.Append("");
-
- var xmlFilePath = GetSavePath(item);
-
- XmlSaverHelpers.Save(builder, xmlFilePath, new List
- {
- // Deprecated. No longer saving in this field.
- "IMDBrating",
-
- // Deprecated. No longer saving in this field.
- "Description",
-
- "Artist",
- "Album",
- "TmdbCollectionName"
- }, _config, _fileSystem);
- }
-
- public string GetSavePath(IHasMetadata item)
- {
- return GetMovieSavePath((Video)item);
- }
-
- public static string GetMovieSavePath(Video item)
- {
- if (item.IsInMixedFolder)
- {
- return Path.ChangeExtension(item.Path, ".xml");
- }
-
- return Path.Combine(item.ContainingFolderPath, "movie.xml");
- }
- }
-}
diff --git a/MediaBrowser.LocalMetadata/Savers/SeriesXmlSaver.cs b/MediaBrowser.LocalMetadata/Savers/SeriesXmlSaver.cs
deleted file mode 100644
index 9806c4216e..0000000000
--- a/MediaBrowser.LocalMetadata/Savers/SeriesXmlSaver.cs
+++ /dev/null
@@ -1,154 +0,0 @@
-using MediaBrowser.Controller.Configuration;
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Entities.TV;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Model.Entities;
-using System.Collections.Generic;
-using System.Globalization;
-using System.IO;
-using System.Security;
-using System.Text;
-using System.Threading;
-using CommonIO;
-using MediaBrowser.Common.IO;
-
-namespace MediaBrowser.LocalMetadata.Savers
-{
- public class SeriesXmlProvider : IMetadataFileSaver, IConfigurableProvider
- {
- private readonly IServerConfigurationManager _config;
- private readonly ILibraryManager _libraryManager;
- private IFileSystem _fileSystem;
-
- public SeriesXmlProvider(IServerConfigurationManager config, ILibraryManager libraryManager, IFileSystem fileSystem)
- {
- _config = config;
- _libraryManager = libraryManager;
- _fileSystem = fileSystem;
- }
-
- public string Name
- {
- get
- {
- return XmlProviderUtils.Name;
- }
- }
-
- ///
- /// Determines whether [is enabled for] [the specified item].
- ///
- /// The item.
- /// Type of the update.
- /// true if [is enabled for] [the specified item]; otherwise, false.
- public bool IsEnabledFor(IHasMetadata item, ItemUpdateType updateType)
- {
- if (!item.SupportsLocalMetadata)
- {
- return false;
- }
-
- return item is Series && updateType >= ItemUpdateType.MetadataDownload;
- }
-
- public bool IsEnabled
- {
- get { return !_config.Configuration.DisableXmlSavers; }
- }
-
- private static readonly CultureInfo UsCulture = new CultureInfo("en-US");
-
- ///
- /// Saves the specified item.
- ///
- /// The item.
- /// The cancellation token.
- /// Task.
- public void Save(IHasMetadata item, CancellationToken cancellationToken)
- {
- var series = (Series)item;
-
- var builder = new StringBuilder();
-
- builder.Append("");
-
- var tvdb = item.GetProviderId(MetadataProviders.Tvdb);
-
- if (!string.IsNullOrEmpty(tvdb))
- {
- builder.Append("" + SecurityElement.Escape(tvdb) + "");
- }
-
- if (series.Status.HasValue)
- {
- builder.Append("" + SecurityElement.Escape(series.Status.Value.ToString()) + "");
- }
-
- if (series.Studios.Count > 0)
- {
- builder.Append("" + SecurityElement.Escape(series.Studios[0]) + "");
- }
-
- if (!string.IsNullOrEmpty(series.AirTime))
- {
- builder.Append("" + SecurityElement.Escape(series.AirTime) + "");
- }
-
- if (series.AirDays != null)
- {
- if (series.AirDays.Count == 7)
- {
- builder.Append("" + SecurityElement.Escape("Daily") + "");
- }
- else if (series.AirDays.Count > 0)
- {
- builder.Append("" + SecurityElement.Escape(series.AirDays[0].ToString()) + "");
- }
- }
-
- if (series.PremiereDate.HasValue)
- {
- builder.Append("" + SecurityElement.Escape(series.PremiereDate.Value.ToLocalTime().ToString("yyyy-MM-dd")) + "");
- }
-
- if (series.AnimeSeriesIndex.HasValue)
- {
- builder.Append("" + SecurityElement.Escape(series.AnimeSeriesIndex.Value.ToString(UsCulture)) + "");
- }
-
- XmlSaverHelpers.AddCommonNodes(series, _libraryManager, builder);
-
- builder.Append("");
-
- var xmlFilePath = GetSavePath(item);
-
- XmlSaverHelpers.Save(builder, xmlFilePath, new List
- {
- "id",
- "Status",
- "Network",
- "Airs_Time",
- "Airs_DayOfWeek",
- "FirstAired",
-
- // Don't preserve old series node
- "Series",
-
- "SeriesName",
-
- // Deprecated. No longer saving in this field.
- "AnimeSeriesIndex"
- }, _config, _fileSystem);
- }
-
- ///
- /// Gets the save path.
- ///
- /// The item.
- /// System.String.
- public string GetSavePath(IHasMetadata item)
- {
- return Path.Combine(item.Path, "series.xml");
- }
- }
-}
diff --git a/MediaBrowser.Model/Configuration/ServerConfiguration.cs b/MediaBrowser.Model/Configuration/ServerConfiguration.cs
index 3aea370c8c..77bce5cbd3 100644
--- a/MediaBrowser.Model/Configuration/ServerConfiguration.cs
+++ b/MediaBrowser.Model/Configuration/ServerConfiguration.cs
@@ -216,7 +216,6 @@ namespace MediaBrowser.Model.Configuration
public int SharingExpirationDays { get; set; }
- public bool DisableXmlSavers { get; set; }
public bool EnableWindowsShortcuts { get; set; }
public bool EnableVideoFrameByFrameAnalysis { get; set; }