Translator time is better spent elsewhere. End
users are either capable of speaking English
(and know what the config options do) or they
can read about the configuration options in a
blog post in their language.
Add a D-Bus method for marking episodes as
played via the local filename and add advanced
configuration options to stop gPodder from
marking episodes as played as soon as playback
starts (audio_played_dbus, video_played_dbus).
An example script shows how it is done :)
Idea from http://linuxoutlaws.com/forums/viewtopic.php?t=1728
This adds a new checkbox in the "View" menu that allows
the user to hide all podcasts in the podcast list for
which the episode list is empty (probably because some
filter is active).
There is now a new configuration option called
feed_update_skipping (default: Enabled) that can
be used to disable skipping of feeds during update.
Also, skipping of feeds is only done when there
are more than one podcasts to be updated (this
allows the context-menu "update single feed" to
work as a kind of "force update" menu item).
Thanks to Sebastian Krause for the bug report.
Create a new UIConfig class that subclasses the normal
Config class that takes care of the basic configuration
work.
The UIConfig class adds support for registering GTK+ UI
elements with the configuration object.
Additionally, the ListStore (TreeModel) code is split
into a new class ConfigModel that takes care of formatting
the configuration data for display in GTK+ applications.
This was used earlier to provide a space saving on
Maemo, but isn't really used these days and confuses
users when the option is enabled.
Discussed at https://bugs.gpodder.org/show_bug.cgi?id=508
This does not really work for some people, so we simply
remove that functionality again. I personally don't need
that as I don't have an iPod anymore, so I can't support
it either. If anyone wants to support that feature, feel free.
This gets rid of the 'enable_streaming' configuration option
and also makes sure that streaming is only enabled when an
audio player application has been set (i.e. non-default),
because if we "open" a URL, it will open in the browser.
Updating tags of files should be done in the post-download
hook, this makes gPodder a bit slimmer. If we wanted the
tag update functionality, we should utilize a proper library
that is able to update tags for all media files (mutagen?).
This might break a lot, but it makes feed parsing and
updating so much cleaner, and also helps with error
reporting, because exceptions are bubbled up to the UI.
Removed:
* Changing feed URL (this introduces too many problems)
* Support for FTP proxy servers (who uses FTP for podcasts?)
This currently makes feed updates occur in only one
thread, but it makes maintenance of the code easier
and allows for improvements later on.
Also, some fancy things like the color changing have
been removed by this change. These features might
come back later in some other form.
Updated README, refreshed translations, updated
manpage and set version number in __init__.py.
Also set the default download limit to 1 and enabled
limiting of simultaneous downloads for first-time users.
Some media players have special handling for the Podcast tag and some
users may want to avoid using that tag. The rewrite_genre_tag option
rewrites the genre tag with what is specified in the
rewrite_genre_tag_with option.
Refactor the finger scroll code so that it can be
applied to all instances of gtk.ScrolledWindow by
placing the relevant code in gpodder.uibase.
Additional code changes to make the UI nicer on Maemo.
Redo the Maemo preferences UI and add a player selector for
audio and video. Remove the maemo_allow_custom_layer option
and move the Maemo-specific "osso" file opening (with Media
Player) to gpodder.util from libgpodder.
This patch merges all the win32-specific changes that
have been done to gPodder so far and also adds some
generic bugfixes that will benefit other versions of
gPodder, too.
Thanks to Stefan Koegl and David Greenbaum for testing.
Do not install gettext globally, but have a gettext
function in the gpodder module and import it from all
dependent modules.
Remove the --local command line option and instead
automatically detect if the gpodder script is called
from a source folder (determined by the existence of
"src" and "data" in the parent folder and by the fact
that prefix does not start with '/usr').
Clean up setup.py and use metadata from the module.
When syncing to ipod, played episodes are marked as
played in gPodder and optionally deleted from new option
ipod_delete_played_from_db.
Checkbox added for this new option.
Move the conversion code from the iPodDevice class to the Device class then
add self.convert_track() to MTP and FS add_track functions. Also, add
option to disable pre-sync conversion for FS-based players.
Note: This has not been tested with MTP devices, ymmv.
Thanks to Perter64 for pointing out this bug.
This patch finishes off the proper filename support, so
remove the "experimental_file_naming" configuration option.
Also add download resuming based on this new code. The
resuming function currently works like this: All active
and queued downloads will not be deleted when gPodder is
closed, and gPodder will ask the user if she wants to
continue downloading at next startup (if not, the partial
files are deleted).
These two changes are very suspicious of breaking some weird
feeds (for proper filenames) and servers (for resuming).
Report any bugs that you encounter. Enjoy! :)
Advanced configuration option to not call the "sync"
system utility to flush caches to disk.
We usually do this, so that basic users may unplug
their devices right after gPodder shows "sync done".
For advanced users who know to correctly unmount their
devices, this is annoying, so let them disable it.
Thanks to Christian Mertes for requesting this feature.
Create a new, Maemo-specific toolbar with better finger UI.
Support (and require) mokoui for finger-scroll on Maemo.
On Maemo, only allow single selection for the episode list.
Place cursor at beginning of textfield for episode details.
Thanks to the users on ITT for testing and providing feedback.
If you happen to try to use a non-existing config
variable inside a try-catch where you catch
Exception and then log its message, the resulting
error message isn't going to be very helpful when
the caught Exception itself has no message.
This adds a simple message to the AttributeError
which is raised by config.py if a non-existing
config variable is attempted to be used.
Improve M3U writing (metadata, Windows-style line
breaks when using the Windows-style pathnames) and
really generate "relative to m3u" filenames instead
of "relative to root" filenames.
Thanks to Ville-Pekka Vainio for reporting and testing.
Make the episode details dialog faster, simpler and of
course prettier with the use of either gtkhtml2 + HTML
markup or via the TextView and style tags.
Add a welcome window that allows users to show a list of
example podcasts (like before) or to just re-import the
last uploaded subscription list from my.gpodder.org.
Also add the possibility to register on my.gpodder.org and
fix up the authentication dialog with the correct icon.
Make sure our default toplist URL points to gpodder.org,
so we have control over it in case the toplist service
that we want to use changes in the future.
Remove the preferences UI for bluetooth sending, make
sure Bluetooth support is automatically activated when
the necessary tools are available.
Keep advanced configuration options for Bluetooth.
For the main window and the episode selector dialog, save the
window position, window size and the (boolean) maximized state
and restore this information when the window is re-created.
Thanks to Sebastian Krause for reporting this bug.
With the configuration option "enable_streaming" enabled,
gPodder will now allow you to stream podcasts from the
server instead of downloading it locally first.
Streamed episodes will look as if they have been
downloaded and afterwards deleted. "Played" status is now
display on deleted episodes, too for this reason.
Config files are moved from /media/mmc2/gpodder/ to
~/.config/gpodder/ when migrating from old versions,
so the N8x0 backup tool backups our config, too.
As a result, we move the download directory from
/media/mmc2/gpodder/downloads/ to /media/mmc2/gpodder/
and add detection for moving this to mmc1, the user's
homedir or an externally attached USB mass storage device.
Thanks to Dan Ramos for the bug report.
Let the Desktop Environment / the default BitTorrent
client handle torrent downloads. We just use the default
handler for .torrent files to "open" a torrent file after
download has completed.
Discussed on the mailing list in the following thread:
https://lists.berlios.de/pipermail/gpodder-devel/2008-November/002256.html
In addition to selecting audio and video players, we
now support "default" as a way of having a good default
that we can pass to a utility function that can later
be made cross-platform more easily.
Also cleaned up some UI issues with the video player,
so the label of the custom command is shown and the
combo box has the correct size.
Remove the URL entry box and make the "Subscribe" menu
item and the "Ctrl+L" keystroke always pop up a dialog.
Add an advanced option for users that want to have
the URL entry box back (for now). We might decide
that we will completely remove this feature in the future.
Add a graphical way to manage M3U playlists on MP3
player devices. This can be enabled in the advanced
configuration editor. Depending on your MP3 player,
you might want to enable Windows-style path separators
and switch between absolute or relative file paths.
This is an improvement upon the original rockbox cover
art sync, as it allows to set the file type and file name
of the cover file that will be put on the MP3 player.
With this feature, cover art is displayed on the Sansa Fuze
and other MP3 players that support showing the cover art
if there is an image file in the same folder.
This changeset is based on gPodder-r777-threaded-feed-updater.patch, plus:
config.py: Add new config option 'max_simulaneous_feeds_updating'. By default
it's set to 3, otherwise on slower devices the gui might become un-responsive
during an update because of the CPU resources required by python-feedparser.
Add 'color_updating_feeds' option for users that want to manually set it.
gui.py: Make channels that are updating a different color, this gives the user
a better idea of what's going on. Populate the update progress bar with a
message and clear the previous fraction setting before starting a feed update.
Colors dict for feed updates, default color is "None", so we don't need to do
any fancy color detection (for all different GTK themes).
libpodcasts.py: Make the channel's iter available as podcastChannel.iter.
Don't use the <span foreground=...> markup tag to set the channel's text
color, use the gtk.CellRendererText 'foreground' attribute. This allows
the text color to be easily changed by modifying the channel model.
Require the colors dict to be passed to channels_to_model.
For Maemo, add "Update selected podcast" menu item to the Subscriptions menu,
because the context menu isn't easily reached at the moment (no right-click).
Do not hide podcast cover and pill pixbuf in podcast list by default
* src/gpodder/config.py: Change default settings
git-svn-id: svn://svn.berlios.de/gpodder/trunk@774 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Simply advanced configuration editor, implement usability suggestions
* data/gpodder.glade: Implement usability suggestions from
http://gpodder.org/files/user_test_2008-05.pdf: Rename "Player" tab in
preferences to "Device"; change "Filter:" to "Search for:" in advanced
configuration editor
* src/gpodder/config.py: Support code for changes in the advanced
configuration editor dialog (model)
* src/gpodder/gui.py: Modify the advanced configuration editor to have
check boxes for boolean values, remove the "Type" column and rename
the columns as suggested by the May 2008 user test; use italic font
instead of bold for values set to something other than the default
git-svn-id: svn://svn.berlios.de/gpodder/trunk@761 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Merge "Allows user command execution after certain events" from Paul Rudkin
* src/gpodder/config.py: Add two new configuration options:
cmd_all_downloads_complete and cmd_download_complete
* src/gpodder/download.py: Call the user-specific command when a
download finishes (if configured)
* src/gpodder/gui.py: If all downloads have been completed, execute
the user-specific command (if configured)
* src/gpodder/libgpodder.py: Add ext_command_thread function that
handles calling an external command
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=4)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@743 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Automatically download channel cover file; improve channel cover handling
* data/gpodder.glade: Simplify and clean-up the podcast editor dialog,
especially with respect to the cover art stuff
* src/gpodder/config.py: Add configuration option
"podcast_list_icon_size" that determines the pixel size of the cover
art displayed in the podcast list
* src/gpodder/gui.py: Add cover cache, register with the cover
downloader service in the main window, handle messages from the cover
downloader (removed and download finished); request covers for
channels when refreshing the channel list; make sure drag'n'drop of
image files to the channel list works directly and sets the
corresponding channel cover; Rework cover download handling and add an
open dialog as suggested by the May 2008 Usability Evaluation
* src/gpodder/libgpodder.py: Remove old, attic image downloading code
from gPodderLib, because it now has its own service class
* src/gpodder/libpodcasts.py: Remove unneeded get_cover_pixbuf helper
function for podcastChannel; improve channels_to_model to take
advantage of the new cover downloader service
* src/gpodder/services.py: Add CoverDownloader service that acts as a
central hub for all downloading and modifying of channel cover art,
including notification of observers (through ObservableService)
* src/gpodder/util.py: Add resize_pixbuf_keep_ratio helper function to
resize a gtk pixbuf while keeping the aspect radio (with optional
caching support through a dictionary parameter)
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=88)
Fri, 13 Jun 2008 20:10:13 +0200 <thp@perli.net>
Fix a bug in the experimental file naming support
* src/gpodder/util.py: Fix bug that stopped the experimental file
naming patch from working; thanks to Shane Donohoe for reporting
git-svn-id: svn://svn.berlios.de/gpodder/trunk@737 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Merge patch to add experimental support for "normal" file naming
* src/gpodder/config.py: New option "experimental_file_naming" that
defaults to False and enables the new (but experimental!) normal file
naming mode in which the downloaded podcast episodes get their name
not from the md5sum of the download URL, but from the basename of the
download URL, which makes filenames more human-readable
* src/gpodder/libpodcasts.py: Change local_filename() in podcastItem
to decide if we use md5sums or the "new" file naming mode for creating
the local file name of an episode
* src/gpodder/sync.py: Change usage of the "encoding" detection in
gpodder.util (from detect_os_encoding() to simply encoding)
* src/gpodder/util.py: Only detect the filename encoding once (at
program start) and then make it accessible via a global "encoding"
variable in the gpodder.util module; add improvements to
file_extension_from_url() to be able to return the complete filename
and to support more creative URL schemes as implemented by podcast
feed authors (this hopefully makes more feeds work in a proper way)
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=57)
Add line to the previous ChangeLog entry (which I forgot initially):
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=124)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@736 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Merge patch from Nick to add support for deleting played files on sync
* data/gpodder.glade: Add check button for "Delete episodes on device
that have been marked played in gPodder"
* src/gpodder/config.py: Add two new config options:
"mp3_player_delete_played" and "mp3_player_max_filename_length"
* src/gpodder/gui.py:
* src/gpodder/libpodcasts.py: Add "is_deleted()" convenience function
for a podcast episode
* src/gpodder/sync.py: Clean-up and simplify parts of the code to make
it better-structured and avoid code duplication; use the configuration
variable for the MAX_FILENAME_LENGTH instead of hard-coding it to 100
* src/gpodder/util.py: Split sanitize_filename() into two functions,
detect_os_encoding() and sanitize_filename() for better code re-use
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=56; code written by
Nick (nikosapi) and initial idea by Shane Donohoe, see the bug page)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@734 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Merge Support for Rockbox Cover Art patch (by David Spreen and Nick)
* src/gpodder/config.py: Add configuration options for rockbox cover
art, thanks to Nick for providing the patch and integration
* src/gpodder/gui.py: Add David Spreen to the list of contributors
* src/gpodder/sync.py: Merge patch from David Spreen and Nick to
support Rockbox cover art synchronization
git-svn-id: svn://svn.berlios.de/gpodder/trunk@729 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Add option to not hide channel cover and pill when the sidebar gets smaller
* src/gpodder/config.py: Add "podcast_sidebar_save_space" option
* src/gpodder/gui.py: Don't hide the channel cover and pill in the
podcast list when the sidebar gets smaller; idea by Shane Donohoe
git-svn-id: svn://svn.berlios.de/gpodder/trunk@716 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Maemo-related changes; allow custom player on Maemo (optional)
* data/gpodder.glade: gPodder maemo preferences window should be
modal; Add "Ask before closing gPodder" checkbox to Maemo preferences
* src/gpodder/config.py: Add option "maemo_allow_custom_player" that
allows setting the "player" and "videoplayer" variables to a command
that will be called, like on the Desktop version (instead of always
opening Nokia's Media Player with all files)
* src/gpodder/gui.py: Maemo-specific UI tweaks
* src/gpodder/libgpodder.py: Only call Nokia's Mediaplayer when we are
on Maemo and when "maemo_allow_custom_player" is set to False
git-svn-id: svn://svn.berlios.de/gpodder/trunk@701 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Change "Channel" to "Podcast"; new main menu; URL entry updated; +niceties
* data/gpodder.glade: Change "Channel" to "Podcast"; re-structure main
menu in gPodder window
* src/gpodder/config.py: Add "show_podcast_url_entry" configuration
option that controls whether the podcast url entry box is shown in the
main window or not; add observer functionality to the configuration
manager, so UI elements can "watch" the configuration manager for
changes of UI-related configuration options
* src/gpodder/console.py: Change "Channel" to "Podcast"
* src/gpodder/gui.py: Hildon-specific file open/save dialogs; default
"Enter podcast URL..." test for the URL entry box; size-dependent
showing and hiding of podcast icon and downloaded count pixmap also
for the Desktop version; change "Channel" to "Podcast"; offer
first-time users to see a list of example podcasts to subscribe to;
dynamic main menu; code supporting the main menu changes; add code for
sending the subscription list via e-mail; import from OPML file in
addition to import from OPML URL; remove unneeded callbacks (wishlist,
select all, ...); optionally set title and hide url entry in the
gPodderOpmlLister (OPML import GUI); Add Frank Harper to list of
contributors (initial reporter of bug #82)
* src/gpodder/libgpodder.py: Add "send_subscriptions" function that
sends the user's channels.opml file via E-Mail (using xdg-email);
rename "Channel" to "Podcast"
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=82)
(Closes: http://bugs.gpodder.org/show_bug.cgi?id=103)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@700 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Diverse changes, code clean-ups and other small annoyances
* src/gpodder/config.py: Make sure we can load a default set of
configuration options, even if we are in CLI mode
* src/gpodder/download.py: Don't display a traceback when logging a
cancelled download
* src/gpodder/gui.py: Add Doug Hellmann to contributors/coders list in
the about dialog (Doug Hellmann has done the feed cache code); do not
center the gPodderEpisode dialog on the treeAvailable widget (this
looks ugly ;)
* src/gpodder/libpodcasts.py: Clean up import statements; Make sure we
always have icon names, even in CLI mode; Remove "is_music_channel"
property of podcastChannel (not needed anymore);
git-svn-id: svn://svn.berlios.de/gpodder/trunk@684 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Initial upstream support for the Maemo platform (Nokia Internet Tablets)
* bin/gpodder: Add "--maemo/-m" option to enable running as a Maemo
application (this is only useful on Nokia Internet Tablets or in the
Maemo SDK environment); determine interface type and set the correct
variables on startup (gpodder.interface)
* data/gpodder.glade: Increase the default size of some widgets to
better fit the screens on Maemo (it won't do any harm on the "big"
Desktop screen
* data/icons/26/gpodder.png: Added
* data/icons/40/gpodder.png: Added
* data/maemo/gpodder.desktop: Added
* Makefile: Help2man variable; new "make mtest" target that runs
gPodder in Maemo scratchbox (probably useless for all other things);
update the command descriptions; don't run the "generators" target
from the "install" target; don't run "gen_graphics" from the
"generators" target, but make it depend on the 24-pixel logo, which
itself depends on the 22-pixel logo; this way, all should work out
well when trying to install on systems without ImageMagick installed;
remove *.pyo files on "make clean"
* setup.py: Support for build targets; use "TARGET=maemo" to enable
Maemo-specific installation options and files
* src/gpodder/config.py: Increase the WRITE_TO_DISK_TIMEOUT to 60
seconds, so we don't unnecessarily stress memory cards (on ITs);
modify default path variables on Maemo (/media/mmc2)
* src/gpodder/gui.py: Maemo-specific changes; clean-up the main window
a bit and make message and confirmation dialogs Hildon-compatible
* src/gpodder/__init__.py: Add enums for interface types: CLI, GUI and
MAEMO; remove the "interface_is_gui" variable and replace with
"interface", which is now used to determine where we are running
* src/gpodder/libgpodder.py: Use /media/mmc2/gpodder/ as configuration
folder on Maemo; use Nokia's Media player to playback files on Maemo
* src/gpodder/libpodcasts.py: Icon name changes (Maemo-specific)
* src/gpodder/trayicon.py: Maemo support; swap popup menu on Maemo;
Add support for hildon banners instead of pynotify on Maemo
* src/gpodder/util.py: Icon name changes (Maemo-specific); use new
gpodder.interface variable in idle_add
git-svn-id: svn://svn.berlios.de/gpodder/trunk@654 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Project management updates (authors, contributors and copyright)
* AUTHORS: Removed (was outdated); content now in gui.py (AboutDialog)
* bin/gpodder, data/po/Makefile, doc/dev/copyright_notice,
doc/dev/win32/setup-win32.py, INSTALL, Makefile, README,
setup.py: Updated Copyright and old website URL to include 2008, the
gPodder team and www.gpodder.org
* src/gpodder/*.py: Updated Copyright years
* src/gpodder/gui.py: Add list of contributors from AUTHORS file and
from the content on the website's news page (please mail me if I
forgot to mention you as a contributor, I surely have missed a few);
make the AboutDialog's application name "gPodder" (from gpodder) and
add an URL hook function to the AboutDialog, so the website is opened
in the user's default web browser
git-svn-id: svn://svn.berlios.de/gpodder/trunk@648 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Add support for Rockbox' AudioScrobbler logfile to update played status
* src/gpodder/config.py: Add "mp3_player_use_scrobbler_log"
configuration option (defaulting to False) which controls if we are
going to try and find a ".scrobbler.log" file that contains
information on which tracks have been played; for this to work, you
also have to enable the "Updated tags after download" option
* src/gpodder/sync.py: Support for finding the .scrobbler.log file and
updating the played status of episodes in the MP3 player sync code
* src/gpodder/util.py: Add "find_mount_point()" function that tries to
determine the mount point on which the given directory (or file) lies
and returns the mount point or "/" if the directory/file resides on
the root filesystem.
This whole patch has been contributed by Nick <nikosapi.org> - thanks!
git-svn-id: svn://svn.berlios.de/gpodder/trunk@646 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Add option to limit the maximum number of episodes per feed
* src/gpodder/config.py: Add "max_episodes_per_feed" configuration
option (int, defaults to 200) that determines the maximum number of
episodes that are parsed per channel/feed; if there are more episodes,
they are ignored. This value can be adjusted via the extended
configuration editor if you need more episodes
* src/gpodder/libpodcasts.py: Add support for the
max_episodes_per_feed configuration option above
git-svn-id: svn://svn.berlios.de/gpodder/trunk@623 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Filter "None" filenames from GtkFileChooser widgets
* src/gpodder/config.py: Make sure we don't receive a "None" filename
from GtkFileChooser widgets when connecting to the config manager
git-svn-id: svn://svn.berlios.de/gpodder/trunk@616 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Add option to write gtkpod extended database on sync
* data/gpodder.glade: Add a check box for the new config option
* src/gpodder/config.py: Add ipod_write_gtkpod_extended boolean
configuration variable that controls if we want to write iTunesDB.ext
after synchronization (defaults to False)
* src/gpodder/gui.py: Glue code for UI<->Config manager
* src/gpodder/sync.py: Use libgpod's "gtkpod" module to write the
extended gtkpod database (iTunesDB.ext) to the iPod after sync - this
has to be enabled via an option
git-svn-id: svn://svn.berlios.de/gpodder/trunk@608 b0d088ad-0a06-0410-aad2-9ed5178a7e87
Add support for creating M3U playlist files in download folders
* src/gpodder/config.py: Add "create_m3u_playlists" boolean
configuration option (default False) that controls if we want to
generate per-channel M3U playlists in our download folders
* src/gpodder/gui.py: Add context menu entry for manually updating an
M3U playlist for the channel navigator (only visible when updating m3u
playlists is enabled
* src/gpodder/libpodcasts.py: Add update_m3u_playlist() function to
podcastChannel and call it when removing and adding downloaded
episodes
* src/gpodder/util.py: Add sanitize_filename() function that tries to
encode a file name in the system's encoding, stripping all chars that
are invalid on FAT32 and other systems (e.g. slash, etc..)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@606 b0d088ad-0a06-0410-aad2-9ed5178a7e87