Extensions

Extensions are gPodder’s mechanism for adding optional features and allowing easy customizability. Some extensions are already activated by default if you are running a specific environment (e.g. Ubuntu Unity support in gPodder 3 is implemented as an extension).

Default Extensions Included With gPodder

The following extensions are included with gPodder 3:

How To Write Your Own Extension

Extensions are a great way to customize your gPodder workflow: you’ll be able to customize the UI, rename, modify or trigger external programs when episodes are downloaded, etc..

Getting started

  1. Extensions are loaded from the Extensions folder in the gPodder Home Folder. The folder doesn’t exist by default, so create it.

  2. An example extension is available here. Copy it to GPODDER_HOME/Extensions and restart gPodder.

  3. Extensions are activated from the Extensions pane of the Preferences dialog. Activate the Hello World Extension to get a item in the Extras menu called Say Hello.

  4. Modify the Message, restart gPodder and see the updated notification when you click Say Hello.

Doing something useful

Maybe an existing extension does something similar to what you want (rename after download, tagging, run a command after download, …). Find inspiration in its source code.

To see how an extension is loaded and every available callback, take a look at extensions.py; every method annotated with @call_extensions can be overriden in your extension. Check its parameters and return type.

gPodder’s model is quite straightforward. Given an episode e:

Debugging your extension

If your extension doesn’t appear in the list, be sure:

```

You should run gpodder -v anyway, because any log with lower priority than logger.warn is suppressed by default.

Feel free to ask for advice in the mailing list or as github issues: we are always pleased to see you customize gPodder to your own needs.

Also, you may have to modify code in gPodder itself to achieve a particular goal. This is OK: no need to recompile anything: just edit the .py and restart…

© 2005-2023 The gPodder Team · Edit this page on GitHub