This branch of the gPodder software was modified by Rob L. with the goal of creating a version of gPodder that provided the features I want in a podcast management tool. The features I've been adding to gPodder include:
- Use of Plex-style media file naming.
- If my media files get separated from my gPodder database, I want to know what the file contains.
- I find the Plex-style to work pretty well for me.
- Ability to add a new podcast manually along with adding a single episode or a batch of episodes.
- I have a lot of old podcasts that are no longer available online and I wanted to be able to include them within gPodder and have them look and behave like a regular podcast.
- Ability to lookup podcast and episode information online and use the metadata in my manually created podcasts and episodes.
- A lot of my old podcast episodes have inconsistent MP3 tags embedded in them so most of the important information, like publish date, are missing. Being able to get accurate metadata is important to keeping my podcasts accurate.
- Enhance the UI by using CSS to define styles that can be altered while the app is running.
- The changes to text color and style as well as background and foreground colors can be easily changed, and those changes integrate with the dark and light themes already provided by gPodder.
I have found the gPodder code to be a great starting point since it offers so many features that I find very useful. My primary goal is to update the UI in a way that is useful to me as well as add important features that allow me to work with podcasts I really enjoy but are no longer supported online.
If you are interested in using my changes, feel free to do so.
___ _ _ ____
__ _| _ \___ __| |__| |___ _ _ |__ /
/ _` | _/ _ \/ _` / _` / -_) '_| |_ \
\__, |_| \___/\__,_\__,_\___|_| |___/
|___/
Media aggregator and podcast client
Copyright 2005-2022 The gPodder Team
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/.
- 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.
- 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 only if using
make buildwheelormake install - installer only if using
make install - help2man
- intltool
- pytest
- pytest-httpserver
- pytest-cov
- desktop-file-utils
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:
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).
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.
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/
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"
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.
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 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.
- 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