Baike.dev
All toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
G

gpodder

> 编程语言
Open source

The gPodder podcast client.

1.4K stars0 likes0 views
WebsiteGitHub

About

The gPodder podcast client.


 __ _| _ \___  __| |__| |___ _ _  |__ /
/ _` |  _/ _ \/ _` / _` / -_) '_|  |_ \
\__, |_| \___/\__,_\__,_\___|_|   |___/
|___/
        Media aggregator and podcast client

Copyright 2005-2022 The gPodder Team

License

gPodder is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

gPodder is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Dependencies

  • Python 3.8 or newer
  • Podcastparser 0.6.0 or newer
  • mygpoclient 1.7 or newer
  • requests 2.24.0 or newer
  • dbus-python

As an alternative to python-dbus on Mac OS X and Windows, you can use the dummy (no-op) D-Bus module provided in "tools/fake-dbus-module/".

For quick testing, see Run from Git to install dependencies.

GTK3 UI - Additional Dependencies

  • PyGObject 3.22.0 or newer
  • GTK+3 3.16 or newer

Optional Dependencies

  • Bluetooth file sending: gnome-obex-send or bluetooth-sendto
  • Size detection on Windows: PyWin32
  • Native OS X support: ige-mac-integration
  • MP3 Player Sync Support: python-eyed3 (0.7 or newer)
  • iPod Sync Support: libgpod (tested with 0.8.3)
  • Clickable links in GTK UI show notes: html5lib
  • HTML show notes: WebKit2 gobject bindings (webkit2gtk, webkitgtk4 or gir1.2-webkit2-4.0 packages).
  • Better Youtube support (> 15 entries in feeds, download audio-only): youtube_dl or yt-dlp

Build Dependencies

  • build only if using make buildwheel or make install
  • installer only if using make install
  • help2man
  • intltool

Test Dependencies

  • pytest
  • pytest-httpserver
  • pytest-cov
  • desktop-file-utils

Testing

To run tests, use...

make unittest

To set a specific python binary set PYTHON:

PYTHON=python3 make unittest

Tests in gPodder are written in two different ways:

  • doctests
  • unittests

If you want to add doctests, simply write the doctest and make sure that the module appears after --doctest-modules in pytest.ini. If you add tests to any module in src/gpodder you have nothing to do.

If you want to add unit tests for a specific module (ex: gpodder.model), you should add the tests as gpodder.test.model, or in other words:

The file:       src/gpodder/model.py
is tested by:   src/gpodder/test/model.py

After you've added the test, make sure that the module appears in "test_modules" in src/gpodder/unittests.py - for the example above, the unittests in src/gpodder/test/model.py are added as 'model'. For unit tests, coverage reporting happens for the tested module (that's why the test module name should mirror the module to be tested).

Running and Installation

To run gPodder from source, use..

bin/gpodder              # for the Gtk+ UI
bin/gpo                  # for the command-line interface

To install gPodder system-wide, use make install. By default, this will install all UIs and all translations. The following environment variables are processed by setup.py:

LINGUAS                  space-separated list of languages to install
GPODDER_INSTALL_UIS      space-separated list of UIs to install
GPODDER_MANPATH_NO_SHARE if set, install manpages to $PREFIX/man/man1

See setup.py for a list of recognized UIs.

Example: Install the CLI and Gtk UI with German and Dutch translations:

export LINGUAS="de nl"
export GPODDER_INSTALL_UIS="cli gtk"
make install

The "make install" target also supports DESTDIR and PREFIX for installing into an alternative root (default /) and prefix (default /usr):

make install DESTDIR=tmp/ PREFIX=/usr/local/

Debian and Ubuntu use dist-packages instead of site-packages for third party installs, so you'll want something like:

sudo python3 setup.py install --root / --prefix /usr/local --optimize=1 --install-lib=/usr/local/lib/python3.10/dist-packages

In fact, first try running python -c "import sys; print(sys.path)" to check what is the exact path. It depends on your version of python.

Portable Mode / Roaming Profiles

The run-time environment variable GPODDER_HOME is used to set the location for storing the database and downloaded files.

This can be used for multiple configurations or to store the download directory directly on a MP3 player or USB disk:

export GPODDER_HOME=/media/usbdisk/gpodder-data/

OS X Specific Notes

Default directories:

  • GPODDER_HOME="$HOME/Library/Application Support/gPodder"
  • GPODDER_DOWNLOAD_DIR="$HOME/Library/Application Support/gPodder/download"

These settings may be modified by editing the following file of the .app :

/Applications/gPodder.app/Contents/MacOSX/_launcher

Add and edit the following lines to alter the launch environment on OS X :

export GPODDER_HOME="$HOME/Library/Application Support/gPodder"
export GPODDER_DOWNLOAD_DIR="$HOME/Library/Application Support/gPodder/download"

Changing the Download Directory

The run-time environment variable GPODDER_DOWNLOAD_DIR is used to set the location for storing the downloads only (independent of the data directory GPODDER_HOME):

export GPODDER_DOWNLOAD_DIR=/media/BigDisk/Podcasts/

In this case, the database and settings will be stored in the default location, with the downloads stored in /media/BigDisk/Podcasts/.

Another example would be to set both environment variables:

export GPODDER_HOME=~/.config/gpodder/
export GPODDER_DOWNLOAD_DIR=~/Podcasts/

This will store the database and settings files in ~/.config/gpodder/ and the downloads in ~/Podcasts/. If GPODDER_DOWNLOAD_DIR is not set, $GPODDER_HOME/Downloads/ will be used if it is set.

Logging

By default, gPodder writes log files to $GPODDER_HOME/Logs/ and removes them after a certain amount of times. To avoid this behavior, you can set the environment variable GPODDER_WRITE_LOGS to "no", e.g:

export GPODDER_WRITE_LOGS=no

Extensions

Extensions are normally loaded from gPodder's "extensions/" folder (in share/gpodder/extensions/) and from $GPODDER_HOME/Extensions/ - you can override this by setting an environment variable:

export GPODDER_EXTENSIONS="/path/to/extension1.py extension2.py"

In addition to that, if you want to disable loading of all extensions, you can do this by setting the following environment variable to a non- empty value:

export GPODDER_DISABLE_EXTENSIONS=yes

If you want to report a bug, please try to disable all extensions and check if the bug still appears to see if an extension causes the bug.

More Information

  • Homepage: http://gpodder.org/
  • Bug tracker: https://github.com/gpodder/gpodder/issues
  • Mailing list: http://freelists.org/list/gpodder
  • IRC channel: #gpodder on irc.libera.chat

GitHub Issues· 352 open

View all on GitHub
  • #1878

    Temporally download files with yt-dlp have wrong path in build 1.0.1742

    bugUpdated Sep 16, 2026
  • #1877

    All Feeds Asking To Pass Cookies In Error Log

    Updated Sep 12, 2026
  • #1876

    Feature request --> Add playback weekly schedule formatted window

    Updated Aug 19, 2026
  • #1870

    Fix relative paths and/or allow absolute path prefixes in .m3u files

    Updated Jul 13, 2026
  • #1871

    Finished downloads are not committed to the database until the next feed update (data loss on crash)

    Updated Jul 8, 2026
  • #1868

    Feature request: delete based on number of episodes per subscription instead of age

    Updated Jun 20, 2026
  • #1753

    Does not sync with iPod anymore AttributeError: 'iPodDevice' object has no attribute 'destination'

    bugUpdated Jun 11, 2026
  • #1860

    Feature request: preference for not deleting any episode by any means when updating

    enhancementUpdated Jun 7, 2026
  • #1863

    Feature request: option to have new episode window open mimized

    enhancementUpdated May 25, 2026
  • #1853

    Feature Request: Download only one section of podcasts

    Updated Mar 20, 2026

Highlights

  • •Python 3.8 or newer
  • •Podcastparser 0.6.0 or newer
  • •mygpoclient 1.7 or newer
  • •requests 2.24.0 or newer
  • •dbus-python
  • •PyGObject 3.22.0 or newer
  • •GTK+3 3.16 or newer
  • •Bluetooth file sending: gnome-obex-send or bluetooth-sendto
  • •Size detection on Windows: PyWin32
  • •Native OS X support: ige-mac-integration

> Tags

Python

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言