Improved thumbnail handling

- ThumbnailsModel optionally returns the quality
- Have constants for 4:3 and 16:9 aspect ratio
- Add high quality options for thumbnails
- Rename Highest quality to Best quality
- make 4:3 thumbnails fill the VideoCell
- use .maxes instead of .maxresdefault (the latter sometimes returns white images)

Signed-off-by: Toni Förster <toni.foerster@gmail.com>
This commit is contained in:
Toni Förster
2024-08-19 16:35:29 +02:00
parent af75afa912
commit 35534bcbb1
8 changed files with 31 additions and 39 deletions

View File

@@ -20,21 +20,23 @@ final class ThumbnailsModel: ObservableObject {
return unloadable.contains(url)
}
func best(_ video: Video) -> URL? {
func best(_ video: Video) -> (url: URL?, quality: Thumbnail.Quality?) {
for quality in availableQualitites {
let url = video.thumbnailURL(quality: quality)
if !isUnloadable(url) {
return url
return (url, quality)
}
}
return nil
return (nil, nil)
}
private var availableQualitites: [Thumbnail.Quality] {
switch Defaults[.thumbnailsQuality] {
case .highest:
return [.maxresdefault, .medium, .default]
return [.maxres, .high, .medium, .default]
case .high:
return [.high, .medium, .default]
case .medium:
return [.medium, .default]
case .low: