3 __ _| _ \___ __| |__| |___ _ _ |__ /
4 / _` | _/ _ \/ _` / _` / -_) '_| |_ \
5 \__, |_| \___/\__,_\__,_\___|_| |___/
7 Media aggregator and podcast client
9 ............................................................................
11 Copyright 2005-2012 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.12 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
63 The QML UI depends on the QtMultimediaKit QML bindings for playing
64 back audio (libdeclarative-multimedia in Debian) and on the WebKit QML
65 bindings for Flattr integration (libqtwebkit-qmlwebkitplugin in Debian).
67 The QML UI now also depends on Qt Quick Components. On MeeGo 1.2 Harmattan,
68 these components are pre-installed. You can install them on your Desktop by
69 checking out the code from the qt-components Git repository and running the
70 "./configure" script with the "-meego" parameter (+ the usual make install).
72 You might also need to copy the theme from /usr/share/themes/blanco/ on a
73 MeeGo 1.2 Harmattan device to your development machine in order for all UI
74 elements to be displayed correctly. Alternatively, you can use the free
75 "darko" theme from: https://github.com/jpavelek/meego-handset-theme-darko
78 [ OPTIONAL DEPENDENCIES ]
80 - Bluetooth file sending: gnome-obex-send or bluetooth-sendto
81 - HTML shownotes: python-webkit
82 - Flattr integration: python-webkit
83 - Size detection on Windows: PyWin32
84 - Native OS X support: ige-mac-integration
85 - MP3 Player Sync Support: python-eyed3 (< 0.7)
88 [ BUILD DEPENDENCIES ]
104 To set a specific python binary set PYTHON:
105 PYTHON=python2 make unittest
107 Tests in gPodder are written in two different ways:
109 - doctests (see http://docs.python.org/2/library/doctest.html)
110 - unittests (see http://docs.python.org/2/library/unittest.html)
112 If you want to add doctests, simply write the doctest and make sure that
113 the module appears in "doctest_modules" in src/gpodder/unittests.py. For
114 example, the doctests in src/gpodder/util.py are added as 'util' (the
115 "gpodder" prefix must not be specified there).
117 If you want to add unit tests for a specific module (ex: gpodder.model),
118 you should add the tests as gpodder.test.model, or in other words:
120 The file src/gpodder/model.py
121 is tested by src/gpodder/test/model.py
123 After you've added the test, make sure that the module appears in
124 "test_modules" in src/gpodder/unittests.py - for the example above, the
125 unittests in src/gpodder/test/model.py are added as 'model'. For unit
126 tests, coverage reporting happens for the tested module (that's why the
127 test module name should mirror the module to be tested).
130 [ RUNNING AND INSTALLATION ]
132 To run gPodder from source, use..
134 bin/gpodder for the Gtk+ UI
135 bin/gpodder --qml for the QML UI
136 bin/gpo for the command-line interface
138 To install gPodder system-wide, use "make install". By default, this
139 will install *all* UIs and all translations. The following environment
140 variables are processed by setup.py:
142 LINGUAS space-separated list of languages to install
143 GPODDER_INSTALL_UIS space-separated list of UIs to install
144 GPODDER_MANPATH_NO_SHARE if set, install manpages to $PREFIX/man/man1
146 See setup.py for a list of recognized UIs.
148 Example: Install the CLI and Gtk UI with German and Dutch translations:
150 export LINGUAS="de nl"
151 export GPODDER_INSTALL_UIS="cli gtk"
154 The "make install" target also supports DESTDIR and PREFIX for installing
155 into an alternative root (default /) and prefix (default /usr):
157 make install DESTDIR=tmp/ PREFIX=/usr/local/
162 The CLI version of gPodder (bin/gpo) and the QML UI are compatible with
163 Python 3 after converting the codebase with the 2to3 utility:
165 2to3 -w bin/* src share/gpodder/extensions
167 You will also need a copy of "mygpoclient" converted using 2to3 and
168 a copy of "feedparser" converted using 2to3 (see the feedparser README
169 for details on how to get it set up on Python 3, including sgmllib).
171 Please note that the Gtk UI is not compatible with Python 3 (it will
172 be once we migrate the codebase to Gtk3/GObject Introspection).
174 The QML UI has been tested with PySide (Git revision a90f3bc) and
175 Python 3.2.2 - you can use the PySide buildscripts to build PySide:
177 http://github.com/PySide/BuildScripts
179 As of February 2012, Python 3 support is still experimental. Please
180 report any bugs that you find to the gPodder bug tracker (see below).
183 [ PORTABLE MODE / ROAMING PROFILES ]
185 The run-time environment variable GPODDER_HOME is used to set
186 the location for storing the database and downloaded files.
188 This can be used for multiple configurations or to store the
189 download directory directly on a MP3 player or USB disk:
191 export GPODDER_HOME=/media/usbdisk/gpodder-data/
194 [ CHANGING THE DOWNLOAD DIRECTORY ]
196 The run-time environment variable GPODDER_DOWNLOAD_DIR is used to
197 set the location for storing the downloads only (independent of the
198 data directory GPODDER_HOME):
200 export GPODDER_DOWNLOAD_DIR=/media/BigDisk/Podcasts/
202 In this case, the database and settings will be stored in the default
203 location, with the downloads stored in /media/BigDisk/Podcasts/.
205 Another example would be to set both environment variables:
207 export GPODDER_HOME=~/.config/gpodder/
208 export GPODDER_DOWNLOAD_DIR=~/Podcasts/
210 This will store the database and settings files in ~/.config/gpodder/
211 and the downloads in ~/Podcasts/. If GPODDER_DOWNLOAD_DIR is not set,
212 $GPODDER_HOME/Downloads/ will be used if it is set.
217 By default, gPodder writes log files to $GPODDER_HOME/Logs/ and removes
218 them after a certain amount of times. To avoid this behavior, you can set
219 the environment variable GPODDER_WRITE_LOGS to "no", e.g:
221 export GPODDER_WRITE_LOGS=no
226 Extensions are normally loaded from gPodder's "extensions/" folder (in
227 share/gpodder/extensions/) and from $GPODDER_HOME/Extensions/ - you can
228 override this by setting an environment variable:
230 export GPODDER_EXTENSIONS="/path/to/extension1.py extension2.py"
232 In addition to that, if you want to disable loading of all extensions,
233 you can do this by setting the following environment variable to a non-
236 export GPODDER_DISABLE_EXTENSIONS=yes
238 If you want to report a bug, please try to disable all extensions and
239 check if the bug still appears to see if an extension causes the bug.
244 These instructions are mostly useful for the maintainer, but they are
245 documented here in case you want to update translations yourself:
247 To upload a changed translation template:
249 make messages # update translations from source
250 make clean # remove temporary files after "make messages"
251 tx push --source # upload po/messages.pot to transifex.net
253 To download a translation that has been updated:
255 tx pull -l XX -f # download po/XX.po from transifex.net
257 To generate Git commit commands for the translation updates:
259 python tools/i18n/generate_commits.py
261 The "tx" command is provided by the Transifex client (transifex-client
262 in Debian/Ubuntu) which can be obtained from:
264 http://help.transifex.com/features/client/
270 - Homepage http://gpodder.org/
271 - Bug tracker http://bugs.gpodder.org/
272 - Mailing list http://freelists.org/list/gpodder
273 - IRC channel #gpodder on irc.freenode.net
275 ............................................................................
276 Last updated: 2013-02-12 by Thomas Perl <thp.io/about>