#pragma once #include "Plugin.hpp" #include #include namespace QuickMedia { // Return false to stop iteration using PageCallback = std::function; struct Creator { std::string name; std::string url; }; class Manga : public Plugin { public: Manga(const std::string &plugin_name) : Plugin(plugin_name) {} bool is_manga() override { return true; } virtual ImageResult get_number_of_images(const std::string &url, int &num_images) = 0; virtual ImageResult for_each_page_in_chapter(const std::string &chapter_url, PageCallback callback) = 0; virtual bool extract_id_from_url(const std::string &url, std::string &manga_id) = 0; virtual PluginResult get_creators_manga_list(const std::string &url, BodyItems &result_items) { return {}; } const std::vector& get_creators() const; protected: std::vector creators; }; }