diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/Mangadex.cpp | 81 |
1 files changed, 0 insertions, 81 deletions
diff --git a/src/plugins/Mangadex.cpp b/src/plugins/Mangadex.cpp index 1d1730a..d17ba74 100644 --- a/src/plugins/Mangadex.cpp +++ b/src/plugins/Mangadex.cpp @@ -35,87 +35,7 @@ namespace QuickMedia { bool *is_last_page; }; - SearchResult Mangadex::search_page(const std::string &url, BodyItems &result_items, int page, bool *is_last_page) { - *is_last_page = true; - CommandArg user_agent_arg = { "-H", useragent_str }; - - std::string chapter_url = url; - if(chapter_url[0] != '/') - chapter_url += "/"; - chapter_url += "chapters/" + std::to_string(page) + "/"; - std::string website_data; - if(download_to_string(chapter_url, website_data, {std::move(user_agent_arg)}, use_tor) != DownloadResult::OK) - return SearchResult::NET_ERR; - - std::string manga_id = title_url_extract_manga_id(chapter_url); - std::string query = "//div[data-manga-id='" + manga_id + "']"; - - BodyItemChapterContext body_item_chapter_context; - body_item_chapter_context.body_items = &result_items; - body_item_chapter_context.prev_chapter_number = -1; - body_item_chapter_context.is_last_page = is_last_page; - - QuickMediaHtmlSearch html_search; - int result = quickmedia_html_search_init(&html_search, website_data.c_str()); - if(result != 0) - goto cleanup; - - result = quickmedia_html_find_nodes_xpath(&html_search, query.c_str(), - [](QuickMediaHtmlNode *node, void *userdata) { - auto *item_data = (BodyItemChapterContext*)userdata; - const char *data_lang = quickmedia_html_node_get_attribute_value(node, "data-lang"); - if(strcmp(data_lang, language_code) != 0) - return; - - const char *chapter_id = quickmedia_html_node_get_attribute_value(node, "data-id"); - if(!chapter_id) - return; - - const char *chapter_number_str = quickmedia_html_node_get_attribute_value(node, "data-chapter"); - if(!chapter_number_str) - return; - - int chapter_number = atoi(chapter_number_str); - if(chapter_number == 0 || chapter_number == item_data->prev_chapter_number) - return; - - item_data->prev_chapter_number = chapter_number; - - const char *chapter_title = quickmedia_html_node_get_attribute_value(node, "data-title"); - std::string chapter_url = mangadex_url + "/chapter/" + chapter_id; - std::string chapter_name = std::string("Ch. ") + chapter_number_str; - if(chapter_title) - chapter_name += std::string(" - ") + chapter_title; - - auto item = std::make_unique<BodyItem>(std::move(chapter_name)); - item->url = std::move(chapter_url); - item_data->body_items->push_back(std::move(item)); - *item_data->is_last_page = false; - }, &body_item_chapter_context); - - cleanup: - quickmedia_html_search_deinit(&html_search); - return result == 0 ? SearchResult::OK : SearchResult::ERR; - } - - // TODO: Make pagination asynchronous and make it go to the next page when navigating to the bottom in the list of chapters - // in the GUI. Currently all pages are fetched at once, synchronously. This can be very slow for certain manga like Naruto - // which has 21 pages of chapters... SearchResult Mangadex::search(const std::string &url, BodyItems &result_items) { -#if 0 - int page = 1; - while(true) { - bool is_last_page; - SearchResult search_result = search_page(url, result_items, page, &is_last_page); - if(search_result != SearchResult::OK) - return search_result; - - ++page; - if(is_last_page) - break; - } - return SearchResult::OK; -#else CommandArg user_agent_arg = { "-H", useragent_str }; std::string manga_id = title_url_extract_manga_id(url); @@ -193,7 +113,6 @@ namespace QuickMedia { result_items.push_back(std::move(item)); } return SearchResult::OK; -#endif } static bool get_rememberme_token(std::string &rememberme_token) { |