Commit Graph

346 Commits

Author SHA1 Message Date
Thomas Perl 9386d904f2 Offline mode: Logic fixes (bug 1730) 2013-01-29 18:38:47 +01:00
Thomas Perl 72c028dc25 Make online detection a bit smarter (bug 1730)
If we don't have "ifconfig" and "ip" assume we're online
(because we can't determine that we're offline), and if
detecting the network connection fails for some reason,
also assume that we're online. This avoid bogus "you're
offline" messages while still giving good feedback to
users who try to check for new episodes while offline.
2013-01-29 18:26:07 +01:00
Olivier Brisson 710ec086fc Util: Add interface detection for FreeBSD (bug 1730)
I've also been hit with this bug on FreeBSD where
iproute2 is not available.

FreeBSD 8.2-STABLE i386

I wrote a little patch to make gpodder work on FreeBSD.
2013-01-05 01:51:55 +01:00
Thomas Perl cd851c5429 Util: Improve parse_time() function 2012-12-29 19:01:30 +01:00
Bernd Schlapsi 6ebad7d672 Add support for the opus audio codec (bug 1734) 2012-12-29 14:20:30 +01:00
Thomas Perl b848f79369 Util: Parse HH:MM-style strings with HH > 59 2012-12-29 01:26:57 +01:00
Thomas Perl ce461ff90d gpodder.util: Use gpodder.ui.win32 for new code 2012-12-17 15:34:08 +01:00
Thomas Perl faa9bb7916 Merge pull request #31 from smunkel/master
Dont warn about unknown file if it is a system file (Bug 1712)
2012-12-17 06:33:06 -08:00
Thomas Perl f6c66134b9 Merge pull request #29 from brot/master
Improvements to the extension system
2012-12-17 06:31:51 -08:00
Sean Munkel 2b9ef81bca Dont warn about system files in windows (bug 1712) 2012-12-07 14:02:21 -05:00
Bernd Schlapsi d5eae16b9f Improvements to the extension system
- Add category metadata in every extension
- Show this category in the extension list gui
- Add "mandatory_in" and "disable-in" configuration for an extension
- Add Ubuntu unity check to enable/disable unity specific extensions
- Move "gpodder.win32" and "gpodder.osx" setting to the "gpodder.ui" namespace to be able to use it in the extensions category settings
- Only show metadata information in the right-click dialog of an extension
2012-12-07 10:30:28 +01:00
Thomas Perl 831cbde7fc Util: Python 2.6 compatibility fix 2012-11-23 12:03:55 +01:00
Thomas Perl cdf27fe5f1 Linux: Detect PPP as Internet connection (bug 1702)
PPP connections on Linux have state "UNKNOWN", and are
therefore not detected as such. We fix this now by assuming
that all "UNKNOWN" connections are actually working Internet
connections, and filter the loopback interface (which is also
an "UNKNOWN" connection).

Thanks to Sudaraka Wijesinghe for the bug report, initial
patch and testing/feedback.
2012-11-03 13:43:15 +01:00
Eric Le Lay 41b273db45 Offline mode detection for OS X (bug 107) 2012-10-23 12:41:47 +02:00
Thomas Perl e3f5360073 Basic Offline mode support (bug 107)
Detect network connections on Linux (still need to find a way to
implement it for Windows and OS X - on these platforms, this
implementation acts as if the connection is always available).

We might need to use this in more places in the code, but for starters
this should work nicely.

The Linux implementation assumes the "ip" command is available.
2012-10-13 13:52:14 +02:00
Thomas Perl 61f2cfa379 QML UI: Remove remaining Maemo 5 (Fremantle) support
After a year of basically no work towards Maemo 5 support,
I consider gPodder 3-on-Maemo 5 something that we won't ever
do, so the remaining codes goes. This also cleans up some
dead code in the Gtk UI that's been sitting there.

If anybody wants to step up and do something about that, be
my guest. If anything, I'd assume that if anything on the N900,
gPodder 3-on-Nemo Mobilemight be feasible, and in that case, it
should be "just like Harmattan" in most ways.
2012-09-15 20:22:06 +02:00
Bernd Schlapsi 82d36f368c First changes for the flattr integration to better work when offline
Better flattr integration when offline (bug 1576)

Reset the worker_thread variable when the worker thread is finished (bug 1576)

change the name of the flattr cache database
2012-09-02 17:18:05 +02:00
Thomas Perl f1b4df19a7 Util: make object_string_formatter more robust
Based on an initial patch by Alessandro Guido, but
updated to conform to PEP-8. Also added 2 doctests.
2012-07-30 21:58:04 +02:00
Bernd Schlapsi beaf1a6d69 Flattr integration (bug 1576) 2012-07-13 13:00:39 +02:00
Thomas Perl dc06483bbd Threading: Use util.run_in_background to spawn threads
This makes it easier to check where threading is used
and will allow us to better handle creation of threads.
2012-07-10 13:52:34 +02:00
Joseph Wickremasinghe 2774142f8f Added device sync using 'Downloads' tab to show progress 2012-07-09 20:25:37 +02:00
Thomas Perl 181d38dd76 Various extension-related fixes 2012-03-27 01:32:20 +02:00
Bernd Schlapsi 5a2c5e358b corrected two small errors and removed two extensions 2012-03-22 14:53:24 +01:00
Thomas Perl c9d5e7208d Cover art: Unified download manager (bug 1288) 2012-03-05 10:44:19 +01:00
Thomas Perl bded8424eb Windows: Check for software updates (bug 1569)
The check can be carried out on Linux and OS X
as well, but it's mainly targetted at Windows
users, as Linux users will usually get updates
via package repositories. Only for the Gtk UI.

By default, the check is only enabled on Windows
and can be disabled manually via the config editor.
2012-03-03 21:14:42 +01:00
Thomas Perl 9f58b8eda8 Write debug output to logfile (bug 1460)
Also, various clean-ups around the logging mechanism (remove
gpodder.ui.desktop, etc..) needed to make the logging work without
problems.
2012-03-02 09:03:01 +01:00
Thomas Perl a0e9499b67 Cover art: Add fallback artwork for QML UI 2012-02-28 12:06:35 +01:00
Thomas Perl 4f27e3571d Python 3 compatibility fixes (+ QML UI support)
Fix some issues when using gPodder with Python 3.
This also fixes problems with gPodder's QML UI, so
PySide and the QML UI are now working with Python 3.
2012-02-24 16:58:05 +01:00
Thomas Perl 03772ddcd7 Extensions: Implement UI restriction metadata
Extension scripts can now define for which UIs of
gPodder they work. This can be used to e.g. disable
certain extensions when the CLI is running.
2012-02-21 10:14:23 +01:00
Thomas Perl ca45890b6a Cleanup/simplify extensions system and GUI 2012-02-20 23:55:36 +01:00
Bernd Schlapsi c83994b4b0 worked on the review feedback from thp 2012-02-20 21:37:20 +01:00
Bernd Schlapsi f73a1750c5 add work for the new extension system (bugs #1491, #1500, #1555) 2012-02-20 21:37:20 +01:00
Jonas Kölker 7da85d30a0 CLI: Implement OPML export/import (bug 1303) 2012-02-06 16:54:37 +01:00
Thomas Perl 990cebe9b9 First try on the new JSON-based config module 2012-02-04 19:21:51 +01:00
Thomas Perl 9728fb6236 Util: convert_bytes shouldn't convert long values
Add long to the list of types that should not be
converted to unicode.
2012-01-21 15:37:43 +01:00
Thomas Perl 5411f3fc2f Python 3: Initial support for Python 3 (CLI)
This changeset makes gPodder's codebase convertable
to Python 3 using the "2to3" utility. Right now, only
the CLI module (bin/gpo) has been tested.

See the README file for instructions and remarks.
2012-01-10 13:47:20 +01:00
Thomas Perl 5205a4b71d Update copyright years (add 2012) 2012-01-09 21:19:24 +01:00
Thomas Perl 0df167ff3e Auth: Allow "@" in login username for feeds (bug 1521)
Thanks to Eric Smith for reporting this issue and
providing a login to help test and debug this bug.
2012-01-09 14:45:33 +01:00
Eric Le Lay 85ea863c94 OS X: Use "open" to open files on Mac OS X (bug 1482) 2011-11-12 10:48:12 +01:00
Thomas Perl a2c2bafa7b Util: Improve Windows support in find_command() 2011-11-05 21:22:21 +01:00
Thomas Perl 4582c98cfb Fix copyright year in util.py 2011-10-19 14:00:38 +02:00
Neal H. Walfield afc1b072c0 Implement util.idle_add for multi-threaded Qt 2011-10-17 12:59:49 +02:00
Thomas Perl 3b64aff2c4 Add Qt support to gpodder.util.idle_add 2011-10-12 12:25:08 +02:00
Thomas Perl a1253753c3 Remove conditionals on gpodder.ui.desktop
The only place where the Gtk UI is used right now
is on the Desktop, so avoid unnecessary checks.
2011-09-19 10:20:04 +02:00
Thomas Perl 69b38badb4 More cautious use of redirect URLs for YT and SC
For YouTube and Soundcloud feeds (among others), we try
to avoid renaming downloads even for HTTP redirects,
because the initial filename that we have is usually okay.
2011-09-18 22:04:33 +02:00
Thomas Perl c077f38b8c Title-related changes, better sanitization (bug 1351) 2011-08-08 13:06:20 +02:00
Thomas Perl 714251a7a9 Various fixes to download file/folder handling 2011-08-07 23:39:46 +02:00
Thomas Perl 2ceba6d99f Support for YouTube playlists 2011-08-05 23:58:55 +02:00
Thomas Perl 7fef70e658 Remove support for Fremantle Gtk+ UI
We will only support the QML UI on Fremantle in "tres".
2011-07-16 18:35:14 +02:00
Thomas Perl 2402955bc5 Remove unused functions from gpodder.util 2011-07-15 17:35:43 +02:00
Thomas Perl 8e87300c04 Logging: Deprecate liblogger, use standard logging module 2011-07-15 16:32:06 +02:00
Dov Feldstern 505ea625c0 Support %p (position) in player command (bug 1140) 2011-07-05 16:08:25 +02:00
Thomas Perl 6a15e7ceb4 Normalize URLs without path to "/" as path
This is the same way that mygpo-feedservice and
the mygpo web service normalize feed URLs.
2011-05-09 12:34:23 +02:00
Thomas Perl 30d31a6f75 Improve normalizing of feed URLs
Make sure that domain names are always lowercase.
2011-05-07 18:52:33 +02:00
Thomas Perl 521238cbd3 Win32: Fix issues with backslashes in commands 2011-04-08 14:16:17 +02:00
Thomas Perl 4376057001 Update copyright years 2011-04-01 18:59:53 +02:00
Thomas Perl fa169718d1 Mac OS X: Avoid exit when set locale fails 2011-03-03 13:09:23 +01:00
Thomas Perl 4414616b43 Remove gpodder.ui.maemo / replace with ui.fremantle 2011-02-01 18:23:37 +01:00
Thomas Perl 61b3179a1b Remove support for Maemo 4 (Diablo) 2011-02-01 17:59:00 +01:00
Thomas Perl 495b1658f5 Add support for file:// URLs for feeds (bug 1229) 2010-12-16 19:24:06 +01:00
Thomas Perl b875481241 Remove broken iTunes podcast code (bug 1218) 2010-12-06 13:06:32 +01:00
Thomas Perl a31fe42eb0 Use dict-based format strings for numbers (bug 1165) 2010-11-22 21:52:58 +01:00
Thomas Perl 2e3ee6f9fa Remove broken doctest for run_external_command 2010-10-10 14:06:58 +02:00
Vladimir Voroshilov 54cf803159 Make date formatting locale-aware (bug 663) 2010-09-26 23:42:05 +02:00
Thomas Perl b50ee225d0 Better OS filesystem encoding detection 2010-08-23 22:48:36 +02:00
Thomas Perl 84b00c8cc1 Basic support for FM4 XSPF playlists 2010-08-20 22:44:06 +02:00
Thomas Perl 82e5f51768 Playback multiple files on Maemo (bug 1037)
Create a temporary M3U playlist and send its
filename to the Nokia Media Player, as this
is the only way to open multiple files at once
with the built-in Media Player.
2010-07-18 20:55:08 +02:00
Thomas Perl 505ac444e2 Maemo 4: Support for sending files via Bluetooth 2010-07-05 20:46:25 +02:00
Thomas Perl bcde6ca393 Fix credentials-with-space bug (bug 1065)
Spaces in username or password for HTTP auth were
quoted in a wrong way (quote_plus), which made the
rest of the code not decode the URL correctly.

This patch makes quoting of spaces work correctly
and produce URLs that have correct semantics. Unit
tests were also added to verify this special case.
2010-07-02 21:37:59 +02:00
Thomas Perl 7c20ffd167 Determine episode duration (bug 811)
This patch adds two methods for detecting the
episode length (time units, not bytes):

 * iTunes-specific "duration" in the RSS feed
 * GStreamer-based length detection after download

The patch also adds duration information to the
tooltip in the episode list as a first step for
displaying this information in the UI.
2010-06-04 20:43:38 +02:00
Thomas Perl cf44f7c30e Code cleanup: Remove unused imports 2010-05-17 18:26:13 +02:00
Thomas Perl e6158c4f17 Fix "Download from gpodder.net" (Maemo bug 9093)
Downloading subscriptions from gpodder.net after
a fresh re-install should now be possible. All
subscriptions from the user will be shown in the
OPML selector after logging in to gpodder.net.
2010-05-12 13:38:31 +02:00
Thomas Perl cd609dc318 gpodder.net device type auto-detection
This can obviously be extended to support more
platforms and give better results. For now, only
Maemo and Linux (Laptops, via ACPI battery) are
supported.
2010-05-03 20:11:12 +02:00
Thomas Perl 9c8fd358c3 Simplify delete_file in gpodder.util 2010-04-30 13:22:50 +02:00
Thomas Perl ccf590328e Better detection for wrong file extensions
This fixes issues where previously downloaded
episodes would not get their extension fixed,
because the mime type does not change, although
the filename is still wrong.
2010-04-09 02:28:11 +02:00
Thomas Perl 23992c42f9 Fix YouTube filename extensions on Maemo 5 2010-04-09 01:57:05 +02:00
Thomas Perl a02f6774f5 Fix issue with floating-point time values
Formatting a time span only works if the
input data is an integer value.
2010-03-02 00:45:47 +01:00
Thomas Perl 25210dfc2d Fix streaming for Maemo 5 (bug 8861)
Make sure that only local file names are
prefixed with "file://" when invoking the
media player (or other viewer apps).
2010-02-07 23:25:36 +01:00
Thomas Perl f5b6cebfad mygpo: Better integration + Fremantle UI
Replace the JSON-based persistence layer with
"minidb", a SQLite-based object persistence
layer, and make the UI request changes from
the API client when it thinks it fits best.

Also, add a Hildonized UI of the mygpo settings
dialog for Maemo 5.
2010-01-28 17:39:10 +01:00
Thomas Perl 7287ddb0a6 Better file opening (Maemo bugs 7162, 5588)
Make sure to quote filenames so that '#' in
filenames does not make the media player fail.

Also add support for opening PDF files with
the PDF viewer and image files with "Images".

Thanks to Bartosz Taudul and Brian May for
the bugs reports on bugs.maemo.org :)
2010-01-25 14:25:05 +01:00
Thibauld Nion 64fcdd83ad Support 'image' in file_type_by_extension (bug 740)
file_type_by_extension formerly filtered out content
that was not a video nor an audio file.
2010-01-07 22:10:37 +01:00
Thomas Perl afe9581c76 Remove "feeds2" from FeedBurner URLs
It seems like feedburner has stopped
redirecting "feeds.feedburner.com" to
"feeds2.feedburner.com", so we should
update the URLs accordingly.
2010-01-07 22:07:14 +01:00
Thomas Perl 181564f1b7 Add 2010 to the years in copyright notice
The following command has been used:

grep -r '2005-2009 Thomas Perl and the gPodder Team' * | cut -d: -f1 |
xargs sed -i -e 's/2005-2009 Thomas Perl and the gPodder Team/2005-2010
Thomas Perl and the gPodder Team/g'
2010-01-02 17:35:42 +01:00
Thomas Perl 63dc89e6f4 Fix gettext plural forms (Maemo bug 6885)
Implement proper plural forms for languages
with more than two plural forms by using
ungettext and properly using it for plurals.

Thanks to Tomasz Dominikowski for reporting.
2009-12-21 23:18:00 +01:00
Thomas Perl 6ab9856fe9 Configurable preferred YouTube fmt_id (bug 578)
Users can now set their preferred YouTube fmt_id
for downloads of YouTube videos. The default has
been changed to 18, because that's a known-good
video format that should work on most machines.
2009-12-17 13:08:55 +01:00
Thomas Perl 6fd48bbeef Detect .mp4 as video extension 2009-12-06 01:09:52 +01:00
Thomas Perl 3bf38383f7 Custom handler support + Soundcloud integration
This is still a work-in-progress, but it works
fine for me so far. Still needs lots of work to
be more accessible and robust.

You can use the "sc:" prefix to add Soundcloud
users (or use http://soundcloud.com/username).
2009-12-04 00:14:29 +01:00
Thomas Perl dc849c1bec User-agent header for all HTTP requests (bug 626)
This includes shownotes images (from the HTML widget),
OPML downloads, YouTube resolving and my.gpodder.org.
2009-11-14 02:09:21 +01:00
Thomas Perl 9f227a282d Add support for the "yt:" prefix shortcut
Another useful shortcut to subscribe to YouTube
users. Instead of typing the full URL, just use
"yt:<username>" and get the correct feed added.
2009-11-04 14:58:23 +01:00
Thomas Perl 5115f7119e Add "fb:" prefix shortcut for feed URLs
It's now possible to have some prefix shortcuts
when adding URLs. This should make the life of
lazy typists easier, especially on mobile devices.

At the moment, the only available prefix is "fb:".
If you want to add a FeedBurner URL, simply take
the name of the podcast and prefix it with "fb:".

Added some doctests to normalize_feed_url.
2009-11-03 19:15:16 +01:00
Thomas Perl 4af2e0682f Fix problems with get_real_url() (bug 573)
Don't fail hard when we cannot get the real
URL of an episode while searching for files.

Only partially fixes bug 573, as the reporter
has posted the traceback in the wrong bug.
2009-09-28 16:03:15 +02:00
Thomas Perl 208b69c655 Fix file and website opening on Maemo
This makes the media player and web browser integration
work on Fremantle/Maemo 5 and makes it work better on
Diablo (only single notification; better browser start).
2009-09-22 16:36:07 +02:00
Thomas Perl 1d0eea4465 First cut of Fremantle (Maemo 5) support
Use gpodder.ui.{desktop,diablo,fremantle} for
detecting which environment and interface to use.

Fremantleized versions of the episode selector
and podcast directory windows roughly done.
2009-09-15 19:49:28 +02:00
Thomas Perl a23a779a71 Better file type detection using mimetypes
Allows for some exotic formats to be detected as
audio or video files in addition to hardcoded ones.
2009-09-08 17:29:55 +02:00
Thomas Perl 996b2bcda2 Improve HTTP authentication handling (bug 525)
Add some additional code and checks to make the use
of password-protected podcasts more stable and easier
to use. Thanks to Dan Ramos for the bug report.
2009-08-24 13:04:11 +02:00
Thomas Perl 7f88f06bc9 Fix year out-of-range problem in format_date (bug 537)
If datetime.datetime.fromtimestamp() does not work,
simply return "None" in gpodder.util's format_date().

Thanks to phq for the fix suggestion.
2009-08-24 01:13:10 +02:00
Thomas Perl bfcef518f5 Move GTK+-related functions from gpodder.util to gtkui.model 2009-08-14 00:14:06 +02:00
Thomas Perl 33e585dc12 Support for playback of multiple files (bug 120)
If the player supports it (%U, %F or at least NOT %f, %u),
then only run one command for multiple selected episodes
and in this way support the playback of multiple episodes.
2009-07-13 15:32:46 +02:00
Thomas Perl f327f5e39a Use proper emblems for the episode list (bug 467)
Fix missing icons in Win32 and use better emblems
for depicting new, locked and missing downloads.
2009-07-13 13:13:35 +02:00
Tim Gilbert 93f6f31c39 Add free disk space detection on Windows (bug 468)
I'm attaching a patch against the current git tree which should fix
this, based on the information here:

http://mail.python.org/pipermail/python-list/2003-May/203223.html

Note that the user will need to have the Python win32 extensions
installed - see http://sourceforge.net/projects/pywin32/ - and I have no
idea how to include these in the frozen Python binary which is included
in the win32 distribution of gpodder.  The patch reverts back to the old
behavior if it can't find the win32api.
2009-07-12 16:14:15 +02:00
Thomas Perl 03e2a7c89a Simplify Bluetooth-related tasks by removing options
This should make things a bit clearer and the code simpler.
2009-07-06 15:21:36 +02:00
Thomas Perl 7fb8d8be92 Only depend on GTK for GUI things in util (bug 495)
When running the CLI interface, we should not depend
on the GTK+ module, so change the imports to only
work when using GUI-related functions and do nothing
when using the CLI.

Thanks to TDRogers for reporting this issue.
2009-06-27 20:37:52 +02:00
Torbjörn Wassberg a050637fd5 Fix sort order in "Remove podcasts" dialog (bug 408)
When I sort on the Copied-column in the Remove podcasts dialog, it sorts
in lexicographical order. Also, files copied within the last day only
show an empty string.

This patch fixes these issues.
2009-05-26 13:56:49 +02:00
Thomas Perl 57fb777730 Maemo-specific UI changes (automatic FingerScroll)
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.
2009-05-11 21:35:33 +02:00
Thomas Perl 9b0521b53f Add proper player configuration on Maemo (preferences UI)
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.
2009-05-11 20:08:59 +02:00
Thomas Perl de3750e190 Win32-specific changes and bugfixes (bug 247, 442)
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.
2009-05-10 23:08:37 +02:00
Thomas Perl b1ec8f62e9 Make gPodder more library-like; remove --local
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.
2009-05-07 16:26:07 +02:00
Thomas Perl ce70212ce4 Remove bogus sender=self keyword arguments
Thanks to Tim Barlotta in LP bug 341474 for the report.
2009-04-08 16:04:19 +02:00
Thomas Perl aa4eb0b4d0 Move ext_command_thread from gPodderLib to util
We want to get rid of gPodderLib in the end, so move
the utility function out of gPodderLib and correct
its uses accordingly. Also add a unittest for it.
2009-04-01 12:53:13 +02:00
Thomas Perl 3212ba8080 Improve sanitize_filename and sanitize_encoding (bug 389)
Make sure to always decode non-unicode strings in
these functions, so to not get an UnicodeDecodeError
when trying to decode/encode strings to/from unicode.

Thanks to Andy Owen for reporting this bug.
2009-03-30 20:30:19 +02:00
Thomas Perl 27b660ac29 Doctest for util.username_password_from_url
Add doctests for the username/password from URL
function and raise a ValueError when the input
data is invalid (wrong type or format - see below).

Had a look at RFC1738 (Section 3.1) how username
and password are specified in URLs. According to
that RFC, "@", ":" and "/" have to be encoded in
the username and password field.
2009-03-24 20:44:37 +01:00
Thomas Perl 3aab8c1b87 More doctests; test "find_mount_point" (using MiniMock)
Add doctests for the find_mount_point() utility method
and make it more robust while finding shortcomings of
the current implementation by unexpected behaviour that
has been checked with the doctest and mock objects.

Note the unittest requirements (minimock + coverage) in
the README file and rm the ".coverage" file on "make clean".
2009-03-24 19:53:19 +01:00
Nick Nobody e00ae8e267 Make default encoding 'utf8' on Maemo 2009-03-10 15:01:51 +01:00
Thomas Perl 043309cec4 Add support for unit testing and doctesting
New module "gpodder.unittests" that will run all
unit tests and doctests (currently only gpodder.util)
for gPodder. The tests can easily be run with a

    make unittest

in the source tree or with the following command
when gPodder is installed onto the system:

    python -m gpodder.unittests

Also added a (currently unused) helper function to
gpodder.util that already has unittests prepared.
2009-02-25 14:23:03 +01:00
Thomas Perl b6b58d0e9d Add ".m4b" to list of audio file extensions
Thanks to Nico_P for mentioning this on IRC.
2009-02-18 21:44:47 +01:00
Romain Janvier 2fcbabfadb Avoid problems with wrong timestamps (bug 352)
I've search a little and it seems that it comes
from podcasts that are on my iPod and that don't
have a released date.

I've just attached my version of util.py. I've
added a try/except, so if the timestamp is not None,
but is incorrect, the exception is catched and None
is returned. It works for me.
2009-02-14 16:31:53 +01:00
Thomas Perl bb59cebe63 Download resuming and proper filename support (bugs 19 and 57)
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! :)
2009-02-09 23:26:47 +01:00
nikosapi cd78dbdd95 Make playing episodes with spaces in their filenames work 2009-02-09 17:53:12 +01:00
Thomas Perl 0f226211b5 Update copyright info from 2005-2008 to 2005-2009
As every year, we have to update the year info for
gPodder in all our files throughout the source tree.
2009-02-01 21:22:21 +01:00
Bernd Schlapsi 8e16f74560 M3U write support for Sandisk Sansa (bug 251)
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.
2009-01-03 17:38:35 +01:00
Thomas Perl 6cead6d94d Fix case for URL schemes, better error message (bug 276)
Allow URL schemes like "Http://" and show better error
messages when adding URLs with unknown schemes.

Thanks to R. Bell for reporting this error on garage.maemo.org.
2008-12-23 20:17:52 +01:00
Thomas Perl 12dee8f579 Support falling back to ascii encoding for sanitize_filename
Add an optional parameter to only encode filenames in ascii
and remove all other, non-ascii characters from the filename.
2008-12-04 21:02:18 +01:00
Thomas Perl 6d96263c51 Remove Bluetooth UI, make Bluetooth detection automatic
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.
2008-11-19 20:50:38 +01:00
Justin Forest bd16e95a39 Updated YouTube downloader
YouTube changed their server side logic and the old way
of resolving enclosure URLs stopped working.  The new
method is taken from clive.
2008-11-19 16:47:46 +01:00
Thomas Perl 168966522e Support for streaming instead of downloading (bug 93)
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.
2008-11-19 16:25:27 +01:00
Thomas Perl 9c4bc90e8b Remove BitTorrent-specific code
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
2008-11-17 21:35:25 +01:00
Thomas Perl 07fa96bf1b Expose system default video and audio player in UI
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.
2008-11-06 18:06:12 +01:00
Justin Forest 661a4381e1 Split util.get_episode_info_from_url() for code reuse.
The part that issues different requests depending on the
availability of a proxy server is now reusable.
2008-10-14 19:12:21 +02:00
Thomas Perl 097ab04f62 Auto-discover RSS/Atom feeds from HTML pages (bug 201)
For text/html content types, try to discover the correct
RSS/Atom feed URL by looking at the <link> meta elements
and getting the feed URL from that. If that fails, or if
there are not <link> meta elements, make sure that the UI
code can display the "This URL is a website" message box
that will allow the user to open a web browser window to
search for the feed URL manually.

Based on a patch by Justin Forest.
2008-09-30 22:07:06 +02:00
Leonid Ponomarev f6d8406a3d Support legacy encodings better for synchronization
I have encountered another piece of code, which hangs the
sync process due to incompatibility with my legacy non-UTF8
locale. So I've added one more function to gpodder.util
which just cleans strings from possible further errors.
2008-08-03 22:41:19 +02:00
Nick a2bf6c0577 Mon, 14 Jul 2008 12:31:15 -0400 <me@nikosapi.org>
Merge patch to fix bug #122 (Day of week Released date not computed correctly)

	* src/gpodder/libpodcasts.py: use rfc822.mktime_tz() to convert
	timestamps from feedparser's _parse_date() function to seconds from
	the epoch (in UTC instead of the local timezone)
	* src/gpodder/util.py: fix util.format_date() so that when it reports
	'Today', it means the timestamp is from after 00:00 local time



git-svn-id: svn://svn.berlios.de/gpodder/trunk@770 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-07-14 16:46:59 +00:00
Thomas Perl 9e486d702f Thu, 10 Jul 2008 23:49:12 +0200 <thp@perli.net>
Don't warn the user when timestamp is None

	* src/gpodder/util.py: Don't warn the user when timestamp is None in
	gpodder.util.format_date; Thanks to Bernd Schlapsi for reporting this
	bug (Closes: http://bugs.gpodder.org/show_bug.cgi?id=148)



git-svn-id: svn://svn.berlios.de/gpodder/trunk@762 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-07-10 21:50:28 +00:00
Nick a42d4ee087 Tue, 08 Jul 2008 21:10:48 -0400 <me@nikosapi.org>
Small bugfixes

	* src/gpodder/gui.py: for bluetooth file transfer make sure
	episode.sync_filename()	doesn't contain any troublesome characters
	eg. some episodes include / in the title
	* src/gpodder/libpodcasts.py: comment out mimetype logging, it gets
	annoying after a while...
	* src/gpodder/util.py: remove "path = os.path.dirname(path)" from
	get_free_disk_space(path), this prevented the real free disk space
	from being reported



git-svn-id: svn://svn.berlios.de/gpodder/trunk@759 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-07-09 01:19:14 +00:00
Nick d4ea5b78b2 Tue, 01 Jul 2008 22:46:52 -0400 <me@nikosapi.org>
Better file extension detection using feed items' mimetypes

	* src/gpodder/gui.py: Use episode.file_type() instead of 
	util.file_type_by_extension(util.file_extension_from_url(url))
	* src/gpodder/libgpodder.py: Use episode.file_type() instead of          
        util.file_type_by_extension(util.file_extension_from_url(url))
	* src/gpodder/libpodcasts.py: Add new column to the channel list
	gtk.ListStore for holding the file extension. Add extension()
	function to podcastItem which makes use mimetype in the event that
	filename_from_url()[1] returns None
	* src/gpodder/util.py: file_extension_from_url is renamed to 
	filename_from_url and returns (filename, extension)
	Added extension_from_mimetype(mimetype)



git-svn-id: svn://svn.berlios.de/gpodder/trunk@752 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-07-02 23:36:39 +00:00
Nick a86b127309 Sun, 29 Jun 2008 16:59:30 -0400 <me@nikosapi.org>
Merge patch from Justin Forest and Thomas Perl:
- Use SQLite instead of cPickle to store all data, including feed summary
and entries, download and play history. 
- Migration assistant to import the old cPickle files in to the SQLite DB
	* src/gpodder/cache.py: SQLite-related accomodations 
	* src/gpodder/console.py: SQLite-related accomodations
	* src/gpodder/dbsqlite.py: New file, SQLite interface for gPodder
	* src/gpodder/gui.py: Lots of changes to accomodate the new SQLite
	DB + new migration assistant code
	* src/gpodder/libgpodder.py: Added gPodderLib.migrate_to_sqlite().
	HistoryStore and ChannelSettings are marked as DEPRECATED
	* src/gpodder/libpodcasts.py: SQLite-related accomodations and new 
	code for setting/determining episode state
	* src/gpodder/sync.py: SQLite-related accomodations
	* src/gpodder/trayicon.py: Use episode.was_downloaded() instead
	of episode.is_downloaded()
	* src/gpodder/util.py: SQLite-related accomodations


git-svn-id: svn://svn.berlios.de/gpodder/trunk@750 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-06-30 01:10:18 +00:00
Thomas Perl c1bf2ceaf2 Sun, 15 Jun 2008 14:23:40 +0200 <thp@perli.net>
Support tooltips for the episode list; improve tooltip appearance

	* src/gpodder/gui.py: Add tooltips to treeAvailable (episode list);
	avoid showing tooltips while the context menu of the treeChannels and
	treeAvailable is open, so the tooltip doesn't appear over the context
	menu; add Sebastian Krause to list of bug reporters
	* src/gpodder/util.py: Try to convert some HTML tags to text-only
	characters (<br> to newline, <li> to a "*", etc..) so the description
	of an episode is easier to read and looks more structured; also,
	convert more than two subsequent newlines to maximum two newlines
	(Closes: http://bugs.gpodder.org/show_bug.cgi?id=126)



git-svn-id: svn://svn.berlios.de/gpodder/trunk@742 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-06-15 12:28:24 +00:00
Thomas Perl 5b137db2cb Sat, 14 Jun 2008 18:50:29 +0200 <thp@perli.net>
Improve performance related to pubDate parsing; Download button; update feeds

	* src/gpodder/gui.py: Notify user when we are building the list of
	channels instead of staying at "updating [last feed]".; Make the "OK"
	button of the gPodderEpisodeSelector a "Downlaod" button, because
	that's what the button does when clicking it - downloading episodes
	* src/gpodder/libpodcasts.py: pubDate is now an Unix timestamp
	everywhere and not a string, which has to be parsed quite often; Fix
	up and improve the creation of the channel list model
	* src/gpodder/sync.py: Customizations for the new pubDate code
	* src/gpodder/util.py: Remove updated_parsed_to_rfc2822, because we
	don't need it anymore with the new pubDate code



git-svn-id: svn://svn.berlios.de/gpodder/trunk@740 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-06-14 16:53:16 +00:00
Thomas Perl 1174dd057c Sat, 14 Jun 2008 15:56:53 +0200 <thp@perli.net>
Make things less verbose and fix a problem with cover art handling

	* src/gpodder/gui.py: Fix problem when trying to remove a non-existent
	podcast cover art from the cache; make things less verbose
	* src/gpodder/*.py: Make things less verbose



git-svn-id: svn://svn.berlios.de/gpodder/trunk@739 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-06-14 13:57:34 +00:00
Thomas Perl d3533acc1f Fri, 13 Jun 2008 21:32:57 +0200 <thp@perli.net>
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
2008-06-14 11:43:53 +00:00
Thomas Perl 0aec290ec2 Fri, 13 Jun 2008 16:08:16 +0200 <thp@perli.net>
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
2008-06-13 14:13:27 +00:00
Thomas Perl 905014fc1b Fri, 13 Jun 2008 09:37:45 +0200 <thp@perli.net>
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
2008-06-13 07:41:36 +00:00
Thomas Perl 40aa357a50 Mon, 12 May 2008 11:38:55 +0200 <thp@perli.net>
Fix a crasher with ExpatError when trying to parse an invalid itms:// URL

	* src/gpodder/gui.py: Give an error message when adding a channel that
	doesn't result in a valid URL being returned
	* src/gpodder/util.py: Improve handling of itms:// URLs that are not
	valid iTunes Podcast links, so they don't crash; thanks to Ralph on
	Launchpad for reporting this bug
	(Closes: https://bugs.launchpad.net/ubuntu/+source/gpodder/+bug/214113)



git-svn-id: svn://svn.berlios.de/gpodder/trunk@713 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-05-12 09:40:55 +00:00
Thomas Perl 9ba9d6bbbd Mon, 12 May 2008 11:04:53 +0200 <thp@perli.net>
Fix bugs in the calculate_size utility function

	* src/gpodder/util.py: Fix problem when accessing files or folders is
	not possible in calculate_size(); thanks to Scott Wegner for reporting
	this bug on Launchpad
	* src/gpodder/gui.py: Add Scott Wegner to list of bug reporters
	(Closes: https://bugs.launchpad.net/ubuntu/+source/gpodder/+bug/201276)



git-svn-id: svn://svn.berlios.de/gpodder/trunk@711 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-05-12 09:07:05 +00:00
Thomas Perl d63f123e36 Revert traceback-related changes from r682
git-svn-id: svn://svn.berlios.de/gpodder/trunk@686 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-04-22 20:24:19 +00:00
Thomas Perl 18df6b386c Tue, 22 Apr 2008 21:15:40 +0200 <thp@perli.net>
Python code fixup: Compare "None" with "is not" instead of "!="

	* src/gpodder/config.py: "!= None" => "is not None"
	* src/gpodder/download.py: "!= None" => "is not None"
	* src/gpodder/gui.py: "!= None" => "is not None"
	* src/gpodder/libconverter.py: "!= None" => "is not None"
	* src/gpodder/libgpodder.py: "!= None" => "is not None"
	* src/gpodder/libpodcasts.py: "!= None" => "is not None"
	* src/gpodder/services.py: "!= None" => "is not None"
	* src/gpodder/util.py: "!= None" => "is not None"



git-svn-id: svn://svn.berlios.de/gpodder/trunk@683 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-04-22 19:16:30 +00:00
Thomas Perl bba4db9632 Tue, 22 Apr 2008 21:07:28 +0200 <thp@perli.net>
Logging traceback is enabled by default (needs to be disabled on demand)

	* src/gpodder/*.py: Remove "traceback=True" from logging calls
	* src/gpodder/liblogger.py: Always print a traceback if it's
	available; if not, do not print it out; this can be disabled by
	passing "traceback=False" to the log() function
	* src/gpodder/sync.py: Also add "traceback=False" for optional imports



git-svn-id: svn://svn.berlios.de/gpodder/trunk@682 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-04-22 19:08:54 +00:00
Thomas Perl 0abbea437c Sat, 19 Apr 2008 18:46:30 +0200 <thp@perli.net>
Additional fields for the device remove episodes dialog; refactoring

	* src/gpodder/gui.py: Add "Podcast" and "Released" columns to the
	episode selector; hide all columns in our "delete from device" episode
	selector that have all rows set to "None"; make the first text column
	of the gPodderEpisodeSelector bigger, so the episode selector is
	easier to read when there are many columns
	* src/gpodder/libpodcasts.py: Use util.format_date() for
	cute_pubdate() in podcastItem
	* src/gpodder/sync.py: Document SyncTrack a bit better, add
	needed/possible keyword arguments that are used in the UI; default
	some values to None in case they are not provided; get "released" date
	from iPod's iTunesDB and get podcast name from MP3 player's sync
	folder (if this feature has been activated)
	* src/gpodder/util.py: Add format_date() function that converts a Unix
	timestamp to a good representation for a date (either Today,
	Yesterday, a weekday or the locale's appropriate representation); the
	code has been re-factored from podcastItem's cute_pubdate() function
	in gpodder.libpodcasts and is now used from there



git-svn-id: svn://svn.berlios.de/gpodder/trunk@677 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-04-19 17:01:09 +00:00
Thomas Perl 6139b20239 Mon, 07 Apr 2008 23:06:53 +0200 <thp@perli.net>
Makre sure we can re-set the locale after changing it

	* src/gpodder/util.py: Make sure we can re-set the locale after
	changing it, and if we cannot, only print a warning, but don't throw
	the exception outside of the function



git-svn-id: svn://svn.berlios.de/gpodder/trunk@659 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-04-07 21:07:10 +00:00
Thomas Perl afe3df8384 Sun, 06 Apr 2008 02:05:34 +0200 <thp@perli.net>
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
2008-04-06 00:19:03 +00:00
Thomas Perl 3ccbb80a2c Sat, 29 Mar 2008 17:13:26 +0100 <thp@perli.net>
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
2008-03-29 16:16:55 +00:00
Thomas Perl 452c5d396d Sat, 29 Mar 2008 16:30:02 +0100 <thp@perli.net>
Report errors in parsing/loading an already-added channel in the navigator

	* src/gpodder/gui.py: Show the error from feedparser in the channel's
	tooltip if there has been an error loading the channel
	* src/gpodder/libpodcasts.py: Make sure we can load a default title
	when using get_by_url(); save the parse_error variable for each
	channel (it defaults to None if there is no error); mark the
	description text for the channel navigator in red color if there has
	been a parser error and add the parse_error variable to the liststore
	model
	* src/gpodder/util.py: Strip whitespace before and after the string in
	remove_html_tags()



git-svn-id: svn://svn.berlios.de/gpodder/trunk@647 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-03-29 15:33:18 +00:00
Thomas Perl 3b95b15e69 Sat, 29 Mar 2008 16:18:59 +0100 <thp@perli.net>
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
2008-03-29 15:22:01 +00:00
Thomas Perl 0f9b213fe5 Sat, 29 Mar 2008 01:20:46 +0100 <thp@perli.net>
Make sure we ignore the updated_parsed of a channel if it's None

	* src/gpodder/libpodcasts.py: Only try to convert the "updated_parsed"
	field if it's not "None"
	* src/gpodder/util.py: Make sure we receive a valid 9-tuple when
	converting dates from updated_parsed; if we receive a None value or
	some value that isn't "9" in length, return None
	Thanks to Chris Arnold <carnold@electrichendrix.com> for reporting
	this bug on the gpodder-devel mailing list



git-svn-id: svn://svn.berlios.de/gpodder/trunk@644 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-03-29 00:22:39 +00:00
Thomas Perl 420e2396b8 Mon, 24 Mar 2008 10:42:19 +0100 <thp@perli.net>
Add "3gp" to the list of video file extensions, so we detect these files

	* src/gpodder/util.py: Add the .3gp video file extension to the list
	of known video file extensions, so we can detect that these are video
	files and act accordingly (in the UI and on sync); thanks to Atte
	André Jensen for reporting this bug on the gpodder-devel mailing list



git-svn-id: svn://svn.berlios.de/gpodder/trunk@634 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-03-24 09:43:41 +00:00
Thomas Perl 7012d63894 Thu, 20 Mar 2008 11:07:48 +0100 <thp@perli.net>
Performance-improving patch from Nick (nikosapi) to html entity replacement

	* src/gpodder/util.py: Merge patch from Nick (nikosapi.org) to really
	improve performance of the HTML tag stripper/entity replacement code
	by using regular expressions and some more intelligent code for
	converting numeric entities to Unicode characters



git-svn-id: svn://svn.berlios.de/gpodder/trunk@618 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-03-20 10:08:58 +00:00
Thomas Perl b76cd01606 Wed, 19 Mar 2008 15:02:10 +0100 <thp@perli.net>
Various Bluetooth-related fixes

	* data/gpodder.glade: Use the "bluetooth" icon instead of the (old?)
	"stock_bluetooth" icon; in Gnome 2.22, the "bluetooth" icon is nicer,
	i.e. more Tango-ish than the "stock_bluetooth" icon
	* src/gpodder/gui.py: Fix a logging error; Only show "Send to [...]
	via bluetooth"/"Send to bluetooth device" when we have already
	downloaded the episodes (won't obviously work otherwise..)
	* src/gpodder/util.py: Fix bluetooth_send_file to work with both
	bluetooth-sendto and gnome-obex-send (different command line argument
	format for both)



git-svn-id: svn://svn.berlios.de/gpodder/trunk@613 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-03-19 14:43:22 +00:00
Thomas Perl b794edfba6 Mon, 10 Mar 2008 16:37:38 +0100 <thp@perli.net>
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
2008-03-10 15:50:12 +00:00
Thomas Perl 3c3e5e88f2 Move webbrowser code to util.open_website; fix URLs to gpodder.org
git-svn-id: svn://svn.berlios.de/gpodder/trunk@599 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-03-03 19:38:22 +00:00
Thomas Perl 410e3d0ae6 Move gPodderLib().open_folder to util.gui_open
git-svn-id: svn://svn.berlios.de/gpodder/trunk@597 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-03-02 13:04:37 +00:00
Thomas Perl 34f4b6e8b2 Pickle-based storage method (dumbshelve); HTTP HEAD requests; buggy feed fixes
git-svn-id: svn://svn.berlios.de/gpodder/trunk@596 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-03-02 12:56:16 +00:00
Thomas Perl beaaaccc15 Add Flash Video (flv) and Windows Media Video (wmv) to file detection
git-svn-id: svn://svn.berlios.de/gpodder/trunk@593 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-02-27 08:47:29 +00:00
Thomas Perl ee5ef63ea5 Add support for new "bluetooth-sendto" utility
git-svn-id: svn://svn.berlios.de/gpodder/trunk@590 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-02-26 15:33:23 +00:00
Thomas Perl 6276017d60 Estimated time left and synchronization support for tray icon by Jérôme Chabod
git-svn-id: svn://svn.berlios.de/gpodder/trunk@579 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-02-20 12:46:51 +00:00
Thomas Perl 86a29f82e9 revert changes that should not have been included in the last commit
git-svn-id: svn://svn.berlios.de/gpodder/trunk@577 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-02-19 06:52:15 +00:00
Thomas Perl a323f97b51 Fix bug with MP3 player synchronization file name encodings
git-svn-id: svn://svn.berlios.de/gpodder/trunk@576 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-02-19 06:49:20 +00:00
Thomas Perl 108ff7a5af Usability GUI update (after Rafael Proença's proposal)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@561 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-02-06 09:29:56 +00:00
Thomas Perl 4e2b9033c0 Fix another bug in file_modification_datetime
git-svn-id: svn://svn.berlios.de/gpodder/trunk@554 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-01-30 08:48:20 +00:00
Thomas Perl eaea0425e5 Fix a bug in the file size calculation
git-svn-id: svn://svn.berlios.de/gpodder/trunk@553 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-01-30 08:25:11 +00:00
Thomas Perl 748f5496ec Merge new sync code from thp's private branch
git-svn-id: svn://svn.berlios.de/gpodder/trunk@552 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-01-28 11:38:53 +00:00
Thomas Perl a445089fc7 Add support for sending files via Bluetooth
git-svn-id: svn://svn.berlios.de/gpodder/trunk@536 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-01-21 09:52:09 +00:00
Thomas Perl 4a25d955e6 Modularize calls to gobject.idle_add (for non-GTK support)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@521 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2008-01-15 13:54:22 +00:00
Thomas Perl b5104b2c73 Better username/password extraction from URLs
git-svn-id: svn://svn.berlios.de/gpodder/trunk@504 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-12-23 11:23:48 +00:00
Thomas Perl fe05092ef6 Merged episode locking patch from Paul Rudkin
git-svn-id: svn://svn.berlios.de/gpodder/trunk@489 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-12-12 18:50:52 +00:00
Thomas Perl 8ba93845be Selective iPod episode clean-up; "delete older than X days"
git-svn-id: svn://svn.berlios.de/gpodder/trunk@486 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-12-10 08:41:17 +00:00
Thomas Perl 6a8c0b4b5c Support for itms:// links (direct links to the Apple iTunes Music Store)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@483 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-12-06 08:39:06 +00:00
Thomas Perl b714659132 Support for iTunes Podcast links (http://phobos.apple.com/...)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@482 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-12-06 08:31:09 +00:00
Thomas Perl d2207f2c71 Fix a fatal bug with first-run that prevents channel list saving
git-svn-id: svn://svn.berlios.de/gpodder/trunk@476 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-12-01 14:20:57 +00:00
Thomas Perl 3259c76d5c Support for itpc:// URLs
git-svn-id: svn://svn.berlios.de/gpodder/trunk@475 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-11-29 07:54:39 +00:00
Thomas Perl b164fc3c62 Check free disk space before copying files to iPod
git-svn-id: svn://svn.berlios.de/gpodder/trunk@466 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-11-15 10:10:21 +00:00
Thomas Perl 9069d10158 Better file extension guessing for URLs
git-svn-id: svn://svn.berlios.de/gpodder/trunk@461 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-11-11 13:29:02 +00:00
Thomas Perl 7fa2c4e38c Better command detection for the converter library
git-svn-id: svn://svn.berlios.de/gpodder/trunk@451 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-11-05 00:15:56 +00:00
Thomas Perl 70a9759471 Remove extracted cover art when deleting episode files
git-svn-id: svn://svn.berlios.de/gpodder/trunk@450 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-11-04 23:24:36 +00:00
Thomas Perl 9343da2eb0 Fix format_filesize() function to be standards-conformant (unit prefixes)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@448 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-11-03 13:18:59 +00:00
Thomas Perl ac149c7b7a New Configuration/Settings Manager; massive code clean-ups
git-svn-id: svn://svn.berlios.de/gpodder/trunk@447 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-11-02 16:37:14 +00:00
Thomas Perl 17e792be06 Allow "https://" URLs for episode URLs, as we can handle these, too
git-svn-id: svn://svn.berlios.de/gpodder/trunk@440 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-10-28 12:34:36 +00:00
Thomas Perl 4e6241b363 Fix a bug when traversing directories with loop symlinks
git-svn-id: svn://svn.berlios.de/gpodder/trunk@416 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-09-12 21:09:21 +00:00
Thomas Perl a77137887a Support for customized file names in MP3 player sync code
git-svn-id: svn://svn.berlios.de/gpodder/trunk@414 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-09-08 14:49:54 +00:00
Thomas Perl 92ccb39fb5 More sanitizing hacks for ugly feeds we don't really like
git-svn-id: svn://svn.berlios.de/gpodder/trunk@410 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-09-02 12:27:38 +00:00
Thomas Perl d0714c73cb Improved pubDate parsing; episode delete bugfix
git-svn-id: svn://svn.berlios.de/gpodder/branches/gpodder-thp-200708@403 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-08-30 18:49:53 +00:00
Thomas Perl 768228b695 Upgrade gPodder to GPLv3
git-svn-id: svn://svn.berlios.de/gpodder/branches/gpodder-thp-200708@400 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-08-29 18:30:26 +00:00
Thomas Perl 1aeb4d4e84 compatibility updates for buggy feeds (negative file size, no episode title)
git-svn-id: svn://svn.berlios.de/gpodder/branches/gpodder-thp-200708@393 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-08-26 22:04:50 +00:00
Thomas Perl 272255131c add support for episode without title, but warn user that this is dumb
git-svn-id: svn://svn.berlios.de/gpodder/branches/gpodder-thp-200708@388 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-08-26 18:21:23 +00:00
Thomas Perl 3b8e72bbe3 fix problem with icon loading in util.get_tree_icon()
git-svn-id: svn://svn.berlios.de/gpodder/branches/gpodder-thp-200708@384 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-08-26 15:10:30 +00:00
Thomas Perl cc84369262 merge played and status column into status column with played bullet
git-svn-id: svn://svn.berlios.de/gpodder/branches/gpodder-thp-200708@380 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-08-25 06:11:19 +00:00
Thomas Perl 3265326926 libpodcasts restructuring, clean-up
git-svn-id: svn://svn.berlios.de/gpodder/branches/gpodder-thp-200708@376 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-08-21 23:00:49 +00:00
Thomas Perl 4805e839ae gpodder.gui module; gpodder.util module (mostly reorganization stuff)
git-svn-id: svn://svn.berlios.de/gpodder/trunk@363 b0d088ad-0a06-0410-aad2-9ed5178a7e87
2007-08-07 18:11:31 +00:00