dogeystamp
25f01b702a
this should help scripts find new articles without having to parse human-readable output
93 lines
2.2 KiB
C
93 lines
2.2 KiB
C
/*
|
|
|
|
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.
|
|
|
|
© 2021 dogeystamp <dogeystamp@disroot.org>
|
|
*/
|
|
|
|
#include <curl/curl.h>
|
|
|
|
typedef struct {
|
|
const char *url;
|
|
const char *feedName;
|
|
const time_t update;
|
|
} linkStruct;
|
|
|
|
/* Example link:
|
|
{
|
|
.url = "https://example.com/rss/feed.rss",
|
|
// This will be used as the folder name for the feed.
|
|
.feedName = "examplefeed",
|
|
// The time in seconds between checks for updates.
|
|
.update = 3600,
|
|
},
|
|
*/
|
|
|
|
static const linkStruct links[] = {
|
|
{
|
|
.url = "",
|
|
.feedName = "",
|
|
.update = 0,
|
|
},
|
|
};
|
|
|
|
enum logLevels {
|
|
LOG_FATAL,
|
|
LOG_ERROR,
|
|
LOG_OUTPUT,
|
|
LOG_INFO,
|
|
LOG_VERBOSE,
|
|
};
|
|
|
|
// Print all messages at least as important as this level.
|
|
static const int logLevel = LOG_OUTPUT;
|
|
|
|
// Set the maximum amount of redirects curl will follow.
|
|
// Use 0 to disable redirects, and -1 for no limit.
|
|
static const int maxRedirs = 10;
|
|
|
|
// Restrict allowed protocols for curl.
|
|
// For more information: https://curl.se/libcurl/c/CURLOPT_PROTOCOLS_STR.html
|
|
static const char curlProtocols[] = "http,https";
|
|
|
|
enum outputFormats {
|
|
OUTPUT_HTML,
|
|
#ifdef JSON
|
|
OUTPUT_JSON,
|
|
#endif // JSON
|
|
};
|
|
|
|
// When saving, sets the format of the saved file.
|
|
static const enum outputFormats outputFormat = OUTPUT_HTML;
|
|
|
|
// Controls what is printed to stdout after each update.
|
|
enum summaryFormats {
|
|
/*
|
|
Prints the number of new articles for each feed.
|
|
Example:
|
|
|
|
feed1: 2 new articles
|
|
feed2: 2 new articles
|
|
|
|
*/
|
|
SUMMARY_HUMAN_READABLE,
|
|
|
|
/*
|
|
Prints relative paths of new articles.
|
|
Example:
|
|
|
|
feed1/article1.json
|
|
feed1/article2.json
|
|
feed2/something.json
|
|
feed2/otherthing.json
|
|
|
|
*/
|
|
SUMMARY_FILES,
|
|
};
|
|
|
|
static const enum summaryFormats summaryFormat = SUMMARY_HUMAN_READABLE;
|