aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Info.cpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2022-10-29 21:33:18 +0200
committerdec05eba <dec05eba@protonmail.com>2022-10-29 21:35:41 +0200
commit9c1d43e772efb8f5af4b7ef5562fb433c8985697 (patch)
treef675a51ab4f9ffad88d934216db6d44bafc187ad /src/plugins/Info.cpp
parent555f0e7e910b2231073734816727379e1276aa6c (diff)
Youtube: allow opening youtube channels directly from url. Same with ctrl+i info menu
Diffstat (limited to 'src/plugins/Info.cpp')
-rw-r--r--src/plugins/Info.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/plugins/Info.cpp b/src/plugins/Info.cpp
index 252cbea..629a08f 100644
--- a/src/plugins/Info.cpp
+++ b/src/plugins/Info.cpp
@@ -14,6 +14,10 @@ namespace QuickMedia {
return url.find("youtube.com/") != std::string::npos || url.find("youtu.be/") != std::string::npos;
}
+ static bool is_youtube_channel_url(const std::string &url) {
+ return url.find("youtube.com/c/") != std::string::npos || url.find("youtu.be/c/") != std::string::npos || url.find("youtube.com/channel/") != std::string::npos || url.find("youtu.be/channel/") != std::string::npos;
+ }
+
static PluginResult open_with_browser(const std::string &url) {
const char *launch_program = "xdg-open";
if(!is_program_executable_by_name("xdg-open")) {
@@ -41,6 +45,9 @@ namespace QuickMedia {
const std::string search_term = args.url.substr(strlen(GOOGLE_SEARCH_URL));
const std::string search_url = "https://www.google.com/search?q=" + url_param_encode(search_term);
return open_with_browser(search_url);
+ } else if(is_youtube_channel_url(args.url)) {
+ result_tabs.push_back(Tab{create_body(false, true), std::make_unique<YoutubeChannelPage>(program, args.url, "", "Channel videos"), create_search_bar("Search...", 350)});
+ return PluginResult::OK;
} else if(is_youtube_url(args.url)) {
result_tabs.push_back(Tab{nullptr, std::make_unique<YoutubeVideoPage>(program, args.url, false), nullptr});
return PluginResult::OK;
@@ -66,7 +73,9 @@ namespace QuickMedia {
// static
std::shared_ptr<BodyItem> InfoPage::add_url(const std::string &url) {
std::string title;
- if(is_youtube_url(url))
+ if(is_youtube_channel_url(url))
+ title = "Open youtube channel " + url;
+ else if(is_youtube_url(url))
title = "Play " + url;
else
title = "Open " + url + " in a browser";