Merge pull request #2105 from softworkz/ProviderrIdPersistence
Programmatic provider id handling for xml and nfo persistence
This commit is contained in:
commit
adeb944c61
|
@ -23,14 +23,18 @@ namespace MediaBrowser.Controller.Providers
|
||||||
/// The logger
|
/// The logger
|
||||||
/// </summary>
|
/// </summary>
|
||||||
protected ILogger Logger { get; private set; }
|
protected ILogger Logger { get; private set; }
|
||||||
|
protected IProviderManager ProviderManager { get; private set; }
|
||||||
|
|
||||||
|
private Dictionary<string, string> _validProviderIds;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="BaseItemXmlParser{T}" /> class.
|
/// Initializes a new instance of the <see cref="BaseItemXmlParser{T}" /> class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="logger">The logger.</param>
|
/// <param name="logger">The logger.</param>
|
||||||
public BaseItemXmlParser(ILogger logger)
|
public BaseItemXmlParser(ILogger logger, IProviderManager providerManager)
|
||||||
{
|
{
|
||||||
Logger = logger;
|
Logger = logger;
|
||||||
|
ProviderManager = providerManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -60,6 +64,22 @@ namespace MediaBrowser.Controller.Providers
|
||||||
ValidationType = ValidationType.None
|
ValidationType = ValidationType.None
|
||||||
};
|
};
|
||||||
|
|
||||||
|
_validProviderIds = _validProviderIds = new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase);
|
||||||
|
|
||||||
|
var idInfos = ProviderManager.GetExternalIdInfos(item.Item);
|
||||||
|
|
||||||
|
foreach (var info in idInfos)
|
||||||
|
{
|
||||||
|
var id = info.Key + "Id";
|
||||||
|
if (!_validProviderIds.ContainsKey(id))
|
||||||
|
{
|
||||||
|
_validProviderIds.Add(id, info.Key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Additional Mappings
|
||||||
|
_validProviderIds.Add("IMDB", "Imdb");
|
||||||
|
|
||||||
//Fetch(item, metadataFile, settings, Encoding.GetEncoding("ISO-8859-1"), cancellationToken);
|
//Fetch(item, metadataFile, settings, Encoding.GetEncoding("ISO-8859-1"), cancellationToken);
|
||||||
Fetch(item, metadataFile, settings, Encoding.UTF8, cancellationToken);
|
Fetch(item, metadataFile, settings, Encoding.UTF8, cancellationToken);
|
||||||
}
|
}
|
||||||
|
@ -657,14 +677,6 @@ namespace MediaBrowser.Controller.Providers
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case "TvDbId":
|
|
||||||
var tvdbId = reader.ReadElementContentAsString();
|
|
||||||
if (!string.IsNullOrWhiteSpace(tvdbId))
|
|
||||||
{
|
|
||||||
item.SetProviderId(MetadataProviders.Tvdb, tvdbId);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "VoteCount":
|
case "VoteCount":
|
||||||
{
|
{
|
||||||
var val = reader.ReadElementContentAsString();
|
var val = reader.ReadElementContentAsString();
|
||||||
|
@ -679,95 +691,6 @@ namespace MediaBrowser.Controller.Providers
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "MusicBrainzAlbumId":
|
|
||||||
{
|
|
||||||
var mbz = reader.ReadElementContentAsString();
|
|
||||||
if (!string.IsNullOrWhiteSpace(mbz))
|
|
||||||
{
|
|
||||||
item.SetProviderId(MetadataProviders.MusicBrainzAlbum, mbz);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "MusicBrainzAlbumArtistId":
|
|
||||||
{
|
|
||||||
var mbz = reader.ReadElementContentAsString();
|
|
||||||
if (!string.IsNullOrWhiteSpace(mbz))
|
|
||||||
{
|
|
||||||
item.SetProviderId(MetadataProviders.MusicBrainzAlbumArtist, mbz);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "MusicBrainzArtistId":
|
|
||||||
{
|
|
||||||
var mbz = reader.ReadElementContentAsString();
|
|
||||||
if (!string.IsNullOrWhiteSpace(mbz))
|
|
||||||
{
|
|
||||||
item.SetProviderId(MetadataProviders.MusicBrainzArtist, mbz);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "MusicBrainzReleaseGroupId":
|
|
||||||
{
|
|
||||||
var mbz = reader.ReadElementContentAsString();
|
|
||||||
if (!string.IsNullOrWhiteSpace(mbz))
|
|
||||||
{
|
|
||||||
item.SetProviderId(MetadataProviders.MusicBrainzReleaseGroup, mbz);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "TVRageId":
|
|
||||||
{
|
|
||||||
var id = reader.ReadElementContentAsString();
|
|
||||||
if (!string.IsNullOrWhiteSpace(id))
|
|
||||||
{
|
|
||||||
item.SetProviderId(MetadataProviders.TvRage, id);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "TvMazeId":
|
|
||||||
{
|
|
||||||
var id = reader.ReadElementContentAsString();
|
|
||||||
if (!string.IsNullOrWhiteSpace(id))
|
|
||||||
{
|
|
||||||
item.SetProviderId(MetadataProviders.TvMaze, id);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "AudioDbArtistId":
|
|
||||||
{
|
|
||||||
var id = reader.ReadElementContentAsString();
|
|
||||||
if (!string.IsNullOrWhiteSpace(id))
|
|
||||||
{
|
|
||||||
item.SetProviderId(MetadataProviders.AudioDbArtist, id);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "AudioDbAlbumId":
|
|
||||||
{
|
|
||||||
var id = reader.ReadElementContentAsString();
|
|
||||||
if (!string.IsNullOrWhiteSpace(id))
|
|
||||||
{
|
|
||||||
item.SetProviderId(MetadataProviders.AudioDbAlbum, id);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "RottenTomatoesId":
|
|
||||||
var rtId = reader.ReadElementContentAsString();
|
|
||||||
if (!string.IsNullOrWhiteSpace(rtId))
|
|
||||||
{
|
|
||||||
item.SetProviderId(MetadataProviders.RottenTomatoes, rtId);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "TMDbId":
|
|
||||||
var tmdb = reader.ReadElementContentAsString();
|
|
||||||
if (!string.IsNullOrWhiteSpace(tmdb))
|
|
||||||
{
|
|
||||||
item.SetProviderId(MetadataProviders.Tmdb, tmdb);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "TMDbCollectionId":
|
|
||||||
case "CollectionNumber":
|
case "CollectionNumber":
|
||||||
var tmdbCollection = reader.ReadElementContentAsString();
|
var tmdbCollection = reader.ReadElementContentAsString();
|
||||||
if (!string.IsNullOrWhiteSpace(tmdbCollection))
|
if (!string.IsNullOrWhiteSpace(tmdbCollection))
|
||||||
|
@ -776,30 +699,6 @@ namespace MediaBrowser.Controller.Providers
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "TVcomId":
|
|
||||||
var TVcomId = reader.ReadElementContentAsString();
|
|
||||||
if (!string.IsNullOrWhiteSpace(TVcomId))
|
|
||||||
{
|
|
||||||
item.SetProviderId(MetadataProviders.Tvcom, TVcomId);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "Zap2ItId":
|
|
||||||
var zap2ItId = reader.ReadElementContentAsString();
|
|
||||||
if (!string.IsNullOrWhiteSpace(zap2ItId))
|
|
||||||
{
|
|
||||||
item.SetProviderId(MetadataProviders.Zap2It, zap2ItId);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "IMDB":
|
|
||||||
var imDbId = reader.ReadElementContentAsString();
|
|
||||||
if (!string.IsNullOrWhiteSpace(imDbId))
|
|
||||||
{
|
|
||||||
item.SetProviderId(MetadataProviders.Imdb, imDbId);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "Genres":
|
case "Genres":
|
||||||
{
|
{
|
||||||
using (var subtree = reader.ReadSubtree())
|
using (var subtree = reader.ReadSubtree())
|
||||||
|
@ -891,7 +790,19 @@ namespace MediaBrowser.Controller.Providers
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
reader.Skip();
|
if (_validProviderIds.ContainsKey(reader.Name))
|
||||||
|
{
|
||||||
|
var id = reader.ReadElementContentAsString();
|
||||||
|
if (!string.IsNullOrWhiteSpace(id))
|
||||||
|
{
|
||||||
|
item.SetProviderId(_validProviderIds[reader.Name], id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
reader.Skip();
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,8 +9,8 @@ namespace MediaBrowser.LocalMetadata.Parsers
|
||||||
{
|
{
|
||||||
public class BoxSetXmlParser : BaseItemXmlParser<BoxSet>
|
public class BoxSetXmlParser : BaseItemXmlParser<BoxSet>
|
||||||
{
|
{
|
||||||
public BoxSetXmlParser(ILogger logger)
|
public BoxSetXmlParser(ILogger logger, IProviderManager providerManager)
|
||||||
: base(logger)
|
: base(logger, providerManager)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,8 +20,8 @@ namespace MediaBrowser.LocalMetadata.Parsers
|
||||||
private List<LocalImageInfo> _imagesFound;
|
private List<LocalImageInfo> _imagesFound;
|
||||||
private readonly IFileSystem _fileSystem;
|
private readonly IFileSystem _fileSystem;
|
||||||
|
|
||||||
public EpisodeXmlParser(ILogger logger, IFileSystem fileSystem)
|
public EpisodeXmlParser(ILogger logger, IFileSystem fileSystem, IProviderManager providerManager)
|
||||||
: base(logger)
|
: base(logger, providerManager)
|
||||||
{
|
{
|
||||||
_fileSystem = fileSystem;
|
_fileSystem = fileSystem;
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,8 +10,8 @@ namespace MediaBrowser.LocalMetadata.Parsers
|
||||||
{
|
{
|
||||||
public class GameSystemXmlParser : BaseItemXmlParser<GameSystem>
|
public class GameSystemXmlParser : BaseItemXmlParser<GameSystem>
|
||||||
{
|
{
|
||||||
public GameSystemXmlParser(ILogger logger)
|
public GameSystemXmlParser(ILogger logger, IProviderManager providerManager)
|
||||||
: base(logger)
|
: base(logger, providerManager)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,8 +16,8 @@ namespace MediaBrowser.LocalMetadata.Parsers
|
||||||
{
|
{
|
||||||
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
|
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
|
||||||
|
|
||||||
public GameXmlParser(ILogger logger)
|
public GameXmlParser(ILogger logger, IProviderManager providerManager)
|
||||||
: base(logger)
|
: base(logger, providerManager)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,8 +12,8 @@ namespace MediaBrowser.LocalMetadata.Parsers
|
||||||
public class BaseVideoXmlParser<T> : BaseItemXmlParser<T>
|
public class BaseVideoXmlParser<T> : BaseItemXmlParser<T>
|
||||||
where T : Video
|
where T : Video
|
||||||
{
|
{
|
||||||
public BaseVideoXmlParser(ILogger logger)
|
public BaseVideoXmlParser(ILogger logger, IProviderManager providerManager)
|
||||||
: base(logger)
|
: base(logger, providerManager)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,15 +50,15 @@ namespace MediaBrowser.LocalMetadata.Parsers
|
||||||
|
|
||||||
public class MovieXmlParser : BaseVideoXmlParser<Movie>
|
public class MovieXmlParser : BaseVideoXmlParser<Movie>
|
||||||
{
|
{
|
||||||
public MovieXmlParser(ILogger logger) : base(logger)
|
public MovieXmlParser(ILogger logger, IProviderManager providerManager) : base(logger, providerManager)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class VideoXmlParser : BaseVideoXmlParser<Video>
|
public class VideoXmlParser : BaseVideoXmlParser<Video>
|
||||||
{
|
{
|
||||||
public VideoXmlParser(ILogger logger)
|
public VideoXmlParser(ILogger logger, IProviderManager providerManager)
|
||||||
: base(logger)
|
: base(logger, providerManager)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,8 +12,8 @@ namespace MediaBrowser.LocalMetadata.Parsers
|
||||||
/// Initializes a new instance of the <see cref="BaseItemXmlParser{T}" /> class.
|
/// Initializes a new instance of the <see cref="BaseItemXmlParser{T}" /> class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="logger">The logger.</param>
|
/// <param name="logger">The logger.</param>
|
||||||
public MusicVideoXmlParser(ILogger logger)
|
public MusicVideoXmlParser(ILogger logger, IProviderManager providerManager)
|
||||||
: base(logger)
|
: base(logger, providerManager)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,8 +11,8 @@ namespace MediaBrowser.LocalMetadata.Parsers
|
||||||
{
|
{
|
||||||
public class PlaylistXmlParser : BaseItemXmlParser<Playlist>
|
public class PlaylistXmlParser : BaseItemXmlParser<Playlist>
|
||||||
{
|
{
|
||||||
public PlaylistXmlParser(ILogger logger)
|
public PlaylistXmlParser(ILogger logger, IProviderManager providerManager)
|
||||||
: base(logger)
|
: base(logger, providerManager)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,8 +7,8 @@ namespace MediaBrowser.LocalMetadata.Parsers
|
||||||
{
|
{
|
||||||
public class SeasonXmlParser : BaseItemXmlParser<Season>
|
public class SeasonXmlParser : BaseItemXmlParser<Season>
|
||||||
{
|
{
|
||||||
public SeasonXmlParser(ILogger logger)
|
public SeasonXmlParser(ILogger logger, IProviderManager providerManager)
|
||||||
: base(logger)
|
: base(logger, providerManager)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,8 @@ namespace MediaBrowser.LocalMetadata.Parsers
|
||||||
/// Initializes a new instance of the <see cref="BaseItemXmlParser{T}" /> class.
|
/// Initializes a new instance of the <see cref="BaseItemXmlParser{T}" /> class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="logger">The logger.</param>
|
/// <param name="logger">The logger.</param>
|
||||||
public SeriesXmlParser(ILogger logger)
|
public SeriesXmlParser(ILogger logger, IProviderManager providerManager)
|
||||||
: base(logger)
|
: base(logger, providerManager)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,16 +14,18 @@ namespace MediaBrowser.LocalMetadata.Providers
|
||||||
public class BoxSetXmlProvider : BaseXmlProvider<BoxSet>
|
public class BoxSetXmlProvider : BaseXmlProvider<BoxSet>
|
||||||
{
|
{
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
|
private readonly IProviderManager _providerManager;
|
||||||
|
|
||||||
public BoxSetXmlProvider(IFileSystem fileSystem, ILogger logger)
|
public BoxSetXmlProvider(IFileSystem fileSystem, ILogger logger, IProviderManager providerManager)
|
||||||
: base(fileSystem)
|
: base(fileSystem)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
|
_providerManager = providerManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Fetch(MetadataResult<BoxSet> result, string path, CancellationToken cancellationToken)
|
protected override void Fetch(MetadataResult<BoxSet> result, string path, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
new BoxSetXmlParser(_logger).Fetch(result, path, cancellationToken);
|
new BoxSetXmlParser(_logger, _providerManager).Fetch(result, path, cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
|
protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
|
||||||
|
|
|
@ -13,11 +13,13 @@ namespace MediaBrowser.LocalMetadata.Providers
|
||||||
public class EpisodeXmlProvider : BaseXmlProvider<Episode>
|
public class EpisodeXmlProvider : BaseXmlProvider<Episode>
|
||||||
{
|
{
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
|
private readonly IProviderManager _providerManager;
|
||||||
|
|
||||||
public EpisodeXmlProvider(IFileSystem fileSystem, ILogger logger)
|
public EpisodeXmlProvider(IFileSystem fileSystem, ILogger logger, IProviderManager providerManager)
|
||||||
: base(fileSystem)
|
: base(fileSystem)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
|
_providerManager = providerManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Fetch(MetadataResult<Episode> result, string path, CancellationToken cancellationToken)
|
protected override void Fetch(MetadataResult<Episode> result, string path, CancellationToken cancellationToken)
|
||||||
|
@ -25,7 +27,7 @@ namespace MediaBrowser.LocalMetadata.Providers
|
||||||
var images = new List<LocalImageInfo>();
|
var images = new List<LocalImageInfo>();
|
||||||
var chapters = new List<ChapterInfo>();
|
var chapters = new List<ChapterInfo>();
|
||||||
|
|
||||||
new EpisodeXmlParser(_logger, FileSystem).Fetch(result, images, path, cancellationToken);
|
new EpisodeXmlParser(_logger, FileSystem, _providerManager).Fetch(result, images, path, cancellationToken);
|
||||||
|
|
||||||
result.Images = images;
|
result.Images = images;
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,16 +13,18 @@ namespace MediaBrowser.LocalMetadata.Providers
|
||||||
public class FolderXmlProvider : BaseXmlProvider<Folder>
|
public class FolderXmlProvider : BaseXmlProvider<Folder>
|
||||||
{
|
{
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
|
private readonly IProviderManager _providerManager;
|
||||||
|
|
||||||
public FolderXmlProvider(IFileSystem fileSystem, ILogger logger)
|
public FolderXmlProvider(IFileSystem fileSystem, ILogger logger, IProviderManager providerManager)
|
||||||
: base(fileSystem)
|
: base(fileSystem)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
|
_providerManager = providerManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Fetch(MetadataResult<Folder> result, string path, CancellationToken cancellationToken)
|
protected override void Fetch(MetadataResult<Folder> result, string path, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
new BaseItemXmlParser<Folder>(_logger).Fetch(result, path, cancellationToken);
|
new BaseItemXmlParser<Folder>(_logger, _providerManager).Fetch(result, path, cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
|
protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
|
||||||
|
|
|
@ -11,16 +11,18 @@ namespace MediaBrowser.LocalMetadata.Providers
|
||||||
public class GameSystemXmlProvider : BaseXmlProvider<GameSystem>
|
public class GameSystemXmlProvider : BaseXmlProvider<GameSystem>
|
||||||
{
|
{
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
|
private readonly IProviderManager _providerManager;
|
||||||
|
|
||||||
public GameSystemXmlProvider(IFileSystem fileSystem, ILogger logger)
|
public GameSystemXmlProvider(IFileSystem fileSystem, ILogger logger, IProviderManager providerManager)
|
||||||
: base(fileSystem)
|
: base(fileSystem)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
|
_providerManager = providerManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Fetch(MetadataResult<GameSystem> result, string path, CancellationToken cancellationToken)
|
protected override void Fetch(MetadataResult<GameSystem> result, string path, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
new GameSystemXmlParser(_logger).Fetch(result, path, cancellationToken);
|
new GameSystemXmlParser(_logger, _providerManager).Fetch(result, path, cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
|
protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
|
||||||
|
|
|
@ -11,16 +11,18 @@ namespace MediaBrowser.LocalMetadata.Providers
|
||||||
public class GameXmlProvider : BaseXmlProvider<Game>
|
public class GameXmlProvider : BaseXmlProvider<Game>
|
||||||
{
|
{
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
|
private readonly IProviderManager _providerManager;
|
||||||
|
|
||||||
public GameXmlProvider(IFileSystem fileSystem, ILogger logger)
|
public GameXmlProvider(IFileSystem fileSystem, ILogger logger, IProviderManager providerManager)
|
||||||
: base(fileSystem)
|
: base(fileSystem)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
|
_providerManager = providerManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Fetch(MetadataResult<Game> result, string path, CancellationToken cancellationToken)
|
protected override void Fetch(MetadataResult<Game> result, string path, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
new GameXmlParser(_logger).Fetch(result, path, cancellationToken);
|
new GameXmlParser(_logger, _providerManager).Fetch(result, path, cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
|
protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
|
||||||
|
|
|
@ -11,16 +11,18 @@ namespace MediaBrowser.LocalMetadata.Providers
|
||||||
public class MovieXmlProvider : BaseXmlProvider<Movie>
|
public class MovieXmlProvider : BaseXmlProvider<Movie>
|
||||||
{
|
{
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
|
private readonly IProviderManager _providerManager;
|
||||||
|
|
||||||
public MovieXmlProvider(IFileSystem fileSystem, ILogger logger)
|
public MovieXmlProvider(IFileSystem fileSystem, ILogger logger, IProviderManager providerManager)
|
||||||
: base(fileSystem)
|
: base(fileSystem)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
|
_providerManager = providerManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Fetch(MetadataResult<Movie> result, string path, CancellationToken cancellationToken)
|
protected override void Fetch(MetadataResult<Movie> result, string path, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
new MovieXmlParser(_logger).Fetch(result, path, cancellationToken);
|
new MovieXmlParser(_logger, _providerManager).Fetch(result, path, cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
|
protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
|
||||||
|
|
|
@ -10,16 +10,18 @@ namespace MediaBrowser.LocalMetadata.Providers
|
||||||
class MusicVideoXmlProvider : BaseXmlProvider<MusicVideo>
|
class MusicVideoXmlProvider : BaseXmlProvider<MusicVideo>
|
||||||
{
|
{
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
|
private readonly IProviderManager _providerManager;
|
||||||
|
|
||||||
public MusicVideoXmlProvider(IFileSystem fileSystem, ILogger logger)
|
public MusicVideoXmlProvider(IFileSystem fileSystem, ILogger logger, IProviderManager providerManager)
|
||||||
: base(fileSystem)
|
: base(fileSystem)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
|
_providerManager = providerManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Fetch(MetadataResult<MusicVideo> result, string path, CancellationToken cancellationToken)
|
protected override void Fetch(MetadataResult<MusicVideo> result, string path, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
new MusicVideoXmlParser(_logger).Fetch(result, path, cancellationToken);
|
new MusicVideoXmlParser(_logger, _providerManager).Fetch(result, path, cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
|
protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
|
||||||
|
|
|
@ -10,16 +10,18 @@ namespace MediaBrowser.LocalMetadata.Providers
|
||||||
public class PersonXmlProvider : BaseXmlProvider<Person>
|
public class PersonXmlProvider : BaseXmlProvider<Person>
|
||||||
{
|
{
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
|
private readonly IProviderManager _providerManager;
|
||||||
|
|
||||||
public PersonXmlProvider(IFileSystem fileSystem, ILogger logger)
|
public PersonXmlProvider(IFileSystem fileSystem, ILogger logger, IProviderManager providerManager)
|
||||||
: base(fileSystem)
|
: base(fileSystem)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
|
_providerManager = providerManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Fetch(MetadataResult<Person> result, string path, CancellationToken cancellationToken)
|
protected override void Fetch(MetadataResult<Person> result, string path, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
new BaseItemXmlParser<Person>(_logger).Fetch(result, path, cancellationToken);
|
new BaseItemXmlParser<Person>(_logger, _providerManager).Fetch(result, path, cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
|
protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
|
||||||
|
|
|
@ -11,16 +11,18 @@ namespace MediaBrowser.LocalMetadata.Providers
|
||||||
class PlaylistXmlProvider : BaseXmlProvider<Playlist>
|
class PlaylistXmlProvider : BaseXmlProvider<Playlist>
|
||||||
{
|
{
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
|
private readonly IProviderManager _providerManager;
|
||||||
|
|
||||||
public PlaylistXmlProvider(IFileSystem fileSystem, ILogger logger)
|
public PlaylistXmlProvider(IFileSystem fileSystem, ILogger logger, IProviderManager providerManager)
|
||||||
: base(fileSystem)
|
: base(fileSystem)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
|
_providerManager = providerManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Fetch(MetadataResult<Playlist> result, string path, CancellationToken cancellationToken)
|
protected override void Fetch(MetadataResult<Playlist> result, string path, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
new PlaylistXmlParser(_logger).Fetch(result, path, cancellationToken);
|
new PlaylistXmlParser(_logger, _providerManager).Fetch(result, path, cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
|
protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
|
||||||
|
|
|
@ -14,16 +14,18 @@ namespace MediaBrowser.LocalMetadata.Providers
|
||||||
public class SeasonXmlProvider : BaseXmlProvider<Season>, IHasOrder
|
public class SeasonXmlProvider : BaseXmlProvider<Season>, IHasOrder
|
||||||
{
|
{
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
|
private readonly IProviderManager _providerManager;
|
||||||
|
|
||||||
public SeasonXmlProvider(IFileSystem fileSystem, ILogger logger)
|
public SeasonXmlProvider(IFileSystem fileSystem, ILogger logger, IProviderManager providerManager)
|
||||||
: base(fileSystem)
|
: base(fileSystem)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
|
_providerManager = providerManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Fetch(MetadataResult<Season> result, string path, CancellationToken cancellationToken)
|
protected override void Fetch(MetadataResult<Season> result, string path, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
new SeasonXmlParser(_logger).Fetch(result, path, cancellationToken);
|
new SeasonXmlParser(_logger, _providerManager).Fetch(result, path, cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
|
protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
|
||||||
|
|
|
@ -14,16 +14,18 @@ namespace MediaBrowser.LocalMetadata.Providers
|
||||||
public class SeriesXmlProvider : BaseXmlProvider<Series>, IHasOrder
|
public class SeriesXmlProvider : BaseXmlProvider<Series>, IHasOrder
|
||||||
{
|
{
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
|
private readonly IProviderManager _providerManager;
|
||||||
|
|
||||||
public SeriesXmlProvider(IFileSystem fileSystem, ILogger logger)
|
public SeriesXmlProvider(IFileSystem fileSystem, ILogger logger, IProviderManager providerManager)
|
||||||
: base(fileSystem)
|
: base(fileSystem)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
|
_providerManager = providerManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Fetch(MetadataResult<Series> result, string path, CancellationToken cancellationToken)
|
protected override void Fetch(MetadataResult<Series> result, string path, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
new SeriesXmlParser(_logger).Fetch(result, path, cancellationToken);
|
new SeriesXmlParser(_logger, _providerManager).Fetch(result, path, cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
|
protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
|
||||||
|
|
|
@ -10,16 +10,18 @@ namespace MediaBrowser.LocalMetadata.Providers
|
||||||
class VideoXmlProvider : BaseXmlProvider<Video>
|
class VideoXmlProvider : BaseXmlProvider<Video>
|
||||||
{
|
{
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
|
private readonly IProviderManager _providerManager;
|
||||||
|
|
||||||
public VideoXmlProvider(IFileSystem fileSystem, ILogger logger)
|
public VideoXmlProvider(IFileSystem fileSystem, ILogger logger, IProviderManager providerManager)
|
||||||
: base(fileSystem)
|
: base(fileSystem)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
|
_providerManager = providerManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Fetch(MetadataResult<Video> result, string path, CancellationToken cancellationToken)
|
protected override void Fetch(MetadataResult<Video> result, string path, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
new VideoXmlParser(_logger).Fetch(result, path, cancellationToken);
|
new VideoXmlParser(_logger, _providerManager).Fetch(result, path, cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
|
protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
|
||||||
|
|
|
@ -133,7 +133,7 @@ namespace MediaBrowser.LocalMetadata.Savers
|
||||||
/// <param name="xmlTagsUsed">The XML tags used.</param>
|
/// <param name="xmlTagsUsed">The XML tags used.</param>
|
||||||
public static void Save(StringBuilder xml, string path, List<string> xmlTagsUsed, IServerConfigurationManager config, IFileSystem fileSystem)
|
public static void Save(StringBuilder xml, string path, List<string> xmlTagsUsed, IServerConfigurationManager config, IFileSystem fileSystem)
|
||||||
{
|
{
|
||||||
if (fileSystem.FileExists(path))
|
if (fileSystem.FileExists(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));
|
||||||
|
@ -145,7 +145,7 @@ namespace MediaBrowser.LocalMetadata.Savers
|
||||||
//Add the new node to the document.
|
//Add the new node to the document.
|
||||||
xmlDocument.InsertBefore(xmlDocument.CreateXmlDeclaration("1.0", "UTF-8", "yes"), xmlDocument.DocumentElement);
|
xmlDocument.InsertBefore(xmlDocument.CreateXmlDeclaration("1.0", "UTF-8", "yes"), xmlDocument.DocumentElement);
|
||||||
|
|
||||||
fileSystem.CreateDirectory(Path.GetDirectoryName(path));
|
fileSystem.CreateDirectory(Path.GetDirectoryName(path));
|
||||||
|
|
||||||
var wasHidden = false;
|
var wasHidden = false;
|
||||||
|
|
||||||
|
@ -445,121 +445,18 @@ namespace MediaBrowser.LocalMetadata.Savers
|
||||||
builder.Append("<RunningTime>" + Convert.ToInt32(timespan.TotalMinutes).ToString(UsCulture) + "</RunningTime>");
|
builder.Append("<RunningTime>" + Convert.ToInt32(timespan.TotalMinutes).ToString(UsCulture) + "</RunningTime>");
|
||||||
}
|
}
|
||||||
|
|
||||||
var imdb = item.GetProviderId(MetadataProviders.Imdb);
|
if (item.ProviderIds != null)
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(imdb))
|
|
||||||
{
|
{
|
||||||
builder.Append("<IMDB>" + SecurityElement.Escape(imdb) + "</IMDB>");
|
foreach (var providerKey in item.ProviderIds.Keys)
|
||||||
}
|
|
||||||
|
|
||||||
var tmdb = item.GetProviderId(MetadataProviders.Tmdb);
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(tmdb))
|
|
||||||
{
|
|
||||||
builder.Append("<TMDbId>" + SecurityElement.Escape(tmdb) + "</TMDbId>");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!(item is Series))
|
|
||||||
{
|
|
||||||
var tvdb = item.GetProviderId(MetadataProviders.Tvdb);
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(tvdb))
|
|
||||||
{
|
{
|
||||||
builder.Append("<TvDbId>" + SecurityElement.Escape(tvdb) + "</TvDbId>");
|
var providerId = item.ProviderIds[providerKey];
|
||||||
|
if (!string.IsNullOrEmpty(providerId))
|
||||||
|
{
|
||||||
|
builder.Append(string.Format("<{0}>{1}</{0}>", providerKey + "Id", SecurityElement.Escape(providerId)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var externalId = item.GetProviderId(MetadataProviders.Tvcom);
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(externalId))
|
|
||||||
{
|
|
||||||
builder.Append("<TVcomId>" + SecurityElement.Escape(externalId) + "</TVcomId>");
|
|
||||||
}
|
|
||||||
|
|
||||||
externalId = item.GetProviderId(MetadataProviders.RottenTomatoes);
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(externalId))
|
|
||||||
{
|
|
||||||
builder.Append("<RottenTomatoesId>" + SecurityElement.Escape(externalId) + "</RottenTomatoesId>");
|
|
||||||
}
|
|
||||||
|
|
||||||
externalId = item.GetProviderId(MetadataProviders.Zap2It);
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(externalId))
|
|
||||||
{
|
|
||||||
builder.Append("<Zap2ItId>" + SecurityElement.Escape(externalId) + "</Zap2ItId>");
|
|
||||||
}
|
|
||||||
|
|
||||||
externalId = item.GetProviderId(MetadataProviders.MusicBrainzAlbum);
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(externalId))
|
|
||||||
{
|
|
||||||
builder.Append("<MusicBrainzAlbumId>" + SecurityElement.Escape(externalId) + "</MusicBrainzAlbumId>");
|
|
||||||
}
|
|
||||||
|
|
||||||
externalId = item.GetProviderId(MetadataProviders.MusicBrainzAlbumArtist);
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(externalId))
|
|
||||||
{
|
|
||||||
builder.Append("<MusicBrainzAlbumArtistId>" + SecurityElement.Escape(externalId) + "</MusicBrainzAlbumArtistId>");
|
|
||||||
}
|
|
||||||
|
|
||||||
externalId = item.GetProviderId(MetadataProviders.MusicBrainzArtist);
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(externalId))
|
|
||||||
{
|
|
||||||
builder.Append("<MusicBrainzArtistId>" + SecurityElement.Escape(externalId) + "</MusicBrainzArtistId>");
|
|
||||||
}
|
|
||||||
|
|
||||||
externalId = item.GetProviderId(MetadataProviders.MusicBrainzReleaseGroup);
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(externalId))
|
|
||||||
{
|
|
||||||
builder.Append("<MusicBrainzReleaseGroupId>" + SecurityElement.Escape(externalId) + "</MusicBrainzReleaseGroupId>");
|
|
||||||
}
|
|
||||||
|
|
||||||
externalId = item.GetProviderId(MetadataProviders.Gamesdb);
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(externalId))
|
|
||||||
{
|
|
||||||
builder.Append("<GamesDbId>" + SecurityElement.Escape(externalId) + "</GamesDbId>");
|
|
||||||
}
|
|
||||||
|
|
||||||
externalId = item.GetProviderId(MetadataProviders.TmdbCollection);
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(externalId))
|
|
||||||
{
|
|
||||||
builder.Append("<TMDbCollectionId>" + SecurityElement.Escape(externalId) + "</TMDbCollectionId>");
|
|
||||||
}
|
|
||||||
|
|
||||||
externalId = item.GetProviderId(MetadataProviders.AudioDbArtist);
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(externalId))
|
|
||||||
{
|
|
||||||
builder.Append("<AudioDbArtistId>" + SecurityElement.Escape(externalId) + "</AudioDbArtistId>");
|
|
||||||
}
|
|
||||||
|
|
||||||
externalId = item.GetProviderId(MetadataProviders.AudioDbAlbum);
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(externalId))
|
|
||||||
{
|
|
||||||
builder.Append("<AudioDbAlbumId>" + SecurityElement.Escape(externalId) + "</AudioDbAlbumId>");
|
|
||||||
}
|
|
||||||
|
|
||||||
externalId = item.GetProviderId(MetadataProviders.TvRage);
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(externalId))
|
|
||||||
{
|
|
||||||
builder.Append("<TVRageId>" + SecurityElement.Escape(externalId) + "</TVRageId>");
|
|
||||||
}
|
|
||||||
|
|
||||||
externalId = item.GetProviderId(MetadataProviders.TvMaze);
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(externalId))
|
|
||||||
{
|
|
||||||
builder.Append("<TvMazeId>" + SecurityElement.Escape(externalId) + "</TvMazeId>");
|
|
||||||
}
|
|
||||||
|
|
||||||
var hasTagline = item as IHasTaglines;
|
var hasTagline = item as IHasTaglines;
|
||||||
if (hasTagline != null)
|
if (hasTagline != null)
|
||||||
{
|
{
|
||||||
|
|
|
@ -25,19 +25,22 @@ namespace MediaBrowser.XbmcMetadata.Parsers
|
||||||
/// The logger
|
/// The logger
|
||||||
/// </summary>
|
/// </summary>
|
||||||
protected ILogger Logger { get; private set; }
|
protected ILogger Logger { get; private set; }
|
||||||
|
protected IProviderManager ProviderManager { get; private set; }
|
||||||
|
|
||||||
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
|
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
|
||||||
private readonly IConfigurationManager _config;
|
private readonly IConfigurationManager _config;
|
||||||
|
private Dictionary<string, string> _validProviderIds;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes a new instance of the <see cref="BaseNfoParser{T}" /> class.
|
/// Initializes a new instance of the <see cref="BaseNfoParser{T}" /> class.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="logger">The logger.</param>
|
/// <param name="logger">The logger.</param>
|
||||||
/// <param name="config">The configuration.</param>
|
/// <param name="config">The configuration.</param>
|
||||||
public BaseNfoParser(ILogger logger, IConfigurationManager config)
|
public BaseNfoParser(ILogger logger, IConfigurationManager config, IProviderManager providerManager)
|
||||||
{
|
{
|
||||||
Logger = logger;
|
Logger = logger;
|
||||||
_config = config;
|
_config = config;
|
||||||
|
ProviderManager = providerManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -68,6 +71,24 @@ namespace MediaBrowser.XbmcMetadata.Parsers
|
||||||
ValidationType = ValidationType.None
|
ValidationType = ValidationType.None
|
||||||
};
|
};
|
||||||
|
|
||||||
|
_validProviderIds = _validProviderIds = new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase);
|
||||||
|
|
||||||
|
var idInfos = ProviderManager.GetExternalIdInfos(item.Item);
|
||||||
|
|
||||||
|
foreach (var info in idInfos)
|
||||||
|
{
|
||||||
|
var id = info.Key + "Id";
|
||||||
|
if (!_validProviderIds.ContainsKey(id))
|
||||||
|
{
|
||||||
|
_validProviderIds.Add(id, info.Key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Additional Mappings
|
||||||
|
_validProviderIds.Add("collectionnumber", "TmdbCollection");
|
||||||
|
_validProviderIds.Add("tmdbcolid", "TmdbCollection");
|
||||||
|
_validProviderIds.Add("imdb_id", "Imdb");
|
||||||
|
|
||||||
Fetch(item, metadataFile, settings, cancellationToken);
|
Fetch(item, metadataFile, settings, cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -760,14 +781,6 @@ namespace MediaBrowser.XbmcMetadata.Parsers
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case "tvdbid":
|
|
||||||
var tvdbId = reader.ReadElementContentAsString();
|
|
||||||
if (!string.IsNullOrWhiteSpace(tvdbId))
|
|
||||||
{
|
|
||||||
item.SetProviderId(MetadataProviders.Tvdb, tvdbId);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "votes":
|
case "votes":
|
||||||
{
|
{
|
||||||
var val = reader.ReadElementContentAsString();
|
var val = reader.ReadElementContentAsString();
|
||||||
|
@ -782,127 +795,6 @@ namespace MediaBrowser.XbmcMetadata.Parsers
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "musicbrainzalbumid":
|
|
||||||
{
|
|
||||||
var mbz = reader.ReadElementContentAsString();
|
|
||||||
if (!string.IsNullOrWhiteSpace(mbz))
|
|
||||||
{
|
|
||||||
item.SetProviderId(MetadataProviders.MusicBrainzAlbum, mbz);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "musicbrainzalbumartistid":
|
|
||||||
{
|
|
||||||
var mbz = reader.ReadElementContentAsString();
|
|
||||||
if (!string.IsNullOrWhiteSpace(mbz))
|
|
||||||
{
|
|
||||||
item.SetProviderId(MetadataProviders.MusicBrainzAlbumArtist, mbz);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "musicbrainzartistid":
|
|
||||||
{
|
|
||||||
var mbz = reader.ReadElementContentAsString();
|
|
||||||
if (!string.IsNullOrWhiteSpace(mbz))
|
|
||||||
{
|
|
||||||
item.SetProviderId(MetadataProviders.MusicBrainzArtist, mbz);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "musicbrainzreleasegroupid":
|
|
||||||
{
|
|
||||||
var mbz = reader.ReadElementContentAsString();
|
|
||||||
if (!string.IsNullOrWhiteSpace(mbz))
|
|
||||||
{
|
|
||||||
item.SetProviderId(MetadataProviders.MusicBrainzReleaseGroup, mbz);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "tvrageid":
|
|
||||||
{
|
|
||||||
var id = reader.ReadElementContentAsString();
|
|
||||||
if (!string.IsNullOrWhiteSpace(id))
|
|
||||||
{
|
|
||||||
item.SetProviderId(MetadataProviders.TvRage, id);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "tvmazeid":
|
|
||||||
{
|
|
||||||
var id = reader.ReadElementContentAsString();
|
|
||||||
if (!string.IsNullOrWhiteSpace(id))
|
|
||||||
{
|
|
||||||
item.SetProviderId(MetadataProviders.TvMaze, id);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "audiodbartistid":
|
|
||||||
{
|
|
||||||
var id = reader.ReadElementContentAsString();
|
|
||||||
if (!string.IsNullOrWhiteSpace(id))
|
|
||||||
{
|
|
||||||
item.SetProviderId(MetadataProviders.AudioDbArtist, id);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "audiodbalbumid":
|
|
||||||
{
|
|
||||||
var id = reader.ReadElementContentAsString();
|
|
||||||
if (!string.IsNullOrWhiteSpace(id))
|
|
||||||
{
|
|
||||||
item.SetProviderId(MetadataProviders.AudioDbAlbum, id);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "rottentomatoesid":
|
|
||||||
var rtId = reader.ReadElementContentAsString();
|
|
||||||
if (!string.IsNullOrWhiteSpace(rtId))
|
|
||||||
{
|
|
||||||
item.SetProviderId(MetadataProviders.RottenTomatoes, rtId);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "tmdbid":
|
|
||||||
var tmdb = reader.ReadElementContentAsString();
|
|
||||||
if (!string.IsNullOrWhiteSpace(tmdb))
|
|
||||||
{
|
|
||||||
item.SetProviderId(MetadataProviders.Tmdb, tmdb);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "collectionnumber":
|
|
||||||
case "tmdbcolid":
|
|
||||||
var tmdbCollection = reader.ReadElementContentAsString();
|
|
||||||
if (!string.IsNullOrWhiteSpace(tmdbCollection))
|
|
||||||
{
|
|
||||||
item.SetProviderId(MetadataProviders.TmdbCollection, tmdbCollection);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "tvcomid":
|
|
||||||
var TVcomId = reader.ReadElementContentAsString();
|
|
||||||
if (!string.IsNullOrWhiteSpace(TVcomId))
|
|
||||||
{
|
|
||||||
item.SetProviderId(MetadataProviders.Tvcom, TVcomId);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "zap2itid":
|
|
||||||
var zap2ItId = reader.ReadElementContentAsString();
|
|
||||||
if (!string.IsNullOrWhiteSpace(zap2ItId))
|
|
||||||
{
|
|
||||||
item.SetProviderId(MetadataProviders.Zap2It, zap2ItId);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "imdb_id":
|
|
||||||
case "imdbid":
|
|
||||||
var imDbId = reader.ReadElementContentAsString();
|
|
||||||
if (!string.IsNullOrWhiteSpace(imDbId))
|
|
||||||
{
|
|
||||||
item.SetProviderId(MetadataProviders.Imdb, imDbId);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "genre":
|
case "genre":
|
||||||
{
|
{
|
||||||
|
|
|
@ -12,7 +12,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers
|
||||||
{
|
{
|
||||||
public class EpisodeNfoParser : BaseNfoParser<Episode>
|
public class EpisodeNfoParser : BaseNfoParser<Episode>
|
||||||
{
|
{
|
||||||
public EpisodeNfoParser(ILogger logger, IConfigurationManager config) : base(logger, config)
|
public EpisodeNfoParser(ILogger logger, IConfigurationManager config, IProviderManager providerManager) : base(logger, config, providerManager)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,8 +10,8 @@ namespace MediaBrowser.XbmcMetadata.Parsers
|
||||||
{
|
{
|
||||||
class MovieNfoParser : BaseNfoParser<Video>
|
class MovieNfoParser : BaseNfoParser<Video>
|
||||||
{
|
{
|
||||||
public MovieNfoParser(ILogger logger, IConfigurationManager config)
|
public MovieNfoParser(ILogger logger, IConfigurationManager config, IProviderManager providerManager)
|
||||||
: base(logger, config)
|
: base(logger, config, providerManager)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers
|
||||||
{
|
{
|
||||||
public class SeasonNfoParser : BaseNfoParser<Season>
|
public class SeasonNfoParser : BaseNfoParser<Season>
|
||||||
{
|
{
|
||||||
public SeasonNfoParser(ILogger logger, IConfigurationManager config) : base(logger, config)
|
public SeasonNfoParser(ILogger logger, IConfigurationManager config, IProviderManager providerManager) : base(logger, config, providerManager)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers
|
||||||
{
|
{
|
||||||
public class SeriesNfoParser : BaseNfoParser<Series>
|
public class SeriesNfoParser : BaseNfoParser<Series>
|
||||||
{
|
{
|
||||||
public SeriesNfoParser(ILogger logger, IConfigurationManager config) : base(logger, config)
|
public SeriesNfoParser(ILogger logger, IConfigurationManager config, IProviderManager providerManager) : base(logger, config, providerManager)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,17 +13,19 @@ namespace MediaBrowser.XbmcMetadata.Providers
|
||||||
{
|
{
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
private readonly IConfigurationManager _config;
|
private readonly IConfigurationManager _config;
|
||||||
|
private readonly IProviderManager _providerManager;
|
||||||
|
|
||||||
public AlbumNfoProvider(IFileSystem fileSystem, ILogger logger, IConfigurationManager config)
|
public AlbumNfoProvider(IFileSystem fileSystem, ILogger logger, IConfigurationManager config, IProviderManager providerManager)
|
||||||
: base(fileSystem)
|
: base(fileSystem)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
_config = config;
|
_config = config;
|
||||||
|
_providerManager = providerManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Fetch(MetadataResult<MusicAlbum> result, string path, CancellationToken cancellationToken)
|
protected override void Fetch(MetadataResult<MusicAlbum> result, string path, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
new BaseNfoParser<MusicAlbum>(_logger, _config).Fetch(result, path, cancellationToken);
|
new BaseNfoParser<MusicAlbum>(_logger, _config, _providerManager).Fetch(result, path, cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
|
protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
|
||||||
|
|
|
@ -13,17 +13,19 @@ namespace MediaBrowser.XbmcMetadata.Providers
|
||||||
{
|
{
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
private readonly IConfigurationManager _config;
|
private readonly IConfigurationManager _config;
|
||||||
|
private readonly IProviderManager _providerManager;
|
||||||
|
|
||||||
public ArtistNfoProvider(IFileSystem fileSystem, ILogger logger, IConfigurationManager config)
|
public ArtistNfoProvider(IFileSystem fileSystem, ILogger logger, IConfigurationManager config, IProviderManager providerManager)
|
||||||
: base(fileSystem)
|
: base(fileSystem)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
_config = config;
|
_config = config;
|
||||||
|
_providerManager = providerManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Fetch(MetadataResult<MusicArtist> result, string path, CancellationToken cancellationToken)
|
protected override void Fetch(MetadataResult<MusicArtist> result, string path, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
new BaseNfoParser<MusicArtist>(_logger, _config).Fetch(result, path, cancellationToken);
|
new BaseNfoParser<MusicArtist>(_logger, _config, _providerManager).Fetch(result, path, cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
|
protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
|
||||||
|
|
|
@ -15,12 +15,14 @@ namespace MediaBrowser.XbmcMetadata.Providers
|
||||||
{
|
{
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
private readonly IConfigurationManager _config;
|
private readonly IConfigurationManager _config;
|
||||||
|
private readonly IProviderManager _providerManager;
|
||||||
|
|
||||||
public BaseVideoNfoProvider(IFileSystem fileSystem, ILogger logger, IConfigurationManager config)
|
public BaseVideoNfoProvider(IFileSystem fileSystem, ILogger logger, IConfigurationManager config, IProviderManager providerManager)
|
||||||
: base(fileSystem)
|
: base(fileSystem)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
_config = config;
|
_config = config;
|
||||||
|
_providerManager = providerManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Fetch(MetadataResult<T> result, string path, CancellationToken cancellationToken)
|
protected override void Fetch(MetadataResult<T> result, string path, CancellationToken cancellationToken)
|
||||||
|
@ -29,7 +31,7 @@ namespace MediaBrowser.XbmcMetadata.Providers
|
||||||
{
|
{
|
||||||
Item = result.Item
|
Item = result.Item
|
||||||
};
|
};
|
||||||
new MovieNfoParser(_logger, _config).Fetch(tmpItem, path, cancellationToken);
|
new MovieNfoParser(_logger, _config, _providerManager).Fetch(tmpItem, path, cancellationToken);
|
||||||
|
|
||||||
result.Item = (T)tmpItem.Item;
|
result.Item = (T)tmpItem.Item;
|
||||||
result.People = tmpItem.People;
|
result.People = tmpItem.People;
|
||||||
|
|
|
@ -14,19 +14,21 @@ namespace MediaBrowser.XbmcMetadata.Providers
|
||||||
{
|
{
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
private readonly IConfigurationManager _config;
|
private readonly IConfigurationManager _config;
|
||||||
|
private readonly IProviderManager _providerManager;
|
||||||
|
|
||||||
public EpisodeNfoProvider(IFileSystem fileSystem, ILogger logger, IConfigurationManager config)
|
public EpisodeNfoProvider(IFileSystem fileSystem, ILogger logger, IConfigurationManager config, IProviderManager providerManager)
|
||||||
: base(fileSystem)
|
: base(fileSystem)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
_config = config;
|
_config = config;
|
||||||
|
_providerManager = providerManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Fetch(MetadataResult<Episode> result, string path, CancellationToken cancellationToken)
|
protected override void Fetch(MetadataResult<Episode> result, string path, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var images = new List<LocalImageInfo>();
|
var images = new List<LocalImageInfo>();
|
||||||
|
|
||||||
new EpisodeNfoParser(_logger, _config).Fetch(result, images, path, cancellationToken);
|
new EpisodeNfoParser(_logger, _config, _providerManager).Fetch(result, images, path, cancellationToken);
|
||||||
|
|
||||||
result.Images = images;
|
result.Images = images;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,27 +2,28 @@
|
||||||
using MediaBrowser.Common.Configuration;
|
using MediaBrowser.Common.Configuration;
|
||||||
using MediaBrowser.Controller.Entities;
|
using MediaBrowser.Controller.Entities;
|
||||||
using MediaBrowser.Controller.Entities.Movies;
|
using MediaBrowser.Controller.Entities.Movies;
|
||||||
|
using MediaBrowser.Controller.Providers;
|
||||||
using MediaBrowser.Model.Logging;
|
using MediaBrowser.Model.Logging;
|
||||||
|
|
||||||
namespace MediaBrowser.XbmcMetadata.Providers
|
namespace MediaBrowser.XbmcMetadata.Providers
|
||||||
{
|
{
|
||||||
public class MovieNfoProvider : BaseVideoNfoProvider<Movie>
|
public class MovieNfoProvider : BaseVideoNfoProvider<Movie>
|
||||||
{
|
{
|
||||||
public MovieNfoProvider(IFileSystem fileSystem, ILogger logger, IConfigurationManager config) : base(fileSystem, logger, config)
|
public MovieNfoProvider(IFileSystem fileSystem, ILogger logger, IConfigurationManager config, IProviderManager providerManager) : base(fileSystem, logger, config, providerManager)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class MusicVideoNfoProvider : BaseVideoNfoProvider<MusicVideo>
|
public class MusicVideoNfoProvider : BaseVideoNfoProvider<MusicVideo>
|
||||||
{
|
{
|
||||||
public MusicVideoNfoProvider(IFileSystem fileSystem, ILogger logger, IConfigurationManager config) : base(fileSystem, logger, config)
|
public MusicVideoNfoProvider(IFileSystem fileSystem, ILogger logger, IConfigurationManager config, IProviderManager providerManager) : base(fileSystem, logger, config, providerManager)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public class VideoNfoProvider : BaseVideoNfoProvider<Video>
|
public class VideoNfoProvider : BaseVideoNfoProvider<Video>
|
||||||
{
|
{
|
||||||
public VideoNfoProvider(IFileSystem fileSystem, ILogger logger, IConfigurationManager config) : base(fileSystem, logger, config)
|
public VideoNfoProvider(IFileSystem fileSystem, ILogger logger, IConfigurationManager config, IProviderManager providerManager) : base(fileSystem, logger, config, providerManager)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,17 +13,19 @@ namespace MediaBrowser.XbmcMetadata.Providers
|
||||||
{
|
{
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
private readonly IConfigurationManager _config;
|
private readonly IConfigurationManager _config;
|
||||||
|
private readonly IProviderManager _providerManager;
|
||||||
|
|
||||||
public SeasonNfoProvider(IFileSystem fileSystem, ILogger logger, IConfigurationManager config)
|
public SeasonNfoProvider(IFileSystem fileSystem, ILogger logger, IConfigurationManager config, IProviderManager providerManager)
|
||||||
: base(fileSystem)
|
: base(fileSystem)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
_config = config;
|
_config = config;
|
||||||
|
_providerManager = providerManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Fetch(MetadataResult<Season> result, string path, CancellationToken cancellationToken)
|
protected override void Fetch(MetadataResult<Season> result, string path, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
new SeasonNfoParser(_logger, _config).Fetch(result, path, cancellationToken);
|
new SeasonNfoParser(_logger, _config, _providerManager).Fetch(result, path, cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
|
protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
|
||||||
|
|
|
@ -13,17 +13,19 @@ namespace MediaBrowser.XbmcMetadata.Providers
|
||||||
{
|
{
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
private readonly IConfigurationManager _config;
|
private readonly IConfigurationManager _config;
|
||||||
|
private readonly IProviderManager _providerManager;
|
||||||
|
|
||||||
public SeriesNfoProvider(IFileSystem fileSystem, ILogger logger, IConfigurationManager config)
|
public SeriesNfoProvider(IFileSystem fileSystem, ILogger logger, IConfigurationManager config, IProviderManager providerManager)
|
||||||
: base(fileSystem)
|
: base(fileSystem)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
_config = config;
|
_config = config;
|
||||||
|
_providerManager = providerManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Fetch(MetadataResult<Series> result, string path, CancellationToken cancellationToken)
|
protected override void Fetch(MetadataResult<Series> result, string path, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
new SeriesNfoParser(_logger, _config).Fetch(result, path, cancellationToken);
|
new SeriesNfoParser(_logger, _config, _providerManager).Fetch(result, path, cancellationToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
|
protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService)
|
||||||
|
|
|
@ -27,8 +27,8 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||||
{
|
{
|
||||||
private static readonly CultureInfo UsCulture = new CultureInfo("en-US");
|
private static readonly CultureInfo UsCulture = new CultureInfo("en-US");
|
||||||
|
|
||||||
private static readonly Dictionary<string, string> CommonTags = new[] {
|
private static readonly Dictionary<string, string> CommonTags = new[] {
|
||||||
|
|
||||||
"plot",
|
"plot",
|
||||||
"customrating",
|
"customrating",
|
||||||
"lockdata",
|
"lockdata",
|
||||||
|
@ -428,6 +428,8 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||||
/// <returns>Task.</returns>
|
/// <returns>Task.</returns>
|
||||||
public static void AddCommonNodes(BaseItem item, XmlWriter writer, ILibraryManager libraryManager, IUserManager userManager, IUserDataManager userDataRepo, IFileSystem fileSystem, IServerConfigurationManager config)
|
public static void AddCommonNodes(BaseItem item, XmlWriter writer, ILibraryManager libraryManager, IUserManager userManager, IUserDataManager userDataRepo, IFileSystem fileSystem, IServerConfigurationManager config)
|
||||||
{
|
{
|
||||||
|
var writtenProviderIds = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase);
|
||||||
|
|
||||||
var overview = (item.Overview ?? string.Empty)
|
var overview = (item.Overview ?? string.Empty)
|
||||||
.StripHtml()
|
.StripHtml()
|
||||||
.Replace(""", "'");
|
.Replace(""", "'");
|
||||||
|
@ -572,6 +574,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||||
if (!string.IsNullOrEmpty(rt))
|
if (!string.IsNullOrEmpty(rt))
|
||||||
{
|
{
|
||||||
writer.WriteElementString("rottentomatoesid", rt);
|
writer.WriteElementString("rottentomatoesid", rt);
|
||||||
|
writtenProviderIds.Add(MetadataProviders.RottenTomatoes.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
var tmdbCollection = item.GetProviderId(MetadataProviders.TmdbCollection);
|
var tmdbCollection = item.GetProviderId(MetadataProviders.TmdbCollection);
|
||||||
|
@ -579,6 +582,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||||
if (!string.IsNullOrEmpty(tmdbCollection))
|
if (!string.IsNullOrEmpty(tmdbCollection))
|
||||||
{
|
{
|
||||||
writer.WriteElementString("collectionnumber", tmdbCollection);
|
writer.WriteElementString("collectionnumber", tmdbCollection);
|
||||||
|
writtenProviderIds.Add(MetadataProviders.TmdbCollection.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
var imdb = item.GetProviderId(MetadataProviders.Imdb);
|
var imdb = item.GetProviderId(MetadataProviders.Imdb);
|
||||||
|
@ -592,6 +596,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||||
{
|
{
|
||||||
writer.WriteElementString("imdbid", imdb);
|
writer.WriteElementString("imdbid", imdb);
|
||||||
}
|
}
|
||||||
|
writtenProviderIds.Add(MetadataProviders.Imdb.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Series xml saver already saves this
|
// Series xml saver already saves this
|
||||||
|
@ -601,6 +606,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||||
if (!string.IsNullOrEmpty(tvdb))
|
if (!string.IsNullOrEmpty(tvdb))
|
||||||
{
|
{
|
||||||
writer.WriteElementString("tvdbid", tvdb);
|
writer.WriteElementString("tvdbid", tvdb);
|
||||||
|
writtenProviderIds.Add(MetadataProviders.Tvdb.ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -608,12 +614,14 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||||
if (!string.IsNullOrEmpty(tmdb))
|
if (!string.IsNullOrEmpty(tmdb))
|
||||||
{
|
{
|
||||||
writer.WriteElementString("tmdbid", tmdb);
|
writer.WriteElementString("tmdbid", tmdb);
|
||||||
|
writtenProviderIds.Add(MetadataProviders.Tmdb.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
var tvcom = item.GetProviderId(MetadataProviders.Tvcom);
|
var tvcom = item.GetProviderId(MetadataProviders.Tvcom);
|
||||||
if (!string.IsNullOrEmpty(tvcom))
|
if (!string.IsNullOrEmpty(tvcom))
|
||||||
{
|
{
|
||||||
writer.WriteElementString("tvcomid", tvcom);
|
writer.WriteElementString("tvcomid", tvcom);
|
||||||
|
writtenProviderIds.Add(MetadataProviders.Tvcom.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(item.PreferredMetadataLanguage))
|
if (!string.IsNullOrEmpty(item.PreferredMetadataLanguage))
|
||||||
|
@ -766,6 +774,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||||
if (!string.IsNullOrEmpty(externalId))
|
if (!string.IsNullOrEmpty(externalId))
|
||||||
{
|
{
|
||||||
writer.WriteElementString("audiodbartistid", externalId);
|
writer.WriteElementString("audiodbartistid", externalId);
|
||||||
|
writtenProviderIds.Add(MetadataProviders.AudioDbArtist.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
externalId = item.GetProviderId(MetadataProviders.AudioDbAlbum);
|
externalId = item.GetProviderId(MetadataProviders.AudioDbAlbum);
|
||||||
|
@ -773,6 +782,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||||
if (!string.IsNullOrEmpty(externalId))
|
if (!string.IsNullOrEmpty(externalId))
|
||||||
{
|
{
|
||||||
writer.WriteElementString("audiodbalbumid", externalId);
|
writer.WriteElementString("audiodbalbumid", externalId);
|
||||||
|
writtenProviderIds.Add(MetadataProviders.AudioDbAlbum.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
externalId = item.GetProviderId(MetadataProviders.Zap2It);
|
externalId = item.GetProviderId(MetadataProviders.Zap2It);
|
||||||
|
@ -780,6 +790,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||||
if (!string.IsNullOrEmpty(externalId))
|
if (!string.IsNullOrEmpty(externalId))
|
||||||
{
|
{
|
||||||
writer.WriteElementString("zap2itid", externalId);
|
writer.WriteElementString("zap2itid", externalId);
|
||||||
|
writtenProviderIds.Add(MetadataProviders.Zap2It.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
externalId = item.GetProviderId(MetadataProviders.MusicBrainzAlbum);
|
externalId = item.GetProviderId(MetadataProviders.MusicBrainzAlbum);
|
||||||
|
@ -787,6 +798,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||||
if (!string.IsNullOrEmpty(externalId))
|
if (!string.IsNullOrEmpty(externalId))
|
||||||
{
|
{
|
||||||
writer.WriteElementString("musicbrainzalbumid", externalId);
|
writer.WriteElementString("musicbrainzalbumid", externalId);
|
||||||
|
writtenProviderIds.Add(MetadataProviders.MusicBrainzAlbum.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
externalId = item.GetProviderId(MetadataProviders.MusicBrainzAlbumArtist);
|
externalId = item.GetProviderId(MetadataProviders.MusicBrainzAlbumArtist);
|
||||||
|
@ -794,6 +806,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||||
if (!string.IsNullOrEmpty(externalId))
|
if (!string.IsNullOrEmpty(externalId))
|
||||||
{
|
{
|
||||||
writer.WriteElementString("musicbrainzalbumartistid", externalId);
|
writer.WriteElementString("musicbrainzalbumartistid", externalId);
|
||||||
|
writtenProviderIds.Add(MetadataProviders.MusicBrainzAlbumArtist.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
externalId = item.GetProviderId(MetadataProviders.MusicBrainzArtist);
|
externalId = item.GetProviderId(MetadataProviders.MusicBrainzArtist);
|
||||||
|
@ -801,6 +814,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||||
if (!string.IsNullOrEmpty(externalId))
|
if (!string.IsNullOrEmpty(externalId))
|
||||||
{
|
{
|
||||||
writer.WriteElementString("musicbrainzartistid", externalId);
|
writer.WriteElementString("musicbrainzartistid", externalId);
|
||||||
|
writtenProviderIds.Add(MetadataProviders.MusicBrainzArtist.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
externalId = item.GetProviderId(MetadataProviders.MusicBrainzReleaseGroup);
|
externalId = item.GetProviderId(MetadataProviders.MusicBrainzReleaseGroup);
|
||||||
|
@ -808,24 +822,33 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||||
if (!string.IsNullOrEmpty(externalId))
|
if (!string.IsNullOrEmpty(externalId))
|
||||||
{
|
{
|
||||||
writer.WriteElementString("musicbrainzreleasegroupid", externalId);
|
writer.WriteElementString("musicbrainzreleasegroupid", externalId);
|
||||||
|
writtenProviderIds.Add(MetadataProviders.MusicBrainzReleaseGroup.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
externalId = item.GetProviderId(MetadataProviders.Gamesdb);
|
externalId = item.GetProviderId(MetadataProviders.Gamesdb);
|
||||||
if (!string.IsNullOrEmpty(externalId))
|
if (!string.IsNullOrEmpty(externalId))
|
||||||
{
|
{
|
||||||
writer.WriteElementString("gamesdbid", externalId);
|
writer.WriteElementString("gamesdbid", externalId);
|
||||||
|
writtenProviderIds.Add(MetadataProviders.Gamesdb.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
externalId = item.GetProviderId(MetadataProviders.TvRage);
|
externalId = item.GetProviderId(MetadataProviders.TvRage);
|
||||||
if (!string.IsNullOrEmpty(externalId))
|
if (!string.IsNullOrEmpty(externalId))
|
||||||
{
|
{
|
||||||
writer.WriteElementString("tvrageid", externalId);
|
writer.WriteElementString("tvrageid", externalId);
|
||||||
|
writtenProviderIds.Add(MetadataProviders.TvRage.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
externalId = item.GetProviderId(MetadataProviders.TvMaze);
|
if (item.ProviderIds != null)
|
||||||
if (!string.IsNullOrEmpty(externalId))
|
|
||||||
{
|
{
|
||||||
writer.WriteElementString("tvmazeid", externalId);
|
foreach (var providerKey in item.ProviderIds.Keys)
|
||||||
|
{
|
||||||
|
var providerId = item.ProviderIds[providerKey];
|
||||||
|
if (!string.IsNullOrEmpty(providerId) && !writtenProviderIds.Contains(providerKey))
|
||||||
|
{
|
||||||
|
writer.WriteElementString(providerKey.ToLower() + "id", providerId);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.SaveImagePathsInNfo)
|
if (options.SaveImagePathsInNfo)
|
||||||
|
|
|
@ -65,9 +65,6 @@ EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emby.Drawing", "Emby.Drawing\Emby.Drawing.csproj", "{08FFF49B-F175-4807-A2B5-73B0EBD9F716}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Emby.Drawing", "Emby.Drawing\Emby.Drawing.csproj", "{08FFF49B-F175-4807-A2B5-73B0EBD9F716}"
|
||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(Performance) = preSolution
|
|
||||||
HasPerformanceSessions = true
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
Debug|Mixed Platforms = Debug|Mixed Platforms
|
Debug|Mixed Platforms = Debug|Mixed Platforms
|
||||||
|
|
Loading…
Reference in New Issue
Block a user