2 __ _| _ \___ __| |__| |___ _ _ |__ /
3 / _` | _/ _ \/ _` / _` / -_) '_| |_ \
4 \__, |_| \___/\__,_\__,_\___|_| |___/
6 Media aggregator and podcast client
9 Copyright 2005-2022 The gPodder Team
14 gPodder is free software; you can redistribute it and/or modify
15 it under the terms of the GNU General Public License as published by
16 the Free Software Foundation; either version 3 of the License, or
17 (at your option) any later version.
19 gPodder is distributed in the hope that it will be useful,
20 but WITHOUT ANY WARRANTY; without even the implied warranty of
21 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 GNU General Public License for more details.
24 You should have received a copy of the GNU General Public License
25 along with this program. If not, see <http://www.gnu.org/licenses/>.
29 - [Python 3.7](http://python.org/) or newer
30 - [Podcastparser](http://gpodder.org/podcastparser/) 0.6.0 or newer
31 - [mygpoclient](http://gpodder.org/mygpoclient/) 1.7 or newer
32 - [requests](https://requests.readthedocs.io) 2.24.0 or newer
33 - [dbus-python](http://dbus.freedesktop.org/doc/dbus-python/)
35 As an alternative to python-dbus on Mac OS X and Windows, you can use
36 the dummy (no-op) D-Bus module provided in "tools/fake-dbus-module/".
38 For quick testing, see [Run from Git](https://gpodder.github.io/docs/run-from-git.html)
39 to install dependencies.
42 ### GTK3 UI - Additional Dependencies
44 - [PyGObject](https://wiki.gnome.org/PyGObject) 3.22.0 or newer
45 - [GTK+3](https://www.gtk.org/) 3.16 or newer
48 ### Optional Dependencies
50 - Bluetooth file sending: gnome-obex-send or bluetooth-sendto
51 - Size detection on Windows: PyWin32
52 - Native OS X support: ige-mac-integration
53 - MP3 Player Sync Support: python-eyed3 (0.7 or newer)
54 - iPod Sync Support: libgpod (tested with 0.8.3)
55 - Clickable links in GTK UI show notes: html5lib
56 - HTML show notes: WebKit2 gobject bindings
57 (webkit2gtk, webkitgtk4 or gir1.2-webkit2-4.0 packages).
58 - Better Youtube support (> 15 entries in feeds, download audio-only): youtube_dl or yt-dlp
61 ### Build Dependencies
81 To set a specific python binary set PYTHON:
83 PYTHON=python3 make unittest
85 Tests in gPodder are written in two different ways:
87 - [doctests](http://docs.python.org/3/library/doctest.html)
88 - [unittests](http://docs.python.org/3/library/unittest.html)
90 If you want to add doctests, simply write the doctest and make sure that
91 the module appears after `--doctest-modules` in `pytest.ini`. If you
92 add tests to any module in `src/gpodder` you have nothing to do.
94 If you want to add unit tests for a specific module (ex: gpodder.model),
95 you should add the tests as gpodder.test.model, or in other words:
97 The file: src/gpodder/model.py
98 is tested by: src/gpodder/test/model.py
100 After you've added the test, make sure that the module appears in
101 "test_modules" in src/gpodder/unittests.py - for the example above, the
102 unittests in src/gpodder/test/model.py are added as 'model'. For unit
103 tests, coverage reporting happens for the tested module (that's why the
104 test module name should mirror the module to be tested).
107 ## Running and Installation
109 To run gPodder from source, use..
111 bin/gpodder # for the Gtk+ UI
112 bin/gpo # for the command-line interface
114 To install gPodder system-wide, use `make install`. By default, this
115 will install *all* UIs and all translations. The following environment
116 variables are processed by setup.py:
118 LINGUAS space-separated list of languages to install
119 GPODDER_INSTALL_UIS space-separated list of UIs to install
120 GPODDER_MANPATH_NO_SHARE if set, install manpages to $PREFIX/man/man1
122 See setup.py for a list of recognized UIs.
124 Example: Install the CLI and Gtk UI with German and Dutch translations:
126 export LINGUAS="de nl"
127 export GPODDER_INSTALL_UIS="cli gtk"
130 The "make install" target also supports DESTDIR and PREFIX for installing
131 into an alternative root (default /) and prefix (default /usr):
133 make install DESTDIR=tmp/ PREFIX=/usr/local/
135 [*Debian*](https://wiki.debian.org/Python#Deviations_from_upstream) and *Ubuntu* use `dist-packages`
136 instead of `site-packages` for third party installs, so you'll want something like:
138 sudo python3 setup.py install --root / --prefix /usr/local --optimize=1 --install-lib=/usr/local/lib/python3.10/dist-packages
140 In fact, first try running `python -c "import sys; print(sys.path)"` to check what is the exact path.
141 It depends on your version of python.
143 ## Portable Mode / Roaming Profiles
145 The run-time environment variable GPODDER_HOME is used to set
146 the location for storing the database and downloaded files.
148 This can be used for multiple configurations or to store the
149 download directory directly on a MP3 player or USB disk:
151 export GPODDER_HOME=/media/usbdisk/gpodder-data/
154 ## OS X Specific Notes
156 - default GPODDER_HOME="$HOME/Library/Application Support/gPodder"
157 - default GPODDER_DOWNLOAD_DIR="$HOME/Library/Application Support/gPodder/download"
159 These settings may be modified by editing the following file of the .app :
161 /Applications/gPodder.app/Contents/MacOSX/_launcher
163 Add and edit the following lines to alter the launch environment on OS X :
165 export GPODDER_HOME="$HOME/Library/Application Support/gPodder"
166 export GPODDER_DOWNLOAD_DIR="$HOME/Library/Application Support/gPodder/download"
169 ## Changing the Download Directory
171 The run-time environment variable GPODDER_DOWNLOAD_DIR is used to
172 set the location for storing the downloads only (independent of the
173 data directory GPODDER_HOME):
175 export GPODDER_DOWNLOAD_DIR=/media/BigDisk/Podcasts/
177 In this case, the database and settings will be stored in the default
178 location, with the downloads stored in /media/BigDisk/Podcasts/.
180 Another example would be to set both environment variables:
182 export GPODDER_HOME=~/.config/gpodder/
183 export GPODDER_DOWNLOAD_DIR=~/Podcasts/
185 This will store the database and settings files in ~/.config/gpodder/
186 and the downloads in ~/Podcasts/. If GPODDER_DOWNLOAD_DIR is not set,
187 $GPODDER_HOME/Downloads/ will be used if it is set.
192 By default, gPodder writes log files to $GPODDER_HOME/Logs/ and removes
193 them after a certain amount of times. To avoid this behavior, you can set
194 the environment variable GPODDER_WRITE_LOGS to "no", e.g:
196 export GPODDER_WRITE_LOGS=no
201 Extensions are normally loaded from gPodder's "extensions/" folder (in
202 share/gpodder/extensions/) and from $GPODDER_HOME/Extensions/ - you can
203 override this by setting an environment variable:
205 export GPODDER_EXTENSIONS="/path/to/extension1.py extension2.py"
207 In addition to that, if you want to disable loading of all extensions,
208 you can do this by setting the following environment variable to a non-
211 export GPODDER_DISABLE_EXTENSIONS=yes
213 If you want to report a bug, please try to disable all extensions and
214 check if the bug still appears to see if an extension causes the bug.
219 - Homepage: http://gpodder.org/
220 - Bug tracker: https://github.com/gpodder/gpodder/issues
221 - Mailing list: http://freelists.org/list/gpodder
222 - IRC channel: #gpodder on irc.libera.chat