From 76e1aebbe075287a8297194b38343467c76dd964 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Mon, 26 Apr 2021 18:37:00 +0200 Subject: Fix soundcloud (fetch client id), add authors to mangakatana, some other fixes --- plugins/MangaGeneric.hpp | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'plugins/MangaGeneric.hpp') diff --git a/plugins/MangaGeneric.hpp b/plugins/MangaGeneric.hpp index 98d06d8..a03756d 100644 --- a/plugins/MangaGeneric.hpp +++ b/plugins/MangaGeneric.hpp @@ -23,13 +23,19 @@ namespace QuickMedia { const char *field_name = nullptr; }; - // If |field_contains| is null, then any matching query is added. If |field_name| is "text", then the inner text is used. struct ThumbnailQuery { const char *html_query = nullptr; const char *field_name = nullptr; const char *field_contains = nullptr; }; + struct AuthorsQuery { + const char *html_query = nullptr; + const char *title_field = nullptr; + const char *url_field = nullptr; + const char *url_contains = nullptr; + }; + struct ListChaptersQuery { const char *html_query = nullptr; const char *title_field = nullptr; @@ -92,6 +98,7 @@ namespace QuickMedia { const char* get_title() const override { return "All"; } bool search_is_filter() override { return false; } SearchResult search(const std::string &str, BodyItems &result_items) override; + PluginResult get_page(const std::string &url, BodyItems &result_items); PluginResult get_page(const std::string &str, int page, BodyItems &result_items) override; PluginResult submit(const std::string &title, const std::string &url, std::vector &result_tabs) override; sf::Vector2i get_thumbnail_max_size() override { return sf::Vector2i(101, 141); }; @@ -106,6 +113,9 @@ namespace QuickMedia { MangaGenericSearchPage& description_handler(std::vector queries); // This is optional. MangaGenericSearchPage& thumbnail_handler(std::vector queries); + // If |url_contains| is null, then any matching query is added. If |title_field| is "text", then the inner text is used. + // This is optional. + MangaGenericSearchPage& authors_handler(const char *html_query, const char *title_field, const char *url_field, const char *url_contains); // If |url_contains| is null, then any matching query is added. If |title_field| is "text", then the inner text is used. // This is required. @@ -141,6 +151,7 @@ namespace QuickMedia { std::vector text_queries; std::vector description_queries; std::vector thumbnail_queries; + AuthorsQuery authors_query; ListChaptersQuery list_chapters_query; ListPageQuery list_page_query; MangaIdExtractor manga_id_extractor; @@ -162,6 +173,18 @@ namespace QuickMedia { bool fail_on_http_error; }; + class MangaGenericCreatorPage : public LazyFetchPage { + public: + MangaGenericCreatorPage(Program *program, MangaGenericSearchPage *search_page, Creator creator) : LazyFetchPage(program), search_page(search_page), creator(std::move(creator)) {} + const char* get_title() const override { return creator.name.c_str(); } + PluginResult submit(const std::string &title, const std::string &url, std::vector &result_tabs) override; + PluginResult lazy_fetch(BodyItems &result_items) override; + sf::Vector2i get_thumbnail_max_size() override { return sf::Vector2i(101, 141); }; + private: + MangaGenericSearchPage *search_page; + Creator creator; + }; + class MangaGenericImagesPage : public MangaImagesPage { public: MangaGenericImagesPage(Program *program, std::string manga_name, std::string chapter_name, std::string url, const char *service_name, const std::string &website_url, const ListPageQuery *list_page_query, bool fail_on_http_error) : -- cgit v1.2.3