Browse Source

Fixing Artwork OtherVideo rel (#1774)

* Fixing Artwork OtherVideo rel

* show other video artwork in ui

* don't run code quality on PRs

* update changelog

---------

Co-authored-by: Jason Dove <1695733+jasongdove@users.noreply.github.com>
pull/1779/head
Sylvain 1 year ago committed by GitHub
parent
commit
b91ab5d898
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 1
      .github/workflows/code_quality.yml
  2. 1
      CHANGELOG.md
  3. 13
      ErsatzTV.Application/MediaCards/Mapper.cs
  4. 3
      ErsatzTV.Application/MediaCards/OtherVideoCardViewModel.cs
  5. 7
      ErsatzTV.Infrastructure/Data/Repositories/MetadataRepository.cs

1
.github/workflows/code_quality.yml

@ -1,7 +1,6 @@
name: Qodana name: Qodana
on: on:
workflow_dispatch: workflow_dispatch:
pull_request:
push: push:
branches: branches:
- main - main

1
CHANGELOG.md

@ -13,6 +13,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
### Fixed ### Fixed
- Add basic cache busting to XMLTV image URLs - Add basic cache busting to XMLTV image URLs
- This should help with clients not showing correct channel logos or posters - This should help with clients not showing correct channel logos or posters
- Fix artwork in other video libraries by @raknam
### Changed ### Changed
- Remove some unnecessary API calls related to media server scanning and paging - Remove some unnecessary API calls related to media server scanning and paging

13
ErsatzTV.Application/MediaCards/Mapper.cs

@ -117,13 +117,22 @@ internal static class Mapper
musicVideoMetadata.MusicVideo.GetHeadVersion().MediaFiles.Head().Path, musicVideoMetadata.MusicVideo.GetHeadVersion().MediaFiles.Head().Path,
localPath); localPath);
internal static OtherVideoCardViewModel ProjectToViewModel(OtherVideoMetadata otherVideoMetadata) => internal static OtherVideoCardViewModel ProjectToViewModel(OtherVideoMetadata otherVideoMetadata)
new( {
string poster = GetThumbnail(otherVideoMetadata, None, None);
if (string.IsNullOrWhiteSpace(poster))
{
poster = GetPoster(otherVideoMetadata, None, None);
}
return new OtherVideoCardViewModel(
otherVideoMetadata.OtherVideoId, otherVideoMetadata.OtherVideoId,
otherVideoMetadata.Title, otherVideoMetadata.Title,
otherVideoMetadata.OriginalTitle, otherVideoMetadata.OriginalTitle,
otherVideoMetadata.SortTitle, otherVideoMetadata.SortTitle,
poster,
otherVideoMetadata.OtherVideo.State); otherVideoMetadata.OtherVideo.State);
}
internal static SongCardViewModel ProjectToViewModel(SongMetadata songMetadata) internal static SongCardViewModel ProjectToViewModel(SongMetadata songMetadata)
{ {

3
ErsatzTV.Application/MediaCards/OtherVideoCardViewModel.cs

@ -7,12 +7,13 @@ public record OtherVideoCardViewModel(
string Title, string Title,
string Subtitle, string Subtitle,
string SortTitle, string SortTitle,
string Poster,
MediaItemState State) : MediaCardViewModel( MediaItemState State) : MediaCardViewModel(
OtherVideoId, OtherVideoId,
Title, Title,
Subtitle, Subtitle,
SortTitle, SortTitle,
null, Poster,
State) State)
{ {
public int CustomIndex { get; set; } public int CustomIndex { get; set; }

7
ErsatzTV.Infrastructure/Data/Repositories/MetadataRepository.cs

@ -304,6 +304,11 @@ public class MetadataRepository : IMetadataRepository
VALUES (@ArtworkKind, @Id, @DateAdded, @DateUpdated, @Path, @SourcePath, @BlurHash43, @BlurHash54, @BlurHash64)", VALUES (@ArtworkKind, @Id, @DateAdded, @DateUpdated, @Path, @SourcePath, @BlurHash43, @BlurHash54, @BlurHash64)",
parameters) parameters)
.ToUnit(), .ToUnit(),
OtherVideoMetadata => await dbContext.Connection.ExecuteAsync(
@"INSERT INTO Artwork (ArtworkKind, OtherVideoMetadataId, DateAdded, DateUpdated, Path, SourcePath, BlurHash43, BlurHash54, BlurHash64)
VALUES (@ArtworkKind, @Id, @DateAdded, @DateUpdated, @Path, @SourcePath, @BlurHash43, @BlurHash54, @BlurHash64)",
parameters)
.ToUnit(),
_ => Unit.Default _ => Unit.Default
}; };
} }
@ -313,7 +318,7 @@ public class MetadataRepository : IMetadataRepository
await using TvContext dbContext = await _dbContextFactory.CreateDbContextAsync(); await using TvContext dbContext = await _dbContextFactory.CreateDbContextAsync();
return await dbContext.Connection.ExecuteAsync( return await dbContext.Connection.ExecuteAsync(
@"DELETE FROM Artwork WHERE ArtworkKind = @ArtworkKind AND (MovieMetadataId = @Id @"DELETE FROM Artwork WHERE ArtworkKind = @ArtworkKind AND (MovieMetadataId = @Id
OR ShowMetadataId = @Id OR SeasonMetadataId = @Id OR EpisodeMetadataId = @Id)", OR ShowMetadataId = @Id OR SeasonMetadataId = @Id OR EpisodeMetadataId = @Id OR OtherVideoMetadataId = @Id)",
new { ArtworkKind = artworkKind, metadata.Id }).ToUnit(); new { ArtworkKind = artworkKind, metadata.Id }).ToUnit();
} }

Loading…
Cancel
Save