mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-04-25 19:44:43 +01:00
Programmatic provider id handling for xml and nfo persistence
This commit is contained in:
@@ -25,19 +25,22 @@ namespace MediaBrowser.XbmcMetadata.Parsers
|
||||
/// The logger
|
||||
/// </summary>
|
||||
protected ILogger Logger { get; private set; }
|
||||
protected IProviderManager ProviderManager { get; private set; }
|
||||
|
||||
private readonly CultureInfo _usCulture = new CultureInfo("en-US");
|
||||
private readonly IConfigurationManager _config;
|
||||
private Dictionary<string, string> _validProviderIds;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="BaseNfoParser{T}" /> class.
|
||||
/// </summary>
|
||||
/// <param name="logger">The logger.</param>
|
||||
/// <param name="config">The configuration.</param>
|
||||
public BaseNfoParser(ILogger logger, IConfigurationManager config)
|
||||
public BaseNfoParser(ILogger logger, IConfigurationManager config, IProviderManager providerManager)
|
||||
{
|
||||
Logger = logger;
|
||||
_config = config;
|
||||
ProviderManager = providerManager;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -68,6 +71,24 @@ namespace MediaBrowser.XbmcMetadata.Parsers
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -760,14 +781,6 @@ namespace MediaBrowser.XbmcMetadata.Parsers
|
||||
break;
|
||||
}
|
||||
|
||||
case "tvdbid":
|
||||
var tvdbId = reader.ReadElementContentAsString();
|
||||
if (!string.IsNullOrWhiteSpace(tvdbId))
|
||||
{
|
||||
item.SetProviderId(MetadataProviders.Tvdb, tvdbId);
|
||||
}
|
||||
break;
|
||||
|
||||
case "votes":
|
||||
{
|
||||
var val = reader.ReadElementContentAsString();
|
||||
@@ -782,127 +795,6 @@ namespace MediaBrowser.XbmcMetadata.Parsers
|
||||
}
|
||||
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":
|
||||
{
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers
|
||||
{
|
||||
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>
|
||||
{
|
||||
public MovieNfoParser(ILogger logger, IConfigurationManager config)
|
||||
: base(logger, config)
|
||||
public MovieNfoParser(ILogger logger, IConfigurationManager config, IProviderManager providerManager)
|
||||
: base(logger, config, providerManager)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ namespace MediaBrowser.XbmcMetadata.Parsers
|
||||
{
|
||||
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 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 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)
|
||||
{
|
||||
_logger = logger;
|
||||
_config = config;
|
||||
_providerManager = providerManager;
|
||||
}
|
||||
|
||||
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)
|
||||
|
||||
@@ -13,17 +13,19 @@ namespace MediaBrowser.XbmcMetadata.Providers
|
||||
{
|
||||
private readonly ILogger _logger;
|
||||
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)
|
||||
{
|
||||
_logger = logger;
|
||||
_config = config;
|
||||
_providerManager = providerManager;
|
||||
}
|
||||
|
||||
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)
|
||||
|
||||
@@ -15,12 +15,14 @@ namespace MediaBrowser.XbmcMetadata.Providers
|
||||
{
|
||||
private readonly ILogger _logger;
|
||||
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)
|
||||
{
|
||||
_logger = logger;
|
||||
_config = config;
|
||||
_providerManager = providerManager;
|
||||
}
|
||||
|
||||
protected override void Fetch(MetadataResult<T> result, string path, CancellationToken cancellationToken)
|
||||
@@ -29,7 +31,7 @@ namespace MediaBrowser.XbmcMetadata.Providers
|
||||
{
|
||||
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.People = tmpItem.People;
|
||||
|
||||
@@ -14,19 +14,21 @@ namespace MediaBrowser.XbmcMetadata.Providers
|
||||
{
|
||||
private readonly ILogger _logger;
|
||||
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)
|
||||
{
|
||||
_logger = logger;
|
||||
_config = config;
|
||||
_providerManager = providerManager;
|
||||
}
|
||||
|
||||
protected override void Fetch(MetadataResult<Episode> result, string path, CancellationToken cancellationToken)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -2,27 +2,28 @@
|
||||
using MediaBrowser.Common.Configuration;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Entities.Movies;
|
||||
using MediaBrowser.Controller.Providers;
|
||||
using MediaBrowser.Model.Logging;
|
||||
|
||||
namespace MediaBrowser.XbmcMetadata.Providers
|
||||
{
|
||||
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 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 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 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)
|
||||
{
|
||||
_logger = logger;
|
||||
_config = config;
|
||||
_providerManager = providerManager;
|
||||
}
|
||||
|
||||
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)
|
||||
|
||||
@@ -13,17 +13,19 @@ namespace MediaBrowser.XbmcMetadata.Providers
|
||||
{
|
||||
private readonly ILogger _logger;
|
||||
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)
|
||||
{
|
||||
_logger = logger;
|
||||
_config = config;
|
||||
_providerManager = providerManager;
|
||||
}
|
||||
|
||||
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)
|
||||
|
||||
@@ -27,8 +27,8 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||
{
|
||||
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",
|
||||
"customrating",
|
||||
"lockdata",
|
||||
@@ -428,6 +428,8 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||
/// <returns>Task.</returns>
|
||||
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)
|
||||
.StripHtml()
|
||||
.Replace(""", "'");
|
||||
@@ -572,6 +574,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||
if (!string.IsNullOrEmpty(rt))
|
||||
{
|
||||
writer.WriteElementString("rottentomatoesid", rt);
|
||||
writtenProviderIds.Add(MetadataProviders.RottenTomatoes.ToString());
|
||||
}
|
||||
|
||||
var tmdbCollection = item.GetProviderId(MetadataProviders.TmdbCollection);
|
||||
@@ -579,6 +582,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||
if (!string.IsNullOrEmpty(tmdbCollection))
|
||||
{
|
||||
writer.WriteElementString("collectionnumber", tmdbCollection);
|
||||
writtenProviderIds.Add(MetadataProviders.TmdbCollection.ToString());
|
||||
}
|
||||
|
||||
var imdb = item.GetProviderId(MetadataProviders.Imdb);
|
||||
@@ -592,6 +596,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||
{
|
||||
writer.WriteElementString("imdbid", imdb);
|
||||
}
|
||||
writtenProviderIds.Add(MetadataProviders.Imdb.ToString());
|
||||
}
|
||||
|
||||
// Series xml saver already saves this
|
||||
@@ -601,6 +606,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||
if (!string.IsNullOrEmpty(tvdb))
|
||||
{
|
||||
writer.WriteElementString("tvdbid", tvdb);
|
||||
writtenProviderIds.Add(MetadataProviders.Tvdb.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -608,12 +614,14 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||
if (!string.IsNullOrEmpty(tmdb))
|
||||
{
|
||||
writer.WriteElementString("tmdbid", tmdb);
|
||||
writtenProviderIds.Add(MetadataProviders.Tmdb.ToString());
|
||||
}
|
||||
|
||||
var tvcom = item.GetProviderId(MetadataProviders.Tvcom);
|
||||
if (!string.IsNullOrEmpty(tvcom))
|
||||
{
|
||||
writer.WriteElementString("tvcomid", tvcom);
|
||||
writtenProviderIds.Add(MetadataProviders.Tvcom.ToString());
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(item.PreferredMetadataLanguage))
|
||||
@@ -766,6 +774,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||
if (!string.IsNullOrEmpty(externalId))
|
||||
{
|
||||
writer.WriteElementString("audiodbartistid", externalId);
|
||||
writtenProviderIds.Add(MetadataProviders.AudioDbArtist.ToString());
|
||||
}
|
||||
|
||||
externalId = item.GetProviderId(MetadataProviders.AudioDbAlbum);
|
||||
@@ -773,6 +782,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||
if (!string.IsNullOrEmpty(externalId))
|
||||
{
|
||||
writer.WriteElementString("audiodbalbumid", externalId);
|
||||
writtenProviderIds.Add(MetadataProviders.AudioDbAlbum.ToString());
|
||||
}
|
||||
|
||||
externalId = item.GetProviderId(MetadataProviders.Zap2It);
|
||||
@@ -780,6 +790,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||
if (!string.IsNullOrEmpty(externalId))
|
||||
{
|
||||
writer.WriteElementString("zap2itid", externalId);
|
||||
writtenProviderIds.Add(MetadataProviders.Zap2It.ToString());
|
||||
}
|
||||
|
||||
externalId = item.GetProviderId(MetadataProviders.MusicBrainzAlbum);
|
||||
@@ -787,6 +798,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||
if (!string.IsNullOrEmpty(externalId))
|
||||
{
|
||||
writer.WriteElementString("musicbrainzalbumid", externalId);
|
||||
writtenProviderIds.Add(MetadataProviders.MusicBrainzAlbum.ToString());
|
||||
}
|
||||
|
||||
externalId = item.GetProviderId(MetadataProviders.MusicBrainzAlbumArtist);
|
||||
@@ -794,6 +806,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||
if (!string.IsNullOrEmpty(externalId))
|
||||
{
|
||||
writer.WriteElementString("musicbrainzalbumartistid", externalId);
|
||||
writtenProviderIds.Add(MetadataProviders.MusicBrainzAlbumArtist.ToString());
|
||||
}
|
||||
|
||||
externalId = item.GetProviderId(MetadataProviders.MusicBrainzArtist);
|
||||
@@ -801,6 +814,7 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||
if (!string.IsNullOrEmpty(externalId))
|
||||
{
|
||||
writer.WriteElementString("musicbrainzartistid", externalId);
|
||||
writtenProviderIds.Add(MetadataProviders.MusicBrainzArtist.ToString());
|
||||
}
|
||||
|
||||
externalId = item.GetProviderId(MetadataProviders.MusicBrainzReleaseGroup);
|
||||
@@ -808,24 +822,33 @@ namespace MediaBrowser.XbmcMetadata.Savers
|
||||
if (!string.IsNullOrEmpty(externalId))
|
||||
{
|
||||
writer.WriteElementString("musicbrainzreleasegroupid", externalId);
|
||||
writtenProviderIds.Add(MetadataProviders.MusicBrainzReleaseGroup.ToString());
|
||||
}
|
||||
|
||||
externalId = item.GetProviderId(MetadataProviders.Gamesdb);
|
||||
if (!string.IsNullOrEmpty(externalId))
|
||||
{
|
||||
writer.WriteElementString("gamesdbid", externalId);
|
||||
writtenProviderIds.Add(MetadataProviders.Gamesdb.ToString());
|
||||
}
|
||||
|
||||
externalId = item.GetProviderId(MetadataProviders.TvRage);
|
||||
if (!string.IsNullOrEmpty(externalId))
|
||||
{
|
||||
writer.WriteElementString("tvrageid", externalId);
|
||||
writtenProviderIds.Add(MetadataProviders.TvRage.ToString());
|
||||
}
|
||||
|
||||
externalId = item.GetProviderId(MetadataProviders.TvMaze);
|
||||
if (!string.IsNullOrEmpty(externalId))
|
||||
if (item.ProviderIds != null)
|
||||
{
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user