From 9c1d43e772efb8f5af4b7ef5562fb433c8985697 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Sat, 29 Oct 2022 21:33:18 +0200 Subject: Youtube: allow opening youtube channels directly from url. Same with ctrl+i info menu --- src/plugins/Info.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'src/plugins/Info.cpp') 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(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(program, args.url, false), nullptr}); return PluginResult::OK; @@ -66,7 +73,9 @@ namespace QuickMedia { // static std::shared_ptr 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"; -- cgit v1.2.3