From a13c19e31cb033730fa179a90f0bc5bd961bd3dc Mon Sep 17 00:00:00 2001 From: dec05eba Date: Fri, 4 Mar 2022 00:06:11 +0100 Subject: Fix xv video and related page, fix possible crash when going back from related video --- plugins/MediaGeneric.hpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'plugins/MediaGeneric.hpp') diff --git a/plugins/MediaGeneric.hpp b/plugins/MediaGeneric.hpp index 3720ba3..684f319 100644 --- a/plugins/MediaGeneric.hpp +++ b/plugins/MediaGeneric.hpp @@ -30,9 +30,11 @@ namespace QuickMedia { std::string thumbnail_url; }; + using MediaVideoUrlCustomHandler = std::function; using MediaRelatedCustomHandler = std::function(const std::string &html_source)>; class MediaGenericSearchPage : public Page { + friend class MediaGenericVideoPage; public: MediaGenericSearchPage(Program *program, const char *website_url, mgl::vec2i thumbnail_max_size, bool cloudflare_bypass, std::vector extra_commands = {}); const char* get_title() const override { return "Search"; } @@ -51,6 +53,8 @@ namespace QuickMedia { MediaGenericSearchPage& text_handler(std::vector queries); // This is optional. MediaGenericSearchPage& thumbnail_handler(std::vector queries); + // This is optional. Youtube-dl (or yt-dlp) is used instead if this is not used. + MediaGenericSearchPage& video_url_custom_handler(MediaVideoUrlCustomHandler handler); // This is optional. MediaGenericSearchPage& related_media_text_handler(std::vector queries); @@ -61,13 +65,16 @@ namespace QuickMedia { private: std::string website_url; mgl::vec2i thumbnail_max_size; + MediaSearchQuery search_query; std::vector text_queries; std::vector thumbnail_queries; + MediaVideoUrlCustomHandler video_custom_handler = nullptr; + std::vector related_media_text_queries; std::vector related_media_thumbnail_queries; MediaRelatedCustomHandler related_custom_handler = nullptr; - bool cloudflare_bypass; + bool cloudflare_bypass = false; std::vector extra_commands; }; @@ -81,11 +88,17 @@ namespace QuickMedia { class MediaGenericVideoPage : public VideoPage { public: - MediaGenericVideoPage(Program *program, MediaGenericSearchPage *search_page, const std::string &url) : VideoPage(program, url), search_page(search_page) {} + MediaGenericVideoPage(Program *program, MediaGenericSearchPage *search_page, const std::string &url) : + VideoPage(program, url), search_page(search_page) {} const char* get_title() const override { return ""; } BodyItems get_related_media(const std::string &url) override; PluginResult get_related_pages(const BodyItems &related_videos, const std::string &channel_url, std::vector &result_tabs) override; + + std::string get_download_url(int max_height) override; + std::string get_video_url(int max_height, bool &has_embedded_audio, std::string &ext) override; + PluginResult load(std::string &title, std::string &channel_url, std::vector &chapters, std::string &err_str) override; private: MediaGenericSearchPage *search_page; + std::string video_url; }; } \ No newline at end of file -- cgit v1.2.3