aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Saucenao.cpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2021-07-03 16:23:36 +0200
committerdec05eba <dec05eba@protonmail.com>2021-07-03 18:34:37 +0200
commit611d22bf269672ba56f98e12eb6b2a40efdaa5b9 (patch)
tree5dfd3e98fd08fa7cb6cb82c565b538cc891b6b98 /src/plugins/Saucenao.cpp
parent496f71413df2468a9d3329355ffef08280219808 (diff)
Remove dependency on tidy, fix ph, support all 4chan markup
Go back to previous page when failing to fetch number of pages
Diffstat (limited to 'src/plugins/Saucenao.cpp')
-rw-r--r--src/plugins/Saucenao.cpp27
1 files changed, 14 insertions, 13 deletions
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 <quickmedia/HtmlSearch.h>
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: