aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Youtube.cpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2021-04-30 16:33:07 +0200
committerdec05eba <dec05eba@protonmail.com>2021-04-30 16:33:07 +0200
commit47bb22a4aee886deb54ca432bdb14747bf2e9160 (patch)
tree57f4cff63872f70b6d60bf098cb46879bccc3251 /src/plugins/Youtube.cpp
parentc89ffb842054de24e2ad8020d9df81da55e3e574 (diff)
Support webp thumbnails
Diffstat (limited to 'src/plugins/Youtube.cpp')
-rw-r--r--src/plugins/Youtube.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/plugins/Youtube.cpp b/src/plugins/Youtube.cpp
index 993c861..cf3bbe4 100644
--- a/src/plugins/Youtube.cpp
+++ b/src/plugins/Youtube.cpp
@@ -53,10 +53,10 @@ namespace QuickMedia {
enum class ThumbnailSize {
SMALLEST,
+ MEDIUM,
LARGEST
};
- // TODO: Use this in |parse_common_video_item| when QuickMedia supports webp
static std::optional<Thumbnail> yt_json_get_thumbnail(const Json::Value &thumbnail_json, ThumbnailSize thumbnail_size) {
if(!thumbnail_json.isObject())
return std::nullopt;
@@ -85,6 +85,9 @@ namespace QuickMedia {
thumbnails.push_back({ url_json.asCString(), width_json.asInt(), height_json.asInt() });
}
+ if(thumbnails.empty())
+ return std::nullopt;
+
switch(thumbnail_size) {
case ThumbnailSize::SMALLEST:
return *std::min_element(thumbnails.begin(), thumbnails.end(), [](const Thumbnail &thumbnail1, const Thumbnail &thumbnail2) {
@@ -92,6 +95,14 @@ namespace QuickMedia {
int size2 = thumbnail2.width * thumbnail2.height;
return size1 < size2;
});
+ case ThumbnailSize::MEDIUM: {
+ std::sort(thumbnails.begin(), thumbnails.end(), [](const Thumbnail &thumbnail1, const Thumbnail &thumbnail2) {
+ int size1 = thumbnail1.width * thumbnail1.height;
+ int size2 = thumbnail2.width * thumbnail2.height;
+ return size1 < size2;
+ });
+ return thumbnails[thumbnails.size() / 2];
+ }
case ThumbnailSize::LARGEST:
return *std::max_element(thumbnails.begin(), thumbnails.end(), [](const Thumbnail &thumbnail1, const Thumbnail &thumbnail2) {
int size1 = thumbnail1.width * thumbnail1.height;
@@ -184,8 +195,10 @@ namespace QuickMedia {
body_item->set_description_color(sf::Color(179, 179, 179));
if(scheduled_text.empty())
body_item->url = "https://www.youtube.com/watch?v=" + video_id_str;
+
body_item->thumbnail_url = "https://img.youtube.com/vi/" + video_id_str + "/hqdefault.jpg";
body_item->thumbnail_size = sf::Vector2i(175, 131);
+
added_videos.insert(video_id_str);
return body_item;
}