3 __ _| _ \___ __| |__| |___ _ _ |__ /
4 / _` | _/ _ \/ _` / _` / -_) '_| |_ \
5 \__, |_| \___/\__,_\__,_\___|_| |___/
7 Media aggregator and podcast client
9 ............................................................................
11 Copyright 2005-2013 Thomas Perl and the gPodder Team
16 gPodder is free software; you can redistribute it and/or modify
17 it under the terms of the GNU General Public License as published by
18 the Free Software Foundation; either version 3 of the License, or
19 (at your option) any later version.
21 gPodder is distributed in the hope that it will be useful,
22 but WITHOUT ANY WARRANTY; without even the implied warranty of
23 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 GNU General Public License for more details.
26 You should have received a copy of the GNU General Public License
27 along with this program. If not, see <http://www.gnu.org/licenses/>.
33 - Python 2.6 or newer http://python.org/
34 - "sqlite3" Python module (usually included with Python)
35 - Feedparser 5.1.2 or newer http://code.google.com/p/feedparser/
36 - mygpoclient 1.7 or newer http://thp.io/2010/mygpoclient/
37 - Python D-Bus bindings
39 gPodder might still work with Python 2.5, but you may need to
40 install the json module ("simplejson") manually. We reserve the
41 right to drop support for Python 2.5 in future point releases.
43 As an alternative to python-dbus on Mac OS X and Windows, you can use
44 the dummy (no-op) D-Bus module provided in "tools/fake-dbus-module/".
46 For quick testing, you can use the script tools/localdepends.py to
47 install local copies of feedparser and mygpoclient into "src/" from
48 PyPI. With this, you get a self-contained gPodder CLI/WebUI codebase.
51 [ GTK UI - ADDITIONAL DEPENDENCIES ]
53 - PyGTK 2.16 or newer http://pygtk.org/
56 [ QML UI - ADDITIONAL DEPENDENCIES ]
58 - Qt 4.7.1 or newer http://qt.nokia.com/
59 - PySide 1.0.8 or newer http://www.pyside.org/
60 - Qt Mobility 1.2 or newer http://qt.gitorious.org/qt-mobility
61 - Qt Quick Components http://qt.gitorious.org/qt-components
62 - Sailfish Silica Components https://sailfishos.org/sailfish-silica/
64 The QML UI depends on the QtMultimediaKit QML bindings for playing
65 back audio (libdeclarative-multimedia in Debian) and on the WebKit QML
66 bindings for Flattr integration (libqtwebkit-qmlwebkitplugin in Debian).
68 The QML UI now also depends on Qt Quick Components. On MeeGo 1.2 Harmattan,
69 these components are pre-installed. You can install them on your Desktop by
70 checking out the code from the qt-components Git repository and running the
71 "./configure" script with the "-meego" parameter (+ the usual make install).
73 You might also need to copy the theme from /usr/share/themes/blanco/ on a
74 MeeGo 1.2 Harmattan device to your development machine in order for all UI
75 elements to be displayed correctly. Alternatively, you can use the free
76 "darko" theme from: https://github.com/jpavelek/meego-handset-theme-darko
78 For running gPodder on Sailfish OS using Sailfish Silica Components, you
79 need to have Sailfish Silica installed. Right now, gPodder still depends on
80 qt-components even on Sailfish, but this is going to change soon once a
81 more mature version of Sailfish Silica is out.
84 [ OPTIONAL DEPENDENCIES ]
86 - Bluetooth file sending: gnome-obex-send or bluetooth-sendto
87 - HTML shownotes: python-webkit
88 - Flattr integration: python-webkit
89 - Size detection on Windows: PyWin32
90 - Native OS X support: ige-mac-integration
91 - MP3 Player Sync Support: python-eyed3 (< 0.7)
94 [ BUILD DEPENDENCIES ]
100 [ TEST DEPENDENCIES ]
110 To set a specific python binary set PYTHON:
111 PYTHON=python2 make unittest
113 Tests in gPodder are written in two different ways:
115 - doctests (see http://docs.python.org/2/library/doctest.html)
116 - unittests (see http://docs.python.org/2/library/unittest.html)
118 If you want to add doctests, simply write the doctest and make sure that
119 the module appears in "doctest_modules" in src/gpodder/unittests.py. For
120 example, the doctests in src/gpodder/util.py are added as 'util' (the
121 "gpodder" prefix must not be specified there).
123 If you want to add unit tests for a specific module (ex: gpodder.model),
124 you should add the tests as gpodder.test.model, or in other words:
126 The file src/gpodder/model.py
127 is tested by src/gpodder/test/model.py
129 After you've added the test, make sure that the module appears in
130 "test_modules" in src/gpodder/unittests.py - for the example above, the
131 unittests in src/gpodder/test/model.py are added as 'model'. For unit
132 tests, coverage reporting happens for the tested module (that's why the
133 test module name should mirror the module to be tested).
136 [ RUNNING AND INSTALLATION ]
138 To run gPodder from source, use..
140 bin/gpodder for the Gtk+ UI
141 bin/gpodder --qml for the QML UI
142 bin/gpo for the command-line interface
144 To install gPodder system-wide, use "make install". By default, this
145 will install *all* UIs and all translations. The following environment
146 variables are processed by setup.py:
148 LINGUAS space-separated list of languages to install
149 GPODDER_INSTALL_UIS space-separated list of UIs to install
150 GPODDER_MANPATH_NO_SHARE if set, install manpages to $PREFIX/man/man1
152 See setup.py for a list of recognized UIs.
154 Example: Install the CLI and Gtk UI with German and Dutch translations:
156 export LINGUAS="de nl"
157 export GPODDER_INSTALL_UIS="cli gtk"
160 The "make install" target also supports DESTDIR and PREFIX for installing
161 into an alternative root (default /) and prefix (default /usr):
163 make install DESTDIR=tmp/ PREFIX=/usr/local/
168 The CLI version of gPodder (bin/gpo) and the QML UI are compatible with
169 Python 3 after converting the codebase with the 2to3 utility:
171 2to3 -w bin/* src share/gpodder/extensions
173 You will also need a copy of "mygpoclient" converted using 2to3 and
174 a copy of "feedparser" converted using 2to3 (see the feedparser README
175 for details on how to get it set up on Python 3, including sgmllib).
177 Please note that the Gtk UI is not compatible with Python 3 (it will
178 be once we migrate the codebase to Gtk3/GObject Introspection).
180 The QML UI has been tested with PySide (Git revision a90f3bc) and
181 Python 3.2.2 - you can use the PySide buildscripts to build PySide:
183 http://github.com/PySide/BuildScripts
185 As of February 2012, Python 3 support is still experimental. Please
186 report any bugs that you find to the gPodder bug tracker (see below).
189 [ PORTABLE MODE / ROAMING PROFILES ]
191 The run-time environment variable GPODDER_HOME is used to set
192 the location for storing the database and downloaded files.
194 This can be used for multiple configurations or to store the
195 download directory directly on a MP3 player or USB disk:
197 export GPODDER_HOME=/media/usbdisk/gpodder-data/
200 [ CHANGING THE DOWNLOAD DIRECTORY ]
202 The run-time environment variable GPODDER_DOWNLOAD_DIR is used to
203 set the location for storing the downloads only (independent of the
204 data directory GPODDER_HOME):
206 export GPODDER_DOWNLOAD_DIR=/media/BigDisk/Podcasts/
208 In this case, the database and settings will be stored in the default
209 location, with the downloads stored in /media/BigDisk/Podcasts/.
211 Another example would be to set both environment variables:
213 export GPODDER_HOME=~/.config/gpodder/
214 export GPODDER_DOWNLOAD_DIR=~/Podcasts/
216 This will store the database and settings files in ~/.config/gpodder/
217 and the downloads in ~/Podcasts/. If GPODDER_DOWNLOAD_DIR is not set,
218 $GPODDER_HOME/Downloads/ will be used if it is set.
223 By default, gPodder writes log files to $GPODDER_HOME/Logs/ and removes
224 them after a certain amount of times. To avoid this behavior, you can set
225 the environment variable GPODDER_WRITE_LOGS to "no", e.g:
227 export GPODDER_WRITE_LOGS=no
232 Extensions are normally loaded from gPodder's "extensions/" folder (in
233 share/gpodder/extensions/) and from $GPODDER_HOME/Extensions/ - you can
234 override this by setting an environment variable:
236 export GPODDER_EXTENSIONS="/path/to/extension1.py extension2.py"
238 In addition to that, if you want to disable loading of all extensions,
239 you can do this by setting the following environment variable to a non-
242 export GPODDER_DISABLE_EXTENSIONS=yes
244 If you want to report a bug, please try to disable all extensions and
245 check if the bug still appears to see if an extension causes the bug.
250 These instructions are mostly useful for the maintainer, but they are
251 documented here in case you want to update translations yourself:
253 To upload a changed translation template:
255 make messages # update translations from source
256 make clean # remove temporary files after "make messages"
257 tx push --source # upload po/messages.pot to transifex.net
259 To download a translation that has been updated:
261 tx pull -l XX -f # download po/XX.po from transifex.net
263 To generate Git commit commands for the translation updates:
265 python tools/i18n/generate_commits.py
267 The "tx" command is provided by the Transifex client (transifex-client
268 in Debian/Ubuntu) which can be obtained from:
270 http://help.transifex.com/features/client/
276 - Homepage http://gpodder.org/
277 - Bug tracker http://bugs.gpodder.org/
278 - Mailing list http://freelists.org/list/gpodder
279 - IRC channel #gpodder on irc.freenode.net
281 ............................................................................
282 Last updated: 2013-02-12 by Thomas Perl <thp.io/about>