commit 02a4d6e68bff637ead8e0fd9d60eecd9c6b9be69
parent 2929cef4604ce0e9bdba5f49d8eb2f3cea312f8c
Author: citbl <citbl@citbl.org>
Date: Sat, 25 Oct 2025 19:23:26 +1000
1.4 pass chrome user_agent for Reddit support
Diffstat:
4 files changed, 22 insertions(+), 11 deletions(-)
diff --git a/docs/readr.1 b/docs/readr.1
@@ -5,7 +5,7 @@
.nh
.ad l
.\" Begin generated content:
-.TH "READR" "1" "2025-10-08"
+.TH "READR" "1" "2025-10-25"
.PP
.SH NAME
.PP
@@ -29,7 +29,7 @@ make install
.PP
.SH REQUIREMENTS
.PP
-\fBlibcurl\fR(1), \fBlibmrss\fR(1)
+\fBlibcurl\fR(1), \fBlibmrss\fR(1), \fBsqlite3\fR(1)
.PP
.SH EXAMPLES
.PP
diff --git a/docs/readr.html b/docs/readr.html
@@ -52,7 +52,7 @@
</section>
<section class="Sh">
<h1 class="Sh" id="REQUIREMENTS"><a class="permalink" href="#REQUIREMENTS">REQUIREMENTS</a></h1>
-<p class="Pp"><b>libcurl</b>(1), <b>libmrss</b>(1)</p>
+<p class="Pp"><b>libcurl</b>(1), <b>libmrss</b>(1), <b>sqlite3</b>(1)</p>
</section>
<section class="Sh">
<h1 class="Sh" id="EXAMPLES"><a class="permalink" href="#EXAMPLES">EXAMPLES</a></h1>
@@ -88,7 +88,7 @@ https://example3.com/rss</pre>
</div>
<table class="foot">
<tr>
- <td class="foot-date">2025-10-08</td>
+ <td class="foot-date">2025-10-25</td>
<td class="foot-os"></td>
</tr>
</table>
diff --git a/src/config.h b/src/config.h
@@ -1,6 +1,8 @@
#pragma once
-#define VERSION "v1.3"
+#define VERSION "v1.4"
+
+#define USER_AGENT "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36"
// source file for RSS URLS, one per line
// folder and file must exist
diff --git a/src/feeds.c b/src/feeds.c
@@ -47,10 +47,24 @@ void
fetch_feed(feed_t* feed, char* url)
{
static mrss_t* rss = NULL;
+
+ mrss_options_t* opt;
+ opt = mrss_options_new(10, // timeout
+ NULL, // proxy
+ NULL, // proxy_auth
+ NULL, // certfile
+ NULL, // password
+ NULL, // cacert
+ 1, // verifypeer
+ NULL, // authentication
+ USER_AGENT // for reddit etc. using Chrome
+ );
+
*feed = (feed_t) { .url = url };
feed->title = (char*)ecalloc(FEED_CAP, sizeof(char));
- mrss_error_t rc = mrss_parse_url(url, &rss);
+ /* process feed */
+ mrss_error_t rc = mrss_parse_url_with_options(url, &rss, opt);
if (rc != MRSS_OK || rss == NULL) {
snprintf(feed->title, FEED_CAP, "%s%s ", "(bad) ", url ? url : "(unknown feed url)");
@@ -59,17 +73,12 @@ fetch_feed(feed_t* feed, char* url)
snprintf(feed->title, FEED_CAP, "%s", rss->title ? rss->title : "(unknown feedtitle)");
- // size_t len = MIN(FEED_CAP, strlen(rss->title) + 1);
- // feed->title = (rss->title != NULL) ? strndup(rss->title, len) : "Unknown feed";
- // feed->title[len - 1] = '\0';
-
for (mrss_item_t* it = rss->item; it; it = it->next) {
char* title = (it->title && *it->title) ? it->title : "";
char* link = (it->link && *it->link) ? it->link : "";
char* comments = (it->comments && *it->comments) ? it->comments : "";
char* desc = (it->description && *it->description) ? it->description : "";
char* date = (it->pubDate && *it->pubDate) ? it->pubDate : "";
- // char* author = (it->author && *it->author) ? it->author : "";
remove_all_tags(desc);