Browse Source

add plex fanart

pull/72/head
Jason Dove 5 years ago
parent
commit
1495716f9d
  1. 15
      ErsatzTV.Infrastructure/Plex/PlexServerApiClient.cs
  2. 26
      ErsatzTV/Controllers/ArtworkController.cs

15
ErsatzTV.Infrastructure/Plex/PlexServerApiClient.cs

@ -117,6 +117,21 @@ namespace ErsatzTV.Infrastructure.Plex
metadata.Artwork.Add(artwork); metadata.Artwork.Add(artwork);
} }
if (!string.IsNullOrWhiteSpace(response.Art))
{
var path = $"plex/{mediaSourceId}{response.Art}";
var artwork = new Artwork
{
ArtworkKind = ArtworkKind.FanArt,
Path = path,
DateAdded = dateAdded,
DateUpdated = lastWriteTime
};
metadata.Artwork ??= new List<Artwork>();
metadata.Artwork.Add(artwork);
}
var version = new MediaVersion var version = new MediaVersion
{ {
Name = "Main", Name = "Main",

26
ErsatzTV/Controllers/ArtworkController.cs

@ -73,6 +73,32 @@ namespace ErsatzTV.Controllers
response.Content.Headers.ContentType?.MediaType ?? "image/jpeg"); response.Content.Headers.ContentType?.MediaType ?? "image/jpeg");
}); });
} }
[HttpGet("/artwork/fanart/plex/{plexMediaSourceId}/{*path}")]
public async Task<IActionResult> GetPlexFanArt(int plexMediaSourceId, string path)
{
Either<BaseError, PlexConnectionParametersViewModel> connectionParameters =
await _mediator.Send(new GetPlexConnectionParameters(plexMediaSourceId));
return await connectionParameters.Match<Task<IActionResult>>(
Left: _ => new NotFoundResult().AsTask<IActionResult>(),
Right: async r =>
{
HttpClient client = _httpClientFactory.CreateClient();
client.DefaultRequestHeaders.Add("X-Plex-Token", r.AuthToken);
var transcodePath = $"/{path}";
var fullPath = new Uri(r.Uri, transcodePath);
HttpResponseMessage response = await client.GetAsync(
fullPath,
HttpCompletionOption.ResponseHeadersRead);
Stream stream = await response.Content.ReadAsStreamAsync();
return new FileStreamResult(
stream,
response.Content.Headers.ContentType?.MediaType ?? "image/jpeg");
});
}
[HttpGet("/artwork/thumbnails/{fileName}")] [HttpGet("/artwork/thumbnails/{fileName}")]
public async Task<IActionResult> GetThumbnail(string fileName) public async Task<IActionResult> GetThumbnail(string fileName)

Loading…
Cancel
Save