fixes #795 - Support reading Xbmc nfo's

This commit is contained in:
Luke Pulverenti
2014-06-29 23:04:50 -04:00
parent 1a5a75854b
commit 3d47b495a9
89 changed files with 4361 additions and 318 deletions

View File

@@ -17,6 +17,9 @@ using MediaBrowser.Controller.Dlna;
using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.Dto;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.FileOrganization;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.LiveTv;
@@ -38,9 +41,11 @@ using MediaBrowser.Dlna;
using MediaBrowser.Dlna.ConnectionManager;
using MediaBrowser.Dlna.ContentDirectory;
using MediaBrowser.Dlna.Main;
using MediaBrowser.LocalMetadata.Providers;
using MediaBrowser.MediaEncoding.BdInfo;
using MediaBrowser.MediaEncoding.Encoder;
using MediaBrowser.MediaEncoding.Subtitles;
using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Logging;
using MediaBrowser.Model.MediaInfo;
using MediaBrowser.Model.System;
@@ -75,6 +80,7 @@ using MediaBrowser.ServerApplication.IO;
using MediaBrowser.ServerApplication.Native;
using MediaBrowser.ServerApplication.Networking;
using MediaBrowser.WebDashboard.Api;
using MediaBrowser.XbmcMetadata.Providers;
using System;
using System.Collections.Generic;
using System.Globalization;
@@ -283,6 +289,7 @@ namespace MediaBrowser.ServerApplication
DeleteDeprecatedModules();
MigrateModularConfigurations();
ApplyDefaultXbmcSettings();
}
private void MigrateModularConfigurations()
@@ -309,6 +316,68 @@ namespace MediaBrowser.ServerApplication
}
}
private void ApplyDefaultXbmcSettings()
{
if (!ServerConfigurationManager.Configuration.DefaultMetadataSettingsApplied)
{
// Make sure xbmc metadata is disabled for existing users.
// New users can just take the defaults.
var service = ServerConfigurationManager.Configuration.IsStartupWizardCompleted
? "Xbmc Nfo"
: "Media Browser Xml";
DisableMetadataService(typeof(Movie), ServerConfigurationManager.Configuration, service);
DisableMetadataService(typeof(MusicAlbum), ServerConfigurationManager.Configuration, service);
DisableMetadataService(typeof(MusicArtist), ServerConfigurationManager.Configuration, service);
DisableMetadataService(typeof(Episode), ServerConfigurationManager.Configuration, service);
DisableMetadataService(typeof(Season), ServerConfigurationManager.Configuration, service);
DisableMetadataService(typeof(Series), ServerConfigurationManager.Configuration, service);
DisableMetadataService(typeof(MusicVideo), ServerConfigurationManager.Configuration, service);
DisableMetadataService(typeof(Trailer), ServerConfigurationManager.Configuration, service);
DisableMetadataService(typeof(AdultVideo), ServerConfigurationManager.Configuration, service);
DisableMetadataService(typeof(Video), ServerConfigurationManager.Configuration, service);
}
ServerConfigurationManager.Configuration.DefaultMetadataSettingsApplied = true;
ServerConfigurationManager.SaveConfiguration();
}
private void DisableMetadataService(Type type, ServerConfiguration config, string service)
{
var options = GetMetadataOptions(type, config);
if (!options.DisabledMetadataSavers.Contains(service, StringComparer.OrdinalIgnoreCase))
{
var list = options.DisabledMetadataSavers.ToList();
list.Add(service);
options.DisabledMetadataSavers = list.ToArray();
}
}
private MetadataOptions GetMetadataOptions(Type type, ServerConfiguration config)
{
var options = config.MetadataOptions
.FirstOrDefault(i => string.Equals(i.ItemType, type.Name, StringComparison.OrdinalIgnoreCase));
if (options == null)
{
var list = config.MetadataOptions.ToList();
options = new MetadataOptions
{
ItemType = type.Name
};
list.Add(options);
config.MetadataOptions = list.ToArray();
}
return options;
}
private void DeleteDeprecatedModules()
{
try
@@ -328,6 +397,15 @@ namespace MediaBrowser.ServerApplication
// Not there, no big deal
}
try
{
File.Delete(Path.Combine(ApplicationPaths.PluginsPath, "MediaBrowser.Plugins.XbmcMetadata.dll"));
}
catch (IOException)
{
// Not there, no big deal
}
Task.Run(() =>
{
try
@@ -912,6 +990,12 @@ namespace MediaBrowser.ServerApplication
// Dlna
list.Add(typeof(DlnaEntryPoint).Assembly);
// Local metadata
list.Add(typeof(AlbumXmlProvider).Assembly);
// Xbmc
list.Add(typeof(ArtistNfoProvider).Assembly);
list.AddRange(Assemblies.GetAssembliesWithParts());
// Include composable parts in the running assembly