From 611d22bf269672ba56f98e12eb6b2a40efdaa5b9 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Sat, 3 Jul 2021 16:23:36 +0200 Subject: Remove dependency on tidy, fix ph, support all 4chan markup Go back to previous page when failing to fetch number of pages --- src/plugins/Saucenao.cpp | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) (limited to 'src/plugins/Saucenao.cpp') diff --git a/src/plugins/Saucenao.cpp b/src/plugins/Saucenao.cpp index 1278bed..e8d8357 100644 --- a/src/plugins/Saucenao.cpp +++ b/src/plugins/Saucenao.cpp @@ -1,5 +1,4 @@ #include "../../plugins/Saucenao.hpp" -#include "../../include/StringUtils.hpp" #include namespace QuickMedia { @@ -19,22 +18,23 @@ namespace QuickMedia { if(download_result != DownloadResult::OK) return download_result_to_plugin_result(download_result); QuickMediaHtmlSearch html_search; - int result = quickmedia_html_search_init(&html_search, website_data.c_str()); + int result = quickmedia_html_search_init(&html_search, website_data.c_str(), website_data.size()); if(result != 0) goto cleanup; result = quickmedia_html_find_nodes_xpath(&html_search, "//td[class='resulttablecontent']", - [](QuickMediaHtmlNode *node, void *userdata) { + [](QuickMediaMatchNode *node, void *userdata) { BodyItems *item_data = (BodyItems*)userdata; - const char *text = quickmedia_html_node_get_text(node); - if(text) { - std::string title = text; + QuickMediaStringView text = quickmedia_html_node_get_text(node); + if(text.data) { + std::string title(text.data, text.size); size_t p_index = title.find("%"); if(p_index != std::string::npos) title = title.erase(0, p_index + 1); - auto item = BodyItem::create(strip(title)); + auto item = BodyItem::create(title); item_data->push_back(std::move(item)); } + return 0; }, &result_items); BodyItemContext body_item_context; @@ -42,16 +42,17 @@ namespace QuickMedia { body_item_context.index = 0; quickmedia_html_find_nodes_xpath(&html_search, "//td[class='resulttableimage']//img", - [](QuickMediaHtmlNode *node, void *userdata) { + [](QuickMediaMatchNode *node, void *userdata) { BodyItemContext *item_data = (BodyItemContext*)userdata; - const char *src = quickmedia_html_node_get_attribute_value(node, "src"); - const char *data_src = quickmedia_html_node_get_attribute_value(node, "data-src"); - const char *image_url = data_src ? data_src : src; - if(image_url && item_data->index < item_data->body_items->size()) { - (*item_data->body_items)[item_data->index]->thumbnail_url = strip(image_url); + QuickMediaStringView src = quickmedia_html_node_get_attribute_value(node, "src"); + QuickMediaStringView data_src = quickmedia_html_node_get_attribute_value(node, "data-src"); + QuickMediaStringView image_url = data_src.data ? data_src : src; + if(image_url.data && item_data->index < item_data->body_items->size()) { + (*item_data->body_items)[item_data->index]->thumbnail_url.assign(image_url.data, image_url.size); (*item_data->body_items)[item_data->index]->thumbnail_size = sf::Vector2i(150, 147); item_data->index++; } + return 0; }, &body_item_context); cleanup: -- cgit v1.2.3