Merge pull request #1327 from TZocker/patch-20
[gpodder.git] / README.md
blobf29519894e0671b52b64eb83d61350c0a9a64dc3
1           ___         _    _           ____
2      __ _| _ \___  __| |__| |___ _ _  |__ /
3     / _` |  _/ _ \/ _` / _` / -_) '_|  |_ \
4     \__, |_| \___/\__,_\__,_\___|_|   |___/
5     |___/
6             Media aggregator and podcast client
7 ___
9 Copyright  2005-2022 The gPodder Team
12 ## License
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/>.
27 ## Dependencies
29 - [Python 3.5](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 - Python D-Bus bindings
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, you can use the script tools/localdepends.py to
39 install local copies of podcastparser and mygpoclient into "src/" from
40 PyPI. With this, you get a self-contained gPodder CLI codebase.
43 ### GTK3 UI - Additional Dependencies
45 - [PyGObject](https://wiki.gnome.org/PyGObject) 3.22.0 or newer
46 - [GTK+3](https://www.gtk.org/) 3.16 or newer
49 ### Optional Dependencies
51 - Bluetooth file sending: gnome-obex-send or bluetooth-sendto
52 - Size detection on Windows: PyWin32
53 - Native OS X support: ige-mac-integration
54 - MP3 Player Sync Support: python-eyed3 (0.7 or newer)
55 - iPod Sync Support: libgpod (tested with 0.8.3)
56 - Clickable links in GTK UI show notes: html5lib
57 - HTML show notes: WebKit2 gobject bindings
58     (webkit2gtk, webkitgtk4 or gir1.2-webkit2-4.0 packages).
59 - Better Youtube support (> 15 entries in feeds, download audio-only): youtube_dl or yt-dlp
62 ### Build Dependencies
64 - help2man
65 - intltool
68 ### Test Dependencies
70 - python-minimock
71 - pytest
72 - pytest-httpserver
73 - pytest-cov
74 - desktop-file-utils
76 ## Testing
78 To run tests, use...
80     make unittest
82 To set a specific python binary set PYTHON:
84     PYTHON=python3 make unittest
86 Tests in gPodder are written in two different ways:
88 - [doctests](http://docs.python.org/3/library/doctest.html)
89 - [unittests](http://docs.python.org/3/library/unittest.html)
91 If you want to add doctests, simply write the doctest and make sure that
92 the module appears after `--doctest-modules` in `pytest.ini`. If you
93 add tests to any module in `src/gpodder` you have nothing to do.
95 If you want to add unit tests for a specific module (ex: gpodder.model),
96 you should add the tests as gpodder.test.model, or in other words:
98     The file:       src/gpodder/model.py
99     is tested by:   src/gpodder/test/model.py
101 After you've added the test, make sure that the module appears in
102 "test_modules" in src/gpodder/unittests.py - for the example above, the
103 unittests in src/gpodder/test/model.py are added as 'model'. For unit
104 tests, coverage reporting happens for the tested module (that's why the
105 test module name should mirror the module to be tested).
108 ## Running and Installation
110 To run gPodder from source, use..
112     bin/gpodder              # for the Gtk+ UI
113     bin/gpo                  # for the command-line interface
115 To install gPodder system-wide, use `make install`. By default, this
116 will install *all* UIs and all translations. The following environment
117 variables are processed by setup.py:
119     LINGUAS                  space-separated list of languages to install
120     GPODDER_INSTALL_UIS      space-separated list of UIs to install
121     GPODDER_MANPATH_NO_SHARE if set, install manpages to $PREFIX/man/man1
123 See setup.py for a list of recognized UIs.
125 Example: Install the CLI and Gtk UI with German and Dutch translations:
127     export LINGUAS="de nl"
128     export GPODDER_INSTALL_UIS="cli gtk"
129     make install
131 The "make install" target also supports DESTDIR and PREFIX for installing
132 into an alternative root (default /) and prefix (default /usr):
134     make install DESTDIR=tmp/ PREFIX=/usr/local/
136 [*Debian*](https://wiki.debian.org/Python#Deviations_from_upstream) and *Ubuntu* use `dist-packages`
137 instead of `site-packages` for third party installs, so you'll want something like:
139     sudo python3 setup.py install --root / --prefix /usr/local --optimize=1 --install-lib=/usr/local/lib/python3.5/dist-packages
141 In fact, first try running `python -c "import sys; print(sys.path)"` to check what is the exact path.
142 It depends on your version of python.
144 ## Portable Mode / Roaming Profiles
146 The run-time environment variable GPODDER_HOME is used to set
147 the location for storing the database and downloaded files.
149 This can be used for multiple configurations or to store the
150 download directory directly on a MP3 player or USB disk:
152     export GPODDER_HOME=/media/usbdisk/gpodder-data/
155 ## OS X Specific Notes
157 - default GPODDER_HOME="$HOME/Library/Application Support/gPodder"
158 - default GPODDER_DOWNLOAD_DIR="$HOME/Library/Application Support/gPodder/download"
160 These settings may be modified by editing the following file of the .app :
162     /Applications/gPodder.app/Contents/MacOSX/_launcher
164 Add and edit the following lines to alter the launch environment on OS X :
166     export GPODDER_HOME="$HOME/Library/Application Support/gPodder"
167     export GPODDER_DOWNLOAD_DIR="$HOME/Library/Application Support/gPodder/download"
170 ##  Changing the Download Directory
172 The run-time environment variable GPODDER_DOWNLOAD_DIR is used to
173 set the location for storing the downloads only (independent of the
174 data directory GPODDER_HOME):
176     export GPODDER_DOWNLOAD_DIR=/media/BigDisk/Podcasts/
178 In this case, the database and settings will be stored in the default
179 location, with the downloads stored in /media/BigDisk/Podcasts/.
181 Another example would be to set both environment variables:
183     export GPODDER_HOME=~/.config/gpodder/
184     export GPODDER_DOWNLOAD_DIR=~/Podcasts/
186 This will store the database and settings files in ~/.config/gpodder/
187 and the downloads in ~/Podcasts/. If GPODDER_DOWNLOAD_DIR is not set,
188 $GPODDER_HOME/Downloads/ will be used if it is set.
191 ## Logging
193 By default, gPodder writes log files to $GPODDER_HOME/Logs/ and removes
194 them after a certain amount of times. To avoid this behavior, you can set
195 the environment variable GPODDER_WRITE_LOGS to "no", e.g:
197     export GPODDER_WRITE_LOGS=no
200 ## Extensions
202 Extensions are normally loaded from gPodder's "extensions/" folder (in
203 share/gpodder/extensions/) and from $GPODDER_HOME/Extensions/ - you can
204 override this by setting an environment variable:
206     export GPODDER_EXTENSIONS="/path/to/extension1.py extension2.py"
208 In addition to that, if you want to disable loading of all extensions,
209 you can do this by setting the following environment variable to a non-
210 empty value:
212     export GPODDER_DISABLE_EXTENSIONS=yes
214 If you want to report a bug, please try to disable all extensions and
215 check if the bug still appears to see if an extension causes the bug.
218 ## More Information
220 - Homepage:                         http://gpodder.org/
221 - Bug tracker:                      https://github.com/gpodder/gpodder/issues
222 - Mailing list:                     http://freelists.org/list/gpodder
223 - IRC channel:                      #gpodder on irc.libera.chat