I am working on following somewhat in Peter’s footsteps. He has his FreshRSS reader connected to his weblog, for everything he ‘stars’ in his feed reader. Those get posted to his ‘favourites’ stream, and send webmentions so they end up as ‘likes’ underneath the original posts. See Peter’s description on his blog.

My plans are a bit more ambitious, an ambition that may yet well bump into the limtis of my php / mysql capabilities.

I want to be able to mark articles in the feed reader for three things: bookmarking, favouriting, and replies. Then I want to add two pieces of content, and post that to my site.

When I favourite something on my blog, I basically always add 2 things when posting it: a rationale for why I like something, and a quote from the original article that meant something to me. See the image below, a screenshot of a ‘favourite’ I marked earlier this month.

That post is made of a short template that I now activate when in my blog’s editor with a hotkey (using AlfredApp) that creates the star, and has a place for the URL, title and author, plus my own motivation for posting, and a quote with the author’s name repeated.
Favourites, bookmarks and replies follow the same template. The only difference is the symbol shown, and the microformat used to signal to the original article what sort of webmention I’m sending their way (so they know how to treat it, e.g. as a like or as a comment/reply)

Peter’s example of favouriting by starring leads to setting a boolean field in the content table itself of the database.
FreshRSS lacks three distinct ‘starring’ buttons, but I can easily add labels to a posting. Those labels are stored in a separate table from the feed articles, unlike when starring.

The first step to take then is to gain access to the postings I mark for follow-up during feed reading. I’ve used the following SQL query:

SELECT ton_entry.link, ton_entry.author, ton_entry.title, ton_entrytag.id_tag, uncompress(ton_entry.content_bin) as content FROM ton_entry JOIN ton_entrytag ON ton_entry.id=ton_entrytag.id_entry

The two key differences with Peter’s SQL statement are, the JOIN part, and the uncompress part. The JOIN statement combines the table that knows what labels I applied with the table that contains all articles, and selects only those where an article ID is in both tables, resulting in a list of the articles I applied labels to. Because in a later step I want to select a quote from the source article the SQL statement also grabs the content of an article. That content is stored as a compressed binary blob (yes, blob is its official name) in the database. Using ‘uncompress’ makes the content blob human readable again, and the ‘as content’ bit puts it in a variable called content.

The next step is allowing me to provide my remarks and select a quote through a form, and the third step to add all that in to the right template based on the label (favourite, bookmark, reply), after which I need to put it into my WordPress install in the right categories and publish it.

One reaction on “Messing Around In The FreshRSS Back-End

  1. Houtje-touwtje, literally ‘small stick-short rope’, or cord loops fasteners in English, is the more down to earth and old Dutch phrase for putting stuff together with duct tape (known as MacGyver tape to many here, after the 80’s tv series). After messing around in the FreshRSS back-end last weekend, yesterday I made a houtje-touwtje working version to let me post more easily about the things I find in my feed reader.
    In my previous post I mentioned I want to support three different reactions:

    favourites, something I liked, or want to let the author know I appreciated
    bookmarks, something I (want to) read, and keep reference to for my notes

    replies, something where I comment on or reply to a posting and its author directly

    Four labeled posts in my feed reader
    The way I mark postings in my feed reader is attaching a label to them (favourite, bookmark, reply)
    Then with the SQL statement from the last posting I pull out those labeled postings (label, url, title, author, and content).
    Yesterday evening I attempted to bring it a step or two further, but ended up with something that works.
    I created a php html page that shows me, using the SQL query, every labeled posting and for each posting shows a webform. That webform is needed because I want to be able to add two things to every labeled posting (though they’re not mandatory)

    My motivation for favouriting, or bookmarking, or my reply
    A quote of the bit in the original posting I am picking up on

    The form for me to add motivation and selected quote
    Next to that the form is needed to forward the other information (link, title, URL) to the next stage, along with my response and quote. This simultaneously allows me to clean up URLs, shorten the title or provide the actual author name if the post only contains a shortened username e.g.
    The webform also contains a field for the total number of labeled items (hidden), and a field for the label itself. Again needed to forward them to the next stage of the process.
    The second stage is that submitting the form, calls the same php page again, but this time to process the submitted form information (no longer the database query)
    Based on the label (fav, bookmark or reply) it selects a template for how I want to show those in my blog (each have their own svg-icon and first sentence), uses the right microformat, and adds in the url, author, title and my reaction and selected quote in the right spots. The microformat is relevant for when my posting sends a webmention to the website I’m reacting to, and lets that site know if it’s a reply (to show underneath in their comments), or a bookmark or favourite. Assuming that the other website can receive webmentions that is.
    Resulting HTML
    The result of that is then shown to me in HTML. I paste that HTML into my blog editor, add things like posting categories and tags, and hit publish. In essence I’ve replaced what the Post Kinds plugin, that I stopped using, in my WordPress blog did before: automating fetching some info, and adding it into my posting. It is akin to what I had previously, where I weekly posted links to my blog from my Evernote bookmarks using e-mail.
    The posting on the blog
    This ‘houtje-touwtje‘ set-up doesn’t do the fancy things yet, like posting itself automatically to my blog through micropub (UPDATE January 2022 it now does!), or providing me this functionality within my FreshRSS reader’s interface. Also, after posting things, I need to manually delete the labels, so they don’t resurface the next time I run the php script.
    Another path to explore is using the same or similar workflow to put labeled posts into my personal notes.
    This morning I tested out the workflow, and I was pleased with the result. I loaded up the feed reader, and did my usual reading. I marked things for follow up. I ran the script, added my motivation and selected quotes. Pasted the resulting HTML into my blog, added categories and hit publish. This definitely feels smoother and less time consuming. It’s been a while I posted more than 1 thing based on my feedreading that day, let alone four (1, 2, 3, 4) within minutes of reading it. The ‘normal’ routine was ending up with a bunch of open tabs in my browser, and at the end of the day giving up and hitting close-all for those I didn’t get around to during the day.
    [Update: the php script is available in my GitHub account]

Comments are closed.

To respond on your own website, enter the URL of your response which should contain a link to this post's permalink URL. Your response will then appear (possibly after moderation) on this page. Want to update or remove your response? Update or delete your post and re-enter your post's URL again. (Find out more about Webmentions.)

Mentions

Likes