aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/Body.hpp27
-rw-r--r--src/Body.cpp27
-rw-r--r--src/plugins/NyaaSi.cpp15
3 files changed, 43 insertions, 26 deletions
diff --git a/include/Body.hpp b/include/Body.hpp
index 81e3a69..3dfbeaa 100644
--- a/include/Body.hpp
+++ b/include/Body.hpp
@@ -13,30 +13,8 @@ namespace QuickMedia {
class BodyItem {
public:
- BodyItem(std::string _title): visible(true), dirty(true) {
- set_title(std::move(_title));
- }
-
- BodyItem(const BodyItem &other) {
- title = other.title;
- description = other.description;
- url = other.url;
- thumbnail_url = other.thumbnail_url;
- attached_content_url = other.attached_content_url;
- author = other.author;
- visible = other.visible;
- dirty = other.dirty;
- if(other.title_text)
- title_text = std::make_unique<Text>(*other.title_text);
- else
- title_text = nullptr;
- if(other.description_text)
- description_text = std::make_unique<Text>(*other.description_text);
- else
- description_text = nullptr;
- replies = other.replies;
- post_number = other.post_number;
- }
+ BodyItem(std::string _title);
+ BodyItem(const BodyItem &other);
void set_title(std::string new_title) {
title = std::move(new_title);
@@ -62,6 +40,7 @@ namespace QuickMedia {
// Used by image boards for example. The elements are indices to other body items
std::vector<size_t> replies;
std::string post_number;
+ sf::Color background_color;
private:
std::string title;
std::string description;
diff --git a/src/Body.cpp b/src/Body.cpp
index 2579d64..73c3932 100644
--- a/src/Body.cpp
+++ b/src/Body.cpp
@@ -11,6 +11,31 @@ const sf::Color front_color(43, 45, 47);
const sf::Color back_color(33, 35, 37);
namespace QuickMedia {
+ BodyItem::BodyItem(std::string _title): visible(true), dirty(true), background_color(front_color) {
+ set_title(std::move(_title));
+ }
+
+ BodyItem::BodyItem(const BodyItem &other) {
+ title = other.title;
+ description = other.description;
+ url = other.url;
+ thumbnail_url = other.thumbnail_url;
+ attached_content_url = other.attached_content_url;
+ author = other.author;
+ visible = other.visible;
+ dirty = other.dirty;
+ if(other.title_text)
+ title_text = std::make_unique<Text>(*other.title_text);
+ else
+ title_text = nullptr;
+ if(other.description_text)
+ description_text = std::make_unique<Text>(*other.description_text);
+ else
+ description_text = nullptr;
+ replies = other.replies;
+ post_number = other.post_number;
+ }
+
Body::Body(Program *program, sf::Font *font, sf::Font *bold_font) :
program(program),
font(font),
@@ -305,7 +330,7 @@ namespace QuickMedia {
//item_pos.x += selected_border_width;
item_background.setFillColor(sf::Color(0, 85, 119));
} else {
- item_background.setFillColor(front_color);
+ item_background.setFillColor(item->background_color);
}
item_pos.x = std::floor(item_pos.x);
diff --git a/src/plugins/NyaaSi.cpp b/src/plugins/NyaaSi.cpp
index 0d43810..2ecf0d3 100644
--- a/src/plugins/NyaaSi.cpp
+++ b/src/plugins/NyaaSi.cpp
@@ -84,6 +84,12 @@ namespace QuickMedia {
const std::string category_id_tag_end = "</nyaa:categoryId>";
const std::string size_tag_begin = "<nyaa:size>";
const std::string size_tag_end = "</nyaa:size>";
+ const std::string comments_tag_begin = "<nyaa:comments>";
+ const std::string comments_tag_end = "</nyaa:comments>";
+ const std::string trusted_tag_begin = "<nyaa:trusted>";
+ const std::string trusted_tag_end = "</nyaa:trusted>";
+ const std::string remake_tag_begin = "<nyaa:remake>";
+ const std::string remake_tag_end = "</nyaa:remake>";
size_t index = 0;
while(index < website_data.size()) {
@@ -105,6 +111,9 @@ namespace QuickMedia {
std::string downloads = get_rss_item_text(website_data, index, item_end, downloads_tag_begin, downloads_tag_end);
std::string category_id = get_rss_item_text(website_data, index, item_end, category_id_tag_begin, category_id_tag_end);
std::string size = get_rss_item_text(website_data, index, item_end, size_tag_begin, size_tag_end);
+ std::string comments = get_rss_item_text(website_data, index, item_end, comments_tag_begin, comments_tag_end);
+ std::string trusted = get_rss_item_text(website_data, index, item_end, trusted_tag_begin, trusted_tag_end);
+ std::string remake = get_rss_item_text(website_data, index, item_end, remake_tag_begin, remake_tag_end);
if(title.empty() || link.empty() || pub_date.empty() || seeders.empty() || leechers.empty() || downloads.empty() || category_id.empty() || size.empty()) {
fprintf(stderr, "Error: failed to parse nyaa.si rss items\n");
@@ -114,7 +123,11 @@ namespace QuickMedia {
auto body_item = std::make_unique<BodyItem>(std::move(title));
body_item->url = std::move(link);
body_item->thumbnail_url = "https://nyaa.si/static/img/icons/nyaa/" + category_id + ".png";
- body_item->set_description("Published: " + pub_date + "\nSeeders: " + seeders + "\nLeechers: " + leechers + "\nDownloads: " + downloads + "\nSize: " + size);
+ body_item->set_description("Published: " + pub_date + "\nSeeders: " + seeders + "\nLeechers: " + leechers + "\nDownloads: " + downloads + "\nSize: " + size + "\nComments: " + comments);
+ if(trusted == "Yes")
+ body_item->background_color = sf::Color(43, 95, 47);
+ else if(remake == "Yes")
+ body_item->background_color = sf::Color(93, 45, 47);
result_items.push_back(std::move(body_item));
index = item_end + 7;