Merge pull request #685 from stonerl/chapter-images-for-invidious

Invidious: add images to chapters
This commit is contained in:
Arkadiusz Fal 2024-05-23 11:35:51 +02:00 committed by GitHub
commit f6bea6e045
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 18 additions and 2 deletions

View File

@ -502,7 +502,7 @@ final class InvidiousAPI: Service, ObservableObject, VideosAPI {
keywords: json["keywords"].arrayValue.compactMap { $0.string }, keywords: json["keywords"].arrayValue.compactMap { $0.string },
streams: extractStreams(from: json), streams: extractStreams(from: json),
related: extractRelated(from: json), related: extractRelated(from: json),
chapters: extractChapters(from: description), chapters: createChapters(from: description, thumbnails: json),
captions: extractCaptions(from: json) captions: extractCaptions(from: json)
) )
} }
@ -575,6 +575,22 @@ final class InvidiousAPI: Service, ObservableObject, VideosAPI {
} }
} }
private func createChapters(from description: String, thumbnails: JSON) -> [Chapter] {
var chapters = extractChapters(from: description)
if !chapters.isEmpty {
let thumbnailsData = extractThumbnails(from: thumbnails)
let thumbnailURL = thumbnailsData.first { $0.quality == .medium }?.url
for chapter in chapters.indices {
if let url = thumbnailURL {
chapters[chapter].image = url
}
}
}
return chapters
}
private static var contentItemsKeys = ["items", "videos", "latestVideos", "playlists", "relatedChannels"] private static var contentItemsKeys = ["items", "videos", "latestVideos", "playlists", "relatedChannels"]
private func extractChannelPage(from json: JSON, forceNotLast: Bool = false) -> ChannelPage { private func extractChannelPage(from json: JSON, forceNotLast: Bool = false) -> ChannelPage {

View File

@ -65,7 +65,7 @@ import SwiftUI
} }
static var thumbnailHeight: Double { static var thumbnailHeight: Double {
thumbnailWidth / 1.7777 thumbnailWidth / (16 / 9)
} }
} }