aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Saucenao.cpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2021-09-18 18:36:23 +0200
committerdec05eba <dec05eba@protonmail.com>2021-09-18 18:36:23 +0200
commitcd3c2a139ed17fe9a4abf5f08a95d995843e6d44 (patch)
treeaa48405b3d9412f84bd71e80467d0edc51fd93b9 /src/plugins/Saucenao.cpp
parentd74766245facd48805c2576c711d20cafa33aa35 (diff)
Show saucenao urls directly in the result
Diffstat (limited to 'src/plugins/Saucenao.cpp')
-rw-r--r--src/plugins/Saucenao.cpp43
1 files changed, 29 insertions, 14 deletions
diff --git a/src/plugins/Saucenao.cpp b/src/plugins/Saucenao.cpp
index ccb01f9..b99c028 100644
--- a/src/plugins/Saucenao.cpp
+++ b/src/plugins/Saucenao.cpp
@@ -1,6 +1,7 @@
#include "../../plugins/Saucenao.hpp"
#include "../../plugins/Info.hpp"
#include "../../include/StringUtils.hpp"
+#include "../../include/Theme.hpp"
#include <quickmedia/HtmlSearch.h>
namespace QuickMedia {
@@ -34,7 +35,8 @@ namespace QuickMedia {
static void match_node_get_urls(QuickMediaHtmlNode *node, std::vector<std::string> &urls) {
if(node->is_tag && string_views_equal_case_insensitive(node->name, {"a", 1}) == 0) {
QuickMediaHtmlAttribute *attr = get_attribute_by_name(node, {"href", 4});
- if(attr)
+ // Ignore saucenao info pages
+ if(attr && !memmem(attr->value.data, attr->value.size, "saucenao.com", 12))
urls.emplace_back(attr->value.data, attr->value.size);
}
@@ -45,14 +47,6 @@ namespace QuickMedia {
}
}
- static std::string get_first_line(const std::string &str) {
- const size_t line_end = str.find('\n');
- if(line_end == std::string::npos)
- return str;
- else
- return str.substr(0, line_end);
- }
-
PluginResult SaucenaoPage::submit(const std::string &title, const std::string&, std::vector<Tab> &result_tabs) {
if(!submit_body_item)
return PluginResult::OK;
@@ -61,11 +55,9 @@ namespace QuickMedia {
BodyItems body_items;
for(const std::string &url : urls->urls) {
- // Ignore saucenao info pages
- if(url.find("saucenao.com") == std::string::npos)
- body_items.push_back(InfoPage::add_url(url));
+ body_items.push_back(InfoPage::add_url(url));
}
- body_items.push_back(InfoPage::add_google_search(get_first_line(title)));
+ body_items.push_back(InfoPage::add_google_search(title));
auto body = create_body();
body->set_items(std::move(body_items));
@@ -100,9 +92,32 @@ namespace QuickMedia {
if(p_index != std::string::npos)
title = title.erase(0, p_index + 1);
title = strip(title);
- auto item = BodyItem::create(title);
+
+ std::string description;
+ const size_t title_line_end = title.find('\n');
+ if(title_line_end != std::string::npos) {
+ description = title.substr(title_line_end + 1);
+ title.erase(title_line_end);
+ }
+
auto urls = std::make_shared<SaucenaoBodyItemUrls>();
match_node_get_urls(node->node, urls->urls);
+ if(!urls->urls.empty()) {
+ if(!description.empty())
+ description += "\n\n";
+
+ int index = 0;
+ for(const std::string &url : urls->urls) {
+ if(index > 0)
+ description += '\n';
+ description += url;
+ ++index;
+ }
+ }
+
+ auto item = BodyItem::create(std::move(title));
+ item->set_description(std::move(description));
+ item->set_description_color(get_theme().faded_text_color);
item->extra = std::move(urls);
item_data->push_back(std::move(item));
}