I’ve recently been playing around with feedreaders, and how I get my data from the web. I was previously using Feedly, but then decided I didn’t want to share my data with them (linked to Facebook account). I then signed up for thefeedreader.com which is decent, but not exactly what I was after. So I thought I’d try out a couple of alternatives.
The first one I tried was FreshRSS which is a web based reader, though a self hosted solution. It was between this and TinyTinyRSS, but I decided to go with this one as it could be setup using a SQLIte Db rather than MySQL - I thought it would be easier for my Raspbery Pi to handle.
I previously had lighttpd installed on the Pi but after reading about it being buggy, I decided to remove and install nginx instead. I more or less followed this guide to install, though did hit upon an issue in that the PHP components were version 7.0 instead of 5 (just replaced 5 with 7.0 in the commands).
After setting up, the FreshRSS install didn’t go as planned as it stated I was missing libraries to process XML and DOM. This was especially annoying as it didn’t tell me what was missing. I was trying to instal libxml2 but that didn’t work and the PHP website wasn’t much use either. I randomly stumbled across a site that mentioned installing php7.0-xml and so I tried that - it worked!
I added some feeds and it looked like this:
Everything was grand, almost. I didn’t like the way it was handelling my twitter feeds. They were truncated and I decided I wanted to click on a link and get taken to that users page - so I could read all the new tweets at once. I played around with writing a plug-in, though later found out it didn’t work as the links in the feed were potentially another users (if it was a Re-Tweet). In case it’s of any use, this is sort of what I had:
class TwitterLinksExtension extends Minz_Extension {
public function init() {
//$this->registerHook('entry_before_insert', array($this, 'transformLink'));
// Use this one for debug. Doesn't store in Db
$this->registerHook('entry_before_display', array($this, 'transformLink'));
}
public function transformLink($entry) {
// $entry is FreshRSS_Entry objecy
// Accessible fields:
// title, author, content, link, date, is_read, is_favourite, feed
$link = $entry->link();
// Only apply this stuff two twitter feed items
if (false === strpos($link, 'twitter.com')) {
return $entry;
}
// Store the content
$content = $entry->content();
// Get the link the the users page
// Note author contains re-tweeters name, not the user I'm following
// Don't work for retweets as has retweeter.
$pos = strpos($link,'/', 20);
$timelineLink = substr($link, 0, $pos);
$entry->_content(sprintf('%s <p>Link %s</p>', $content, $entry->feed()));
return $entry;
}
}
Plan B involved hacking around the helper files (app/views/helpers/index/normal/entry_header.phtml
) to change the links with a bit of php. Not very nice really, but got the job done - I’m sure there’s an alternative that’s better, but difficult with to lack of documentation etc.
Overall, the program seemed good and I liked the clean look. There were a few negatives though, so I’ll be back with a part II. To summarise my thoughts on this feed reader: