Monthly Shaarli

All links of one month in a single page.

July, 2025

Ansible gotchas for the forgetful developer

include_tasks files that in turn contain import_tasks cause cryptic errors

It appears to be good practice to avoid using import_tasks in a file if the file itself was included with include_tasks.

If you do you will get a cryptic error message like:

# ERROR! Unexpected Exception, this is probably a bug: expected str, bytes or os.PathLike object, not NoneType
beaconDB public domain wireless geolocation database

But I don't understand how to replace Mozilla Locations Services in MicroG with this. I suppose the microg project needs to make that decision, or perhaps I should update microg on the phone (not really possible without re-flashing the whole thing, I assume).

Audiobookshelf - first impressions

I got an instance up and running (obligatory Ansible role https://codeberg.org/ansible/audiobookshelf) and added my audiobooks library to it. Looks very nice :-)

My initial impression is that the audiobooks UX is much better than that of Jellyfin. I will definitely be moving that library to Audiobookshelf.

Podcasts can only be added and episodes downloaded for users with admin privileges, which seems excessive to me. But given that, the UX is straight-forward. Supports OPML import, and handled my OPML file with almost 150 feeds without choking.

In summary, I am happy to have it up and running and expect it to be my primary venue for audiobook and podcast listening.

Work-arounds to get podcast RSS feeds from those awful closed platforms

Soundcloud

Is the podcast you want to listen to hosted on Soundcloud? First of all, double-check that the podcast is not also hosted somewhere else (more often than not that is the case, and then you can simply avoid Soundcloud).
Soundcloud makes it really hard to discover the podcast's RSS feed. It is not shown anywhere on the page, nor in the HTML source.
Based on a feed URL we already possess and that channel's Soundcloud landing page, we can manually construct the hidden RSS feed endpoint for any Soundcloud "podcast":

  1. Open the HTML source of the Soundcloud "podcast", for example https://soundcloud.com/user-268302561.
  2. In the HTML source, find the user ID property, which looks like soundcloud://users:819898639 (I suggest grep for soundcloud://users).
  3. Copy the numeric part, and construct a URL like this: https://feeds.soundcloud.com/users/soundcloud:users:819898639/sounds.rss.
  4. Take a moment to reflect on the awfulness of siloed web services and do your best to avoid encouraging them in future.