Fixed: Images for some movies not downloading

Closes #8006

Co-Authored-By: Mark McDowall <markus101@users.noreply.github.com>
pull/9154/head
Qstick 1 year ago
parent feff609685
commit 248ac9619c

@ -7,9 +7,11 @@ function findImage(images, coverType) {
} }
function getUrl(image, coverType, size) { function getUrl(image, coverType, size) {
if (image) { const imageUrl = image?.url ?? image?.remoteUrl;
if (imageUrl) {
// Remove protocol // Remove protocol
let url = image.url.replace(/^https?:/, ''); let url = imageUrl.replace(/^https?:/, '');
url = url.replace(`${coverType}.jpg`, `${coverType}-${size}.jpg`); url = url.replace(`${coverType}.jpg`, `${coverType}-${size}.jpg`);
return url; return url;

@ -0,0 +1,16 @@
using FluentMigrator;
using NzbDrone.Core.Datastore.Migration.Framework;
namespace NzbDrone.Core.Datastore.Migration
{
[Migration(231)]
public class update_images_remote_url : NzbDroneMigrationBase
{
protected override void MainDbUpgrade()
{
Execute.Sql("UPDATE \"MovieMetadata\" SET \"Images\" = REPLACE(\"Images\", '\"url\"', '\"remoteUrl\"')");
Execute.Sql("UPDATE \"Credits\" SET \"Images\" = REPLACE(\"Images\", '\"url\"', '\"remoteUrl\"')");
Execute.Sql("UPDATE \"Collections\" SET \"Images\" = REPLACE(\"Images\", '\"url\"', '\"remoteUrl\"')");
}
}
}

@ -6,7 +6,6 @@ using System.Text;
using System.Xml; using System.Xml;
using System.Xml.Linq; using System.Xml.Linq;
using NLog; using NLog;
using NzbDrone.Common.Disk;
using NzbDrone.Common.Extensions; using NzbDrone.Common.Extensions;
using NzbDrone.Core.Extras.Metadata.Files; using NzbDrone.Core.Extras.Metadata.Files;
using NzbDrone.Core.MediaCover; using NzbDrone.Core.MediaCover;
@ -18,15 +17,12 @@ namespace NzbDrone.Core.Extras.Metadata.Consumers.Roksbox
public class RoksboxMetadata : MetadataBase<RoksboxMetadataSettings> public class RoksboxMetadata : MetadataBase<RoksboxMetadataSettings>
{ {
private readonly IMapCoversToLocal _mediaCoverService; private readonly IMapCoversToLocal _mediaCoverService;
private readonly IDiskProvider _diskProvider;
private readonly Logger _logger; private readonly Logger _logger;
public RoksboxMetadata(IMapCoversToLocal mediaCoverService, public RoksboxMetadata(IMapCoversToLocal mediaCoverService,
IDiskProvider diskProvider,
Logger logger) Logger logger)
{ {
_mediaCoverService = mediaCoverService; _mediaCoverService = mediaCoverService;
_diskProvider = diskProvider;
_logger = logger; _logger = logger;
} }

@ -6,7 +6,6 @@ using System.Text;
using System.Xml; using System.Xml;
using System.Xml.Linq; using System.Xml.Linq;
using NLog; using NLog;
using NzbDrone.Common.Disk;
using NzbDrone.Common.Extensions; using NzbDrone.Common.Extensions;
using NzbDrone.Core.Extras.Metadata.Files; using NzbDrone.Core.Extras.Metadata.Files;
using NzbDrone.Core.MediaCover; using NzbDrone.Core.MediaCover;
@ -18,15 +17,12 @@ namespace NzbDrone.Core.Extras.Metadata.Consumers.Wdtv
public class WdtvMetadata : MetadataBase<WdtvMetadataSettings> public class WdtvMetadata : MetadataBase<WdtvMetadataSettings>
{ {
private readonly IMapCoversToLocal _mediaCoverService; private readonly IMapCoversToLocal _mediaCoverService;
private readonly IDiskProvider _diskProvider;
private readonly Logger _logger; private readonly Logger _logger;
public WdtvMetadata(IMapCoversToLocal mediaCoverService, public WdtvMetadata(IMapCoversToLocal mediaCoverService,
IDiskProvider diskProvider,
Logger logger) Logger logger)
{ {
_mediaCoverService = mediaCoverService; _mediaCoverService = mediaCoverService;
_diskProvider = diskProvider;
_logger = logger; _logger = logger;
} }

@ -208,14 +208,14 @@ namespace NzbDrone.Core.Extras.Metadata.Consumers.Xbmc
if (thumbnail != null) if (thumbnail != null)
{ {
details.Add(new XElement("thumb", thumbnail.Url)); details.Add(new XElement("thumb", thumbnail.RemoteUrl));
} }
foreach (var poster in posters) foreach (var poster in posters)
{ {
if (poster != null && poster.Url != null) if (poster != null && poster.RemoteUrl != null)
{ {
details.Add(new XElement("thumb", new XAttribute("aspect", "poster"), new XAttribute("preview", poster.Url), poster.Url)); details.Add(new XElement("thumb", new XAttribute("aspect", "poster"), new XAttribute("preview", poster.RemoteUrl), poster.RemoteUrl));
} }
} }
@ -224,9 +224,9 @@ namespace NzbDrone.Core.Extras.Metadata.Consumers.Xbmc
var fanartElement = new XElement("fanart"); var fanartElement = new XElement("fanart");
foreach (var fanart in fanarts) foreach (var fanart in fanarts)
{ {
if (fanart != null && fanart.Url != null) if (fanart != null && fanart.RemoteUrl != null)
{ {
fanartElement.Add(new XElement("thumb", new XAttribute("preview", fanart.Url), fanart.Url)); fanartElement.Add(new XElement("thumb", new XAttribute("preview", fanart.RemoteUrl), fanart.RemoteUrl));
} }
} }
@ -366,9 +366,9 @@ namespace NzbDrone.Core.Extras.Metadata.Consumers.Xbmc
var headshot = credit.Images.FirstOrDefault(m => m.CoverType == MediaCoverTypes.Headshot); var headshot = credit.Images.FirstOrDefault(m => m.CoverType == MediaCoverTypes.Headshot);
if (headshot != null && headshot.Url != null) if (headshot != null && headshot.RemoteUrl != null)
{ {
actorElement.Add(new XElement("thumb", headshot.Url)); actorElement.Add(new XElement("thumb", headshot.RemoteUrl));
} }
details.Add(actorElement); details.Add(actorElement);

@ -141,16 +141,5 @@ namespace NzbDrone.Core.ImportLists.Radarr
{ {
failures.AddIfNotNull(_radarrV3Proxy.Test(Settings)); failures.AddIfNotNull(_radarrV3Proxy.Test(Settings));
} }
private static MediaCover.MediaCover MapImage(MediaCover.MediaCover arg, string baseUrl)
{
var newImage = new MediaCover.MediaCover
{
Url = string.Format("{0}{1}", baseUrl, arg.Url),
CoverType = arg.CoverType
};
return newImage;
}
} }
} }

@ -24,10 +24,10 @@ namespace NzbDrone.Core.MediaCover
{ {
} }
public MediaCover(MediaCoverTypes coverType, string url) public MediaCover(MediaCoverTypes coverType, string remoteUrl)
{ {
CoverType = coverType; CoverType = coverType;
Url = url; RemoteUrl = remoteUrl;
} }
} }
} }

@ -93,7 +93,6 @@ namespace NzbDrone.Core.MediaCover
// Movie isn't in Radarr yet, map via a proxy to circument referrer issues // Movie isn't in Radarr yet, map via a proxy to circument referrer issues
foreach (var mediaCover in covers) foreach (var mediaCover in covers)
{ {
mediaCover.RemoteUrl = mediaCover.Url;
mediaCover.Url = _mediaCoverProxy.RegisterUrl(mediaCover.RemoteUrl); mediaCover.Url = _mediaCoverProxy.RegisterUrl(mediaCover.RemoteUrl);
} }
} }
@ -108,7 +107,6 @@ namespace NzbDrone.Core.MediaCover
var filePath = GetCoverPath(movieId, mediaCover.CoverType); var filePath = GetCoverPath(movieId, mediaCover.CoverType);
mediaCover.RemoteUrl = mediaCover.Url;
mediaCover.Url = _configFileProvider.UrlBase + @"/MediaCover/" + movieId + "/" + mediaCover.CoverType.ToString().ToLower() + GetExtension(mediaCover.CoverType); mediaCover.Url = _configFileProvider.UrlBase + @"/MediaCover/" + movieId + "/" + mediaCover.CoverType.ToString().ToLower() + GetExtension(mediaCover.CoverType);
FileInfo file; FileInfo file;
@ -162,7 +160,7 @@ namespace NzbDrone.Core.MediaCover
try try
{ {
alreadyExists = _coverExistsSpecification.AlreadyExists(cover.Url, fileName); alreadyExists = _coverExistsSpecification.AlreadyExists(cover.RemoteUrl, fileName);
if (!alreadyExists) if (!alreadyExists)
{ {
@ -207,8 +205,8 @@ namespace NzbDrone.Core.MediaCover
{ {
var fileName = GetCoverPath(movie.Id, cover.CoverType); var fileName = GetCoverPath(movie.Id, cover.CoverType);
_logger.Info("Downloading {0} for {1} {2}", cover.CoverType, movie, cover.Url); _logger.Info("Downloading {0} for {1} {2}", cover.CoverType, movie, cover.RemoteUrl);
_httpClient.DownloadFile(cover.Url, fileName); _httpClient.DownloadFile(cover.RemoteUrl, fileName);
} }
private void EnsureResizedCovers(Movie movie, MediaCover cover, bool forceResize) private void EnsureResizedCovers(Movie movie, MediaCover cover, bool forceResize)

@ -646,7 +646,7 @@ namespace NzbDrone.Core.MetadataSource.SkyHook
{ {
return new MediaCover.MediaCover return new MediaCover.MediaCover
{ {
Url = arg.Url, RemoteUrl = arg.Url,
CoverType = MapCoverType(arg.CoverType) CoverType = MapCoverType(arg.CoverType)
}; };
} }

@ -45,7 +45,7 @@ namespace NzbDrone.Core.Notifications.Discord
{ {
embed.Thumbnail = new DiscordImage embed.Thumbnail = new DiscordImage
{ {
Url = message.Movie.MovieMetadata.Value.Images.FirstOrDefault(x => x.CoverType == MediaCoverTypes.Poster)?.Url Url = message.Movie.MovieMetadata.Value.Images.FirstOrDefault(x => x.CoverType == MediaCoverTypes.Poster)?.RemoteUrl
}; };
} }
@ -53,7 +53,7 @@ namespace NzbDrone.Core.Notifications.Discord
{ {
embed.Image = new DiscordImage embed.Image = new DiscordImage
{ {
Url = message.Movie.MovieMetadata.Value.Images.FirstOrDefault(x => x.CoverType == MediaCoverTypes.Fanart)?.Url Url = message.Movie.MovieMetadata.Value.Images.FirstOrDefault(x => x.CoverType == MediaCoverTypes.Fanart)?.RemoteUrl
}; };
} }
@ -145,7 +145,7 @@ namespace NzbDrone.Core.Notifications.Discord
{ {
embed.Thumbnail = new DiscordImage embed.Thumbnail = new DiscordImage
{ {
Url = message.Movie.MovieMetadata.Value.Images.FirstOrDefault(x => x.CoverType == MediaCoverTypes.Poster)?.Url Url = message.Movie.MovieMetadata.Value.Images.FirstOrDefault(x => x.CoverType == MediaCoverTypes.Poster)?.RemoteUrl
}; };
} }
@ -153,7 +153,7 @@ namespace NzbDrone.Core.Notifications.Discord
{ {
embed.Image = new DiscordImage embed.Image = new DiscordImage
{ {
Url = message.Movie.MovieMetadata.Value.Images.FirstOrDefault(x => x.CoverType == MediaCoverTypes.Fanart)?.Url Url = message.Movie.MovieMetadata.Value.Images.FirstOrDefault(x => x.CoverType == MediaCoverTypes.Fanart)?.RemoteUrl
}; };
} }
@ -446,7 +446,7 @@ namespace NzbDrone.Core.Notifications.Discord
{ {
embed.Thumbnail = new DiscordImage embed.Thumbnail = new DiscordImage
{ {
Url = movie.MovieMetadata.Value.Images.FirstOrDefault(x => x.CoverType == MediaCoverTypes.Poster)?.Url Url = movie.MovieMetadata.Value.Images.FirstOrDefault(x => x.CoverType == MediaCoverTypes.Poster)?.RemoteUrl
}; };
} }
@ -454,7 +454,7 @@ namespace NzbDrone.Core.Notifications.Discord
{ {
embed.Image = new DiscordImage embed.Image = new DiscordImage
{ {
Url = movie.MovieMetadata.Value.Images.FirstOrDefault(x => x.CoverType == MediaCoverTypes.Fanart)?.Url Url = movie.MovieMetadata.Value.Images.FirstOrDefault(x => x.CoverType == MediaCoverTypes.Fanart)?.RemoteUrl
}; };
} }

@ -116,7 +116,7 @@ namespace NzbDrone.Core.Notifications.Gotify
if (Settings.IncludeMoviePoster && movie != null) if (Settings.IncludeMoviePoster && movie != null)
{ {
var poster = movie.MovieMetadata.Value.Images.FirstOrDefault(x => x.CoverType == MediaCoverTypes.Poster)?.Url; var poster = movie.MovieMetadata.Value.Images.FirstOrDefault(x => x.CoverType == MediaCoverTypes.Poster)?.RemoteUrl;
if (poster != null) if (poster != null)
{ {

@ -123,7 +123,7 @@ namespace Radarr.Api.V3.ImportLists
var poster = currentMovie.MovieMetadata.Value.Images.FirstOrDefault(c => c.CoverType == MediaCoverTypes.Poster); var poster = currentMovie.MovieMetadata.Value.Images.FirstOrDefault(c => c.CoverType == MediaCoverTypes.Poster);
if (poster != null) if (poster != null)
{ {
resource.RemotePoster = poster.Url; resource.RemotePoster = poster.RemoteUrl;
} }
var translation = currentMovie.MovieMetadata.Value.Translations.FirstOrDefault(t => t.Language == language); var translation = currentMovie.MovieMetadata.Value.Translations.FirstOrDefault(t => t.Language == language);
@ -153,7 +153,7 @@ namespace Radarr.Api.V3.ImportLists
var poster = currentMovie.MovieMetadata.Value.Images.FirstOrDefault(c => c.CoverType == MediaCoverTypes.Poster); var poster = currentMovie.MovieMetadata.Value.Images.FirstOrDefault(c => c.CoverType == MediaCoverTypes.Poster);
if (poster != null) if (poster != null)
{ {
resource.RemotePoster = poster.Url; resource.RemotePoster = poster.RemoteUrl;
} }
var translation = GetTranslationFromDictionary(translations, currentMovie.MovieMetadata, language); var translation = GetTranslationFromDictionary(translations, currentMovie.MovieMetadata, language);

@ -2,6 +2,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using NzbDrone.Core.CustomFormats; using NzbDrone.Core.CustomFormats;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.DecisionEngine.Specifications; using NzbDrone.Core.DecisionEngine.Specifications;
using NzbDrone.Core.Languages; using NzbDrone.Core.Languages;
using NzbDrone.Core.MediaCover; using NzbDrone.Core.MediaCover;
@ -114,7 +115,7 @@ namespace Radarr.Api.V3.Movies
Status = model.MovieMetadata.Value.Status, Status = model.MovieMetadata.Value.Status,
Overview = translatedOverview, Overview = translatedOverview,
Images = model.MovieMetadata.Value.Images, Images = model.MovieMetadata.Value.Images.JsonClone(),
Year = model.Year, Year = model.Year,
SecondaryYear = model.MovieMetadata.Value.SecondaryYear, SecondaryYear = model.MovieMetadata.Value.SecondaryYear,

Loading…
Cancel
Save