SyndicationDomination 0.0
An RSS/Atom parser, because there's nothing else out there.
Loading...
Searching...
No Matches
feed_item.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <pugixml.hpp>
4#include <string>
5#include <vector>
6
7#include "utils.hpp"
8
9using namespace pugi;
10
20class FeedItem {
21private:
22 xml_node item_node;
23 std::string website_url;
24
25 std::string title;
26 std::string content;
27 std::string url;
28 std::string media_url;
29 std::string pub_date;
30 std::string img_url;
31
35 std::string extract_url();
36
41 std::string extract_media_url();
42
43 static inline const std::vector<ExtractionParam> __IMG_URL_PARAMS{
44 {ExtractionParam::ParamType::ATTRIBUTE, {"thumbnail"}, "url"},
45 {ExtractionParam::ParamType::ATTRIBUTE, {"media:thumbnail"}, "url"},
46 {ExtractionParam::ParamType::ATTRIBUTE, {"group", "thumbnail"}, "url"},
47 {ExtractionParam::ParamType::ATTRIBUTE, {"media:group", "thumbnail"}, "url"},
48 {ExtractionParam::ParamType::ATTRIBUTE, {"media:group", "media:thumbnail"}, "url"}
49 };
54 std::string extract_img_url();
55
60 void fix_url(std::string &s);
61
62 static inline const std::vector<ExtractionParam> __CONTENT_PARAMS{
64 {ExtractionParam::ParamType::CHILD, {"content:encoded"}},
65 {ExtractionParam::ParamType::CHILD, {"description"}},
67 {ExtractionParam::ParamType::CHILD, {"media:group", "media:description"}}
68 };
69 static inline const std::vector<ExtractionParam> __PUB_DATE_PARAMS{
71 {ExtractionParam::ParamType::CHILD, {"published"}},
75 };
80 void parse();
81
82public:
93 xml_node item_node, std::string website_url
94 ): item_node{item_node}, website_url{website_url} {
95 parse();
96 }
97
98 std::string get_title() { return title; }
99 std::string get_content() { return content; }
100 std::string get_url() { return url; }
101 std::string get_media_url() { return media_url; }
102 std::string get_pub_date() { return pub_date; }
103 std::string get_img_url() { return img_url; }
104
108 std::string to_json();
109};
Represents a feed item or article.
Definition: feed_item.hpp:20
std::string get_title()
Definition: feed_item.hpp:98
std::string get_pub_date()
Definition: feed_item.hpp:102
std::string get_url()
Definition: feed_item.hpp:100
std::string to_json()
Represents the FeedItem object (itself) as a json, returned as a string.
Definition: feed_item.cpp:83
FeedItem(xml_node item_node, std::string website_url)
Constructs the FeedItem object from a pugi::xml_node representing a feed item.
Definition: feed_item.hpp:92
std::string get_content()
Definition: feed_item.hpp:99
std::string get_img_url()
Definition: feed_item.hpp:103
std::string get_media_url()
Definition: feed_item.hpp:101
@ ATTRIBUTE
Definition: extraction_param.hpp:19
@ CHILD
Definition: extraction_param.hpp:18