Terminal RSS Reader With Nom
I stumbled across nom today, which is a lightweight TUI application written in go that allows you to read RSS feeds in your terminal.
It seems that every few years I get so tired of the bullshit that I decide to get back into using terminal apps. Working in a terminal allows me to pretend that I live in one of those fallout vaults and keep a diary in the black and green terminal that you find next to the stimpacks and radroaches sometimes. I somehow always find my way back to regular applications for one reason or another, but for now I am going to enjoy the comfort and simplicity of the terminal while it lasts.
Of course, this comfort and simplicity comes at a price. Namely, it is uncomfortable and complicated.
Out of the gate I ran into issues. I am not sure if me and every blog I read is doing it wrong, or if this particular app has its schema messed up, but nom looks for content in an xml field called <encoded>
and if it does not find it, then it will fall back and show you a link that you need to open in a browser. A lot of the blogs that I read do not use this field at all and instead put the content of the post in the <description>
xml tag.
I patched nom to show me the link and the description instead and things seem to be working how I expect them to now. If you are running into a similar issue you can apply the patch below.
diff --git a/internal/commands/commands.go b/internal/commands/commands.go
index 54af59e..2b5dcaf 100644
--- a/internal/commands/commands.go
+++ b/internal/commands/commands.go
@@ -365,6 +365,8 @@ func glamouriseItem(item store.Item) (string, error) {
mdown += "\n"
mdown += item.PublishedAt.String()
mdown += "\n\n"
+ mdown += item.Link
+ mdown += "\n\n"
mdown += htmlToMd(item.Content)
out, err := glamour.Render(mdown, "dark")
diff --git a/internal/rss/rss.go b/internal/rss/rss.go
index 1628b27..87cf395 100644
--- a/internal/rss/rss.go
+++ b/internal/rss/rss.go
@@ -65,7 +65,7 @@ func feedToRSS(f config.Feed, feed *gofeed.Feed) RSS {
if it.Content == "" {
// If there's no content (as is the case for YouTube RSS items), fallback
// to the link.
- ni.Content = it.Link
+ ni.Content = it.Description
} else {
ni.Content = it.Content
}
Thank you for reading! Share your thoughts with me on mastodon or via email.
Check out some more stuff to read down below.
Most popular posts this month
- Moving to New Jersey
- SQLite DB Migrations with PRAGMA user_version
- Daggerversary
- Setting up ANTLR4 on Windows
- 3 Years
Recent Favorite Blog Posts
This is a collection of the last 8 posts that I bookmarked.
- The Framework 13 has a new high-res screen! from David Heinemeier Hansson
- 40 Thoughts At 40 from Blog – Brad Frost
- To Blog or to Social-Post from jwz
- Gotchas with SQLite in Production from Anže’s Blog
- Petter Reinholdtsen: More than 200 orphaned Debian packages moved to git, 216 to go from Planet Debian
- Eli Bendersky: You don't need virtualenv in Go from Planet Python
- Introducing Writebook from Jason Fried
- Reasons to use your shell's job control from Julia Evans
Articles from blogs I follow around the net
in which social media can be put in your own hands
I've been on Mastodon since early 2017 and have really enjoyed it. It's been great to see the Fediverse grow as a user-owned network that can function without a corporate overlord calling the shots, exploiting the user base, and ultimately sq…
via Technomancy September 13, 2024Notes on OpenAI's new o1 chain-of-thought models
OpenAI released two major new preview models today: o1-preview and o1-mini (that mini one is also a preview, despite the name) - previously rumored as having the codename "strawberry". There's a lot to understand about these models - they'…
via Simon Willison's Weblog: Entries September 12, 2024Questions and Answers vs. Features and Benefits
When making products, you can think of them as a collection of features or answers.Some people may say "you mean features or benefits?" No, I mean answers. Answers are counterpoints to questions people have in their heads. Answers fill holes, an…
via Jason Fried September 12, 2024Generated by openring