Short post on baleen
All checks were successful
Build and copy to prod / build-and-copy (push) Successful in 1m21s

This commit is contained in:
Lewis Dale 2024-09-26 08:12:14 +01:00
parent 148679698d
commit 82bb1cb4a1

View File

@ -0,0 +1,28 @@
---json
{
"title": "Filter RSS/Podcast feeds",
"date": "2024-09-26T07:30:00.873Z",
"tags": [
"rss",
"podcast",
"php"
],
"excerpt": "Instead of finding a better Podcast app, I created a little PHP utility server to allow me to filter and rename Podcast (and by extension, RSS) feeds to create playlists."
}
---
I [mentioned a while ago](/post/filtering-podcast-feeds) that I wanted a way to filter Podcasts into multiple separate feeds based on their content. The tool I mention in the previous post, [SiftRSS](https://www.siftrss.com) is pretty good, but the only thing it doesn't currently do is let you change the name of the feed, which means I end up with several feeds with identical names.
So, I made my own: [Baleen](https://git.lewisdale.dev/lewis/baleen). It's pretty simple, and it's a hobby project so the UX sucks - it's _just_ usable enough to be functional, but also that's because I wrote it. I'll hopefully make some changes in the future, but no promises.
How it works is fairly simple. I can register a feed and a set of filters using the CLI:
```bash
php bin/doctrine test:feed -f include -t title -a "Something" <feed url> "New feed title"
```
This creates a new RSS feed, called "New feed title", which only includes posts from the feed URL that include the title "Something". I could also exclude certain titles with `-f exclude`, for example.
Filtering is excruciatingly simple. It's just using XPaths on the target elements, joined by a pipe - so multiple filters work as an `OR`, not an `AND`.
Anyway, this was a fun little project to create that solves a very specific problem.