mirror of
https://github.com/Sonarr/Sonarr
synced 2024-12-26 01:37:07 +00:00
UI now loads the 250px image if available, and reverts to full size otherwise.
This commit is contained in:
parent
35ab3a28fd
commit
b145ea1a70
4 changed files with 46 additions and 4 deletions
|
@ -1,4 +1,6 @@
|
|||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
using Nancy;
|
||||
using NLog;
|
||||
using NzbDrone.Common.Disk;
|
||||
using NzbDrone.Common.EnvironmentInfo;
|
||||
|
@ -8,6 +10,8 @@ namespace NzbDrone.Api.Frontend.Mappers
|
|||
{
|
||||
public class MediaCoverMapper : StaticResourceMapperBase
|
||||
{
|
||||
private static readonly Regex RegexResizedImage = new Regex(@"-\d+\.jpg($|\?)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||
|
||||
private readonly IAppFolderInfo _appFolderInfo;
|
||||
|
||||
public MediaCoverMapper(IAppFolderInfo appFolderInfo, IDiskProvider diskProvider, Logger logger)
|
||||
|
@ -24,6 +28,24 @@ namespace NzbDrone.Api.Frontend.Mappers
|
|||
return Path.Combine(_appFolderInfo.GetAppDataPath(), path);
|
||||
}
|
||||
|
||||
public override Response GetResponse(string resourceUrl)
|
||||
{
|
||||
var result = base.GetResponse(resourceUrl);
|
||||
|
||||
// Return the full sized image if someone requests a non-existing resized one.
|
||||
// TODO: This code can be removed later once everyone had the update for a while.
|
||||
if (result is NotFoundResponse)
|
||||
{
|
||||
var baseResourceUrl = RegexResizedImage.Replace(resourceUrl, ".jpg$1");
|
||||
if (baseResourceUrl != resourceUrl)
|
||||
{
|
||||
result = base.GetResponse(baseResourceUrl);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public override bool CanHandle(string resourceUrl)
|
||||
{
|
||||
return resourceUrl.StartsWith("/MediaCover");
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
using Nancy;
|
||||
using Nancy.Responses;
|
||||
using NzbDrone.Common.Disk;
|
||||
|
@ -9,6 +10,8 @@ namespace NzbDrone.Api.MediaCovers
|
|||
{
|
||||
public class MediaCoverModule : NzbDroneApiModule
|
||||
{
|
||||
private static readonly Regex RegexResizedImage = new Regex(@"-\d+\.jpg$", RegexOptions.Compiled | RegexOptions.IgnoreCase);
|
||||
|
||||
private const string MEDIA_COVER_ROUTE = @"/(?<seriesId>\d+)/(?<filename>(.+)\.(jpg|png|gif))";
|
||||
|
||||
private readonly IAppFolderInfo _appFolderInfo;
|
||||
|
@ -27,7 +30,16 @@ namespace NzbDrone.Api.MediaCovers
|
|||
var filePath = Path.Combine(_appFolderInfo.GetAppDataPath(), "MediaCover", seriesId.ToString(), filename);
|
||||
|
||||
if (!_diskProvider.FileExists(filePath))
|
||||
return new NotFoundResponse();
|
||||
{
|
||||
// Return the full sized image if someone requests a non-existing resized one.
|
||||
// TODO: This code can be removed later once everyone had the update for a while.
|
||||
var basefilePath = RegexResizedImage.Replace(filePath, ".jpg");
|
||||
if (basefilePath == filePath || !_diskProvider.FileExists(basefilePath))
|
||||
{
|
||||
return new NotFoundResponse();
|
||||
}
|
||||
filePath = basefilePath;
|
||||
}
|
||||
|
||||
return new StreamResponse(() => File.OpenRead(filePath), MimeTypes.GetMimeType(filePath));
|
||||
}
|
||||
|
|
|
@ -17,8 +17,16 @@ define(
|
|||
img.onerror = null;
|
||||
};
|
||||
|
||||
Handlebars.registerHelper('defaultImg', function () {
|
||||
return new Handlebars.SafeString('onerror=window.NzbDrone.imageError(this)');
|
||||
Handlebars.registerHelper('defaultImg', function (src, size) {
|
||||
if (!src) {
|
||||
return new Handlebars.SafeString('onerror="window.NzbDrone.imageError(this);"');
|
||||
}
|
||||
|
||||
if (size) {
|
||||
src = src.replace(/\.jpg($|\?)/g, '-' + size + '.jpg$1');
|
||||
}
|
||||
|
||||
return new Handlebars.SafeString('src="{0}" onerror="window.NzbDrone.imageError(this);"'.format(src));
|
||||
});
|
||||
|
||||
Handlebars.registerHelper('UrlBase', function () {
|
||||
|
|
|
@ -11,7 +11,7 @@ define(
|
|||
var poster = _.where(this.images, {coverType: 'poster'});
|
||||
|
||||
if (poster[0]) {
|
||||
return new Handlebars.SafeString('<img class="series-poster" src="{0}" {1}>'.format(poster[0].url, Handlebars.helpers.defaultImg.call()));
|
||||
return new Handlebars.SafeString('<img class="series-poster" {0}>'.format(Handlebars.helpers.defaultImg.call(null, poster[0].url, 250)));
|
||||
}
|
||||
|
||||
return new Handlebars.SafeString('<img class="series-poster placeholder-image" src="{0}">'.format(placeholder));
|
||||
|
|
Loading…
Reference in a new issue