aboutsummaryrefslogtreecommitdiff
path: root/src/Youtube.cpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2019-08-04 02:28:33 +0200
committerdec05eba <dec05eba@protonmail.com>2019-08-04 02:28:36 +0200
commit4b24638802385816fb5f90c95f175b30ae2398a8 (patch)
treeab6c7cbfd7d20c2065e160f6e8f20be02e4cc1b5 /src/Youtube.cpp
parentd9fb89269fd30fa44d2b3728b9ae3c7b896a77d3 (diff)
Add youtube video playing, page navigation
Diffstat (limited to 'src/Youtube.cpp')
-rw-r--r--src/Youtube.cpp17
1 files changed, 7 insertions, 10 deletions
diff --git a/src/Youtube.cpp b/src/Youtube.cpp
index 9f9c4c2..85969b9 100644
--- a/src/Youtube.cpp
+++ b/src/Youtube.cpp
@@ -22,6 +22,7 @@ namespace QuickMedia {
const char *href = quickmedia_html_node_get_attribute_value(node, "href");
const char *title = quickmedia_html_node_get_attribute_value(node, "title");
auto item = std::make_unique<BodyItem>(title);
+ item->url = std::string("https://www.youtube.com") + href;
result_items->push_back(std::move(item));
}, &result_items);
@@ -30,24 +31,21 @@ namespace QuickMedia {
return result == 0 ? SearchResult::OK : SearchResult::ERR;
}
- static void iterate_suggestion_result(const Json::Value &value, std::vector<std::unique_ptr<BodyItem>> &result_items, int &ignore_count) {
+ static void iterate_suggestion_result(const Json::Value &value, const std::string &search_text, std::vector<std::unique_ptr<BodyItem>> &result_items) {
if(value.isArray()) {
for(const Json::Value &child : value) {
- iterate_suggestion_result(child, result_items, ignore_count);
+ iterate_suggestion_result(child, search_text, result_items);
}
} else if(value.isString()) {
- if(ignore_count > 1) {
- auto item = std::make_unique<BodyItem>(value.asString());
+ std::string title = value.asString();
+ if(title != search_text) {
+ auto item = std::make_unique<BodyItem>(title);
result_items.push_back(std::move(item));
}
- ++ignore_count;
}
}
SuggestionResult Youtube::update_search_suggestions(const std::string &text, std::vector<std::unique_ptr<BodyItem>> &result_items) {
- if(text.empty())
- return SuggestionResult::OK;
-
std::string url = "https://clients1.google.com/complete/search?client=youtube&hl=en&gl=us&q=";
url += url_param_encode(text);
@@ -77,8 +75,7 @@ namespace QuickMedia {
return SuggestionResult::ERR;
}
- int ignore_count = 0;
- iterate_suggestion_result(json_root, result_items, ignore_count);
+ iterate_suggestion_result(json_root, text, result_items);
return SuggestionResult::OK;
}
} \ No newline at end of file