Proxy images to fix broken meta-data
This commit is contained in:
@@ -489,18 +489,21 @@ public class SRFPlayChannel : IChannel, IHasCacheKey
|
||||
var overview = chapter.Description ?? chapter.Lead;
|
||||
|
||||
// Get image URL - prefer chapter image, fall back to show image if available
|
||||
var imageUrl = chapter.ImageUrl;
|
||||
if (string.IsNullOrEmpty(imageUrl) && mediaComposition.Show != null)
|
||||
var originalImageUrl = chapter.ImageUrl;
|
||||
if (string.IsNullOrEmpty(originalImageUrl) && mediaComposition.Show != null)
|
||||
{
|
||||
imageUrl = mediaComposition.Show.ImageUrl;
|
||||
originalImageUrl = mediaComposition.Show.ImageUrl;
|
||||
_logger.LogDebug("URN {Urn}: Using show image as fallback", urn);
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(imageUrl))
|
||||
if (string.IsNullOrEmpty(originalImageUrl))
|
||||
{
|
||||
_logger.LogWarning("URN {Urn}: No image URL available for '{Title}'", urn, chapter.Title);
|
||||
}
|
||||
|
||||
// Proxy image URL to fix Content-Type headers from SRF CDN
|
||||
var imageUrl = CreateProxiedImageUrl(originalImageUrl, serverUrl);
|
||||
|
||||
// Use ValidFrom for premiere date if this is a scheduled livestream, otherwise use Date
|
||||
var premiereDate = chapter.Type == "SCHEDULED_LIVESTREAM" ? chapter.ValidFrom?.ToUniversalTime() : chapter.Date?.ToUniversalTime();
|
||||
|
||||
@@ -617,6 +620,24 @@ public class SRFPlayChannel : IChannel, IHasCacheKey
|
||||
}
|
||||
#pragma warning restore CA5351
|
||||
|
||||
/// <summary>
|
||||
/// Creates a proxy URL for an image to fix Content-Type headers from SRF CDN.
|
||||
/// </summary>
|
||||
/// <param name="originalUrl">The original SRF image URL.</param>
|
||||
/// <param name="serverUrl">The server base URL.</param>
|
||||
/// <returns>The proxied image URL, or null if original is null.</returns>
|
||||
private static string? CreateProxiedImageUrl(string? originalUrl, string serverUrl)
|
||||
{
|
||||
if (string.IsNullOrEmpty(originalUrl))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
// Encode the original URL as base64 for safe transport
|
||||
var encodedUrl = Convert.ToBase64String(Encoding.UTF8.GetBytes(originalUrl));
|
||||
return $"{serverUrl}/Plugins/SRFPlay/Proxy/Image?url={encodedUrl}";
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public bool IsEnabledFor(string userId)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user