Added option to only post titles

This commit is contained in:
tastytea 2018-04-14 14:10:14 +02:00
parent 6fa86a3c57
commit bc361e38be
Signed by: tastytea
GPG Key ID: 59346E0EA35C67E5
4 changed files with 37 additions and 14 deletions

View File

@ -1,6 +1,6 @@
cmake_minimum_required (VERSION 3.7) cmake_minimum_required (VERSION 3.7)
project (mastorss project (mastorss
VERSION 0.4.3 VERSION 0.5.0
LANGUAGES CXX LANGUAGES CXX
) )

View File

@ -43,10 +43,13 @@ std::uint16_t read_config(string &instance, string &access_token, string &feedur
file.close(); file.close();
json >> config; json >> config;
instance = config[profile + ".instance"].asString(); instance = config[profile]["instance"].asString();
access_token = config[profile + ".access_token"].asString(); access_token = config[profile]["access_token"].asString();
feedurl = config[profile + ".feedurl"].asString(); feedurl = config[profile]["feedurl"].asString();
max_size = config.get(profile + ".max_size", max_size).asUInt(); if (!config[profile]["max_size"].isNull())
{
max_size = config[profile]["max_size"].asUInt();
}
} }
else else
{ {
@ -58,7 +61,7 @@ std::uint16_t read_config(string &instance, string &access_token, string &feedur
{ {
cout << "Instance: "; cout << "Instance: ";
cin >> instance; cin >> instance;
config[profile + ".instance"] = instance; config[profile]["instance"] = instance;
config_changed = true; config_changed = true;
} }
if (access_token.empty()) if (access_token.empty())
@ -87,7 +90,7 @@ std::uint16_t read_config(string &instance, string &access_token, string &feedur
access_token); access_token);
if (ret == 0) if (ret == 0)
{ {
config[profile + ".access_token"] = access_token; config[profile]["access_token"] = access_token;
config_changed = true; config_changed = true;
} }
else else
@ -107,7 +110,22 @@ std::uint16_t read_config(string &instance, string &access_token, string &feedur
{ {
cout << "feedurl: "; cout << "feedurl: ";
cin >> feedurl; cin >> feedurl;
config[profile + ".feedurl"] = feedurl; config[profile]["feedurl"] = feedurl;
config_changed = true;
}
if (!config[profile]["titles_only"].asBool())
{
string titles_only;
cout << "post only titles? [y/n]: ";
cin >> titles_only;
if (titles_only[0] == 'y')
{
config[profile]["titles_only"] = true;
}
else
{
config[profile]["titles_only"] = false;
}
config_changed = true; config_changed = true;
} }
if (config_changed) if (config_changed)

View File

@ -69,14 +69,14 @@ int main(int argc, char *argv[])
} }
entries = parse_website(answer); entries = parse_website(answer);
string last_entry = config[profile + ".last_entry"].asString(); string last_entry = config[profile]["last_entry"].asString();
if (last_entry.empty()) if (last_entry.empty())
{ {
// If no last_entry is stored in the config file, // If no last_entry is stored in the config file,
// make last_entry the second-newest entry. // make last_entry the second-newest entry.
last_entry = entries.at(1); last_entry = entries.at(1);
} }
config[profile + ".last_entry"] = entries.front(); config[profile]["last_entry"] = entries.front();
bool new_content = false; bool new_content = false;
for (auto rit = entries.rbegin(); rit != entries.rend(); ++rit) for (auto rit = entries.rbegin(); rit != entries.rend(); ++rit)

View File

@ -83,7 +83,7 @@ std::vector<string> parse_website(const string &xml)
} }
// Read profile-specific hashtags or fail silently // Read profile-specific hashtags or fail silently
for (const Json::Value &value : list[profile + ".tags"]) for (const Json::Value &value : list[profile]["tags"])
{ {
watchwords.push_back(value.asString()); watchwords.push_back(value.asString());
} }
@ -108,13 +108,18 @@ std::vector<string> parse_website(const string &xml)
string title = v.second.get_child("title").data(); string title = v.second.get_child("title").data();
string link = v.second.get_child("link").data(); string link = v.second.get_child("link").data();
string desc = v.second.get_child("description").data(); string desc = v.second.get_child("description").data();
string str = title + "\n\n" + desc;
string str = title;
if (!config[profile]["titles_only"])
{
str += "\n\n" + desc;
}
bool skipthis = false; bool skipthis = false;
try try
{ {
// Skip entries beginning with this text // Skip entries beginning with this text
for (const Json::Value &v : config[profile + ".skip"]) for (const Json::Value &v : config[profile]["skip"])
{ {
const string skip = v.asString(); const string skip = v.asString();
if (!skip.empty()) if (!skip.empty())
@ -180,7 +185,7 @@ std::vector<string> parse_website(const string &xml)
// Read regular expressions from the config file and delete all matches. // Read regular expressions from the config file and delete all matches.
void individual_fixes(string &str) void individual_fixes(string &str)
{ {
for (const Json::Value &v : config[profile + ".fixes"]) for (const Json::Value &v : config[profile]["fixes"])
{ {
std::regex refix(v.asString()); std::regex refix(v.asString());
str = std::regex_replace(str, refix, ""); str = std::regex_replace(str, refix, "");