Funkwhale, plugins 

13 months ago, I started working on a plugin system for Funkwhale.

The idea was to allow more use cases, without increasing the maintainance burden of the core application.

Other this 13 months, I've tried and ditched 3 implementations of the plugin system.

However, the 4th seem to be one I'll keep!

Funkwhale, plugins 

I see three main use cases for plugins:

1. Notify third-party systems when something happen (e.g scrobble tracks to Last.fm)
2. Import tracks from third-party systems (e.g play your music hosted at your Nextcloud instance
3. Implement some API endpoints required by third party systems (e.g a prometheus metrics endpoint for monitoring).

Funkwhale, plugins 

My current iteration covers item #1, as I've successfully developped the foundation of the plugin system, and implemented a scrobbler plugin on top of that (tried and working with Last.fm and Listenbrainz).

Next step is to work on making audio hosted elsewhere available at Funkwhale. I think I'll build a webdav plugin, as Nextcloud supports this IIRC.

Follow

Funkwhale, plugins 

I've included some screenshots below to demonstrate how the scrobller plugin is configured.

· · Web · 1 · 2 · 2

Funkwhale, plugins 

From a plugin developper perspective, it's rather easy (I think) to write a plugin. There's very little boilerplate:

- create a dir for your plugin
- create a `funkwhale_startup.py` file, that will hold your plugin configuration and allow you to override certain things during startup (such as installing dependencies)
- create a `funkwhale_ready.py` file, this is typically where you'll connect to various hooks

Plugin config looks like this:

Sign in to participate in the conversation
Mastodon for Tech Folks

This Mastodon instance is for people interested in technology. Discussions aren't limited to technology, because tech folks shouldn't be limited to technology either!