|
|
|
@ -132,9 +132,20 @@ namespace Ombi.Schedule.Jobs.Jellyfin
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var existingTv = await _repo.GetByJellyfinId(tvShow.Id);
|
|
|
|
|
|
|
|
|
|
if (existingTv != null &&
|
|
|
|
|
( existingTv.ImdbId != tvShow.ProviderIds?.Imdb
|
|
|
|
|
|| existingTv.TheMovieDbId != tvShow.ProviderIds?.Tmdb
|
|
|
|
|
|| existingTv.TvDbId != tvShow.ProviderIds?.Tvdb))
|
|
|
|
|
{
|
|
|
|
|
_logger.LogDebug($"Series '{tvShow.Name}' has different IDs, probably a reidentification.");
|
|
|
|
|
await _repo.DeleteTv(existingTv);
|
|
|
|
|
existingTv = null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (existingTv == null)
|
|
|
|
|
{
|
|
|
|
|
_logger.LogDebug("Adding new TV Show {0}", tvShow.Name);
|
|
|
|
|
_logger.LogDebug("Adding TV Show {0}", tvShow.Name);
|
|
|
|
|
mediaToAdd.Add(new JellyfinContent
|
|
|
|
|
{
|
|
|
|
|
TvDbId = tvShow.ProviderIds?.Tvdb,
|
|
|
|
@ -230,22 +241,21 @@ namespace Ombi.Schedule.Jobs.Jellyfin
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
_logger.LogDebug($"Adding new movie {movieInfo.Name}");
|
|
|
|
|
content.Add(new JellyfinContent
|
|
|
|
|
{
|
|
|
|
|
ImdbId = movieInfo.ProviderIds.Imdb,
|
|
|
|
|
TheMovieDbId = movieInfo.ProviderIds?.Tmdb,
|
|
|
|
|
Title = movieInfo.Name,
|
|
|
|
|
Type = MediaType.Movie,
|
|
|
|
|
JellyfinId = movieInfo.Id,
|
|
|
|
|
Url = JellyfinHelper.GetJellyfinMediaUrl(movieInfo.Id, server?.ServerId, server.ServerHostname),
|
|
|
|
|
AddedAt = DateTime.UtcNow,
|
|
|
|
|
Quality = has4K ? null : quality,
|
|
|
|
|
Has4K = has4K
|
|
|
|
|
});
|
|
|
|
|
var newMovie = new JellyfinContent();
|
|
|
|
|
newMovie.AddedAt = DateTime.UtcNow;
|
|
|
|
|
MapJellyfinMovie(newMovie, movieInfo, server, has4K, quality);
|
|
|
|
|
content.Add(newMovie);;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (!quality.Equals(existingMovie?.Quality, StringComparison.InvariantCultureIgnoreCase))
|
|
|
|
|
var movieHasChanged = false;
|
|
|
|
|
if (existingMovie.ImdbId != movieInfo.ProviderIds.Imdb || existingMovie.TheMovieDbId != movieInfo.ProviderIds.Tmdb)
|
|
|
|
|
{
|
|
|
|
|
_logger.LogDebug($"Updating existing movie '{movieInfo.Name}'");
|
|
|
|
|
MapJellyfinMovie(existingMovie, movieInfo, server, has4K, quality);
|
|
|
|
|
movieHasChanged = true;
|
|
|
|
|
}
|
|
|
|
|
else if (!quality.Equals(existingMovie?.Quality, StringComparison.InvariantCultureIgnoreCase))
|
|
|
|
|
{
|
|
|
|
|
_logger.LogDebug($"We have found another quality for Movie '{movieInfo.Name}', Quality: '{quality}'");
|
|
|
|
|
existingMovie.Quality = has4K ? null : quality;
|
|
|
|
@ -255,6 +265,12 @@ namespace Ombi.Schedule.Jobs.Jellyfin
|
|
|
|
|
// If a 4k movie comes in (we don't store the quality on 4k)
|
|
|
|
|
// it will always get updated even know it's not changed
|
|
|
|
|
toUpdate.Add(existingMovie);
|
|
|
|
|
movieHasChanged = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (movieHasChanged)
|
|
|
|
|
{
|
|
|
|
|
toUpdate.Add(existingMovie);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
@ -264,6 +280,18 @@ namespace Ombi.Schedule.Jobs.Jellyfin
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void MapJellyfinMovie(JellyfinContent content, JellyfinMovie movieInfo, JellyfinServers server, bool has4K, string quality)
|
|
|
|
|
{
|
|
|
|
|
content.ImdbId = movieInfo.ProviderIds.Imdb;
|
|
|
|
|
content.TheMovieDbId = movieInfo.ProviderIds?.Tmdb;
|
|
|
|
|
content.Title = movieInfo.Name;
|
|
|
|
|
content.Type = MediaType.Movie;
|
|
|
|
|
content.JellyfinId = movieInfo.Id;
|
|
|
|
|
content.Url = JellyfinHelper.GetJellyfinMediaUrl(movieInfo.Id, server?.ServerId, server.ServerHostname);
|
|
|
|
|
content.Quality = has4K ? null : quality;
|
|
|
|
|
content.Has4K = has4K;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private bool ValidateSettings(JellyfinServers server)
|
|
|
|
|
{
|
|
|
|
|
if (server?.Ip == null || string.IsNullOrEmpty(server?.ApiKey))
|
|
|
|
|