gPodder 4 status update: Sailfish OS and BB10

It's time for another status update on the upcoming gPodder release: Version 4.0.0. Version 4 will (at least initially) be more aimed towards mobile devices and QML, for all other use cases, you can keep using (and contributing to) gPodder 3.

The bleeding edge development happens in the "cuatro" branch in the main gPodder Git repository. From there, code is merged to the "gpodder-core" repository, which only contains the core gPodder library. On top of the core library, there are user interfaces, the single one that we have right now is the QML UI Reference Implementation in the "gpodder-ui-qml" repository. Taking this one step further are then the device/OS-specific repositories for customizations and packaging. Right now, we have "gpodder-bb10" for packaging of gPodder on Blackberry 10 as well as "gpodder-sailfish" for gPodder on Sailfish OS. Both of these use "gpodder-core" and "gpodder-ui-qml" as submodules to import the code from there, but might customize or replace parts of the QML UI Reference Implementation with platform-specific controls (but the Reference Implementation itself is still fully self-contained and functional, and in fact, most of the OS-specific packaging right now reuse everything and don't customize UI elements - yet).

Of course, for all you keyboard cowboys out there, we still have the CLI ("gpo") available. This is actually in the "gpodder-core" repository and is used to test the core library.

The gPodder 4 QML UI is not at all complete yet, but basic subscribing, downloading and playback works already. Stay tuned!


gPodder 3.5.2 "The Prime Mover" released

It's time for another release of gPodder, your favorite podcast client. This release brings some improvements and fixes that we've collected over the last few months. An upcoming release of gPodder 3 will contain iPod support that Joseph is currently working on. But for now, here are the highlights of gPodder 3.5.2:
  • Extensions
    • Support for Flattr'ing extensions and showing documentation (Bernd)
    • Option to auto-embed covert art images into files (bug 1742, Bernd)
  • Gtk UI
    • Various keyboard-related improvements
    • Various fixes (Eugene, bugs 1825, 1832, 1834)
    • Device sync: Fix to only include episodes in playlist (Joseph)
  • QML UI
  • Translation updates
    • Italian (Maurizio)
    • Spanish (Rigoberto)
  • Tooling and other fixes
    • Disable gpodder.net when authentication failed (Stefan)
    • makefile: Add Harmattan an Sailfish to QMLFILES
As always, a detailed changelog is available at gpodder.org/changelog/3.5.2.

Download: gpodder-3.5.2.tar.gz
md5sum: 03b6906fbb52bce49542ec53632cf07d
sha1sum: a39dfdba48424322c7d5579d92c2622a57591997

For packages in distributions, see the downloads page.

Thanks to all users who supported the gPodder project by providing bug reports, patches, documentation, feedback or donations / Flattrs.


Progress report on adding iPod / iPhone sync to gPodder 3

A few months ago, I implemented the 'device sync' feature from gPodder 2 back into the gPodder 3 codebase - but for filesystem-based devices only. I wanted to sync my podcasts to my Android phone. (I'm not an Apple guy, even though I live San Francisco, the Apple capital of the world.) It's been working well and since then I've improved it with the addition of playlists and two-way sync, so that deleting a track on your device removes it from gPodder on the next sync.

But you can't support mobile devices without supporting Apple, so after a friend kindly gave me her old iPod Touch (thanks Kendra!) I got to work.

I started with the code from the gPodder 2 branch, and refactored it into the gPodder 3 codebase, much as I did for filesystem-based syncing. With a bit of work, and by using the libimobile library, I was able to successfully sync my podcasts with the iPod!

I used libimobile tools to mount the iPod before syncing, and gtkpod to help manage the iPod's internal database. However, I don't expect people will need to use gtkpod during normal operation, only to initialize the iPod prior to the first sync.

I'll be working with Thomas to figure out precisely when and how to get this code merged into the master branch. Code that works on a first generation iPod Touch may not necessarily work on other Apple devices, so we may want to test on more hardware before merging.

Stay tuned!

Progress report from the May 2013 hack day

We had another short hack day this weekend. This is the last official hack day, there won't be any future public hack days. What we did:
Development efforts are concentrated on gPodder 4 right now, which is a rewrite from scratch.


Progress report from the April 2013 hack day

As you might have figured out by now, some of the gPodder core developers meet up monthly at the Metalab in Vienna to discuss current developments and plans for the future. This also happened this month on the 13th of April.

What we have done:

The next hack day will be on May 11th, and we will definitely be discussing more about gPodder 4 by then.


Release of libmygpo-qt v1.0.7

After exactly half a year, a new version of libmygpo-qt is ready.
Changes in v1.0.7:
  • New Config Class. This class allows to programmatically to retrieve the libmygpo-qt version and retrieve and set the gpodder.net API endpoint (e.g. if you test your software against a private instance of gpodder.net)
  • Config Class also allows to set a prefix to the user-agent. Please never completely overwrite the user-agent set in libmygpo-qt (instead pre/append your own, e.g. via mygpo::Config::setUserAgentPrefix( ... ) )
  • fixed a bug that created incomplete Episode Actions if an Episode Action couldn't be parsed completely by libmygpo-qt
  • fixed a small bug with the pkgconfig file (thx to davidsansome)
  • added support for uploading & retrieving flattr Episode Actions to gpodder.net (this allows you to automatically flattr Podcast Episodes from any podcatcher that uses libmygpo-qt)
Where to get libmygpo-qt?
Tarball: http://stefan.derkits.at/files/libmygpo-qt/libmygpo-qt.1.0.7.tar.gz
sha256sum: faade78e1baeeab7f858dec80530ad63c50f683fe511948ab1a45e685828cc74 md5sum: 447e60c8c695b4280a0e20c71abacf49

Some more important Links for libmygpo-qt:
Project Website: http://wiki.gpodder.org/wiki/Libmygpo-qt
Git Repository: https://github.com/gpodder/libmygpo-qt
Doxygen Documentation: http://stefan.derkits.at/libmygpo-doc/ gpodder.net API: http://wiki.gpodder.org/wiki/Web_Services/API_2 Bug reports: http://bugs.gpodder.org
Contact: gpodder@freelists.org 

Want to support libmygpo-qt?
You can support the development of libmygpo-qt you can send me a book via my Amazon Wishlist or donate via paypal to stefan@derkits.at

What is libmygpo-qt?
libmygpo-qt is a Qt/C++ library wrapping the gpodder.net Webservice. It is currently used in Amarok & Clementine to retrieve a directory of podcasts & to synchronize podcast subscriptions with gpodder.net


gPodder 3.5.1 "Nick of Time" released

gPodder 3.5.1 is a small bugfix release to fix some issues in the 3.5.0 release from last month. It is recommended for all users.
  • Windows support
    • Mandatory notification extension (pull request 72)
    • Compatibility: strftime doesn't have %F
    • Remove non-ascii characters (bug 1724)
  • Device synchronization
    • Sanitized playlist filename (bug 1788)
    • Sanitize mount point encoding (bug 1785)
  • Extensions
    • Merge audio/video converter extensions (bug 1783)
    • Cleaned up "Enqueue in Media Player"
    • Enqueue episodes in Totem also (bug 1775)
  • Gtk UI
    • Clear filter using secondary icon in GtkEntry
    • Fix submenu activation/focus issues (bug 1778)
    • Show notification bubbles when downloads fail (bug 1265)
  • QML UI
    • Add various checks for undefined / null objects
    • Apply automatic rotation setting to all pages (bug 1792)
    • Better selection reset logic for episode list (bug 1804)
    • Convert selection indices to integers (bug 1802)
    • Directly add a podcast via feed URL
    • Fix layout for multi-line episode titles
    • Highlight podcasts on Harmattan, but not on Sailfish
    • Make selection background color visible again
    • Reset selection when episode list changes (bug 1804)
    • Separate gpodder.net login page (pull request 85)
  • Other improvements
    • CLI: Fix subscribe/unsubscribe when list has not been loaded yet
    • Database: Check if every episode is assigned to a podcast
    • Makefile: Build ".pyo" files on "make install" (bug 1786)
    • Model: Disallow subscribing to an already-existing URL
    • Remove "print" statement in enqueue_in_mediaplayer
    • Tools: Ubuntu PPA generator for "raring" release
    • Updated German translation
As always, a detailed changelog is available at gpodder.org/changelog/3.5.1.

Download: gpodder-3.5.1.tar.gz
md5sum: 60bcc814adc654c00ab197abfe920d80
sha1sum: e9f26bd5bb7742d9c0fa78323e81060495f7417a

For packages in distributions, see the downloads page.

Thanks to all users who supported the gPodder project by providing bug reports, patches, documentation, feedback or donations / Flattrs.


Progress report from the March 2013 hack day

After the 3.5.0 release last week, we also had our monthly Jour Fixe for gPodder hacking at the Metalab on Saturday. This is a summary of what happened:

Bernd worked on bug 1265 (Notification bubbles in Ubuntu), Stefan worked on the draft for the new gpodder.net API, and I worked on getting Windows and Ubuntu releases in shape. Also: Merging some pull requests and fixing the Gtk+ submenu activate issue, creating a workaround for the focus issue in the toolkit (see GNOME bug 695488), although it seems like we still have to tweak the workaround a bit.

The next hack day is planned for April 13th 2013 and will again take place at the Metalab Vienna. Until then - happy hacking, and see you in #gpodder on FreeNode IRC.


gPodder 3.5.0 "The After Hours" released

It's time for another gPodder 3 release! Version 3.5.0 brings first-time support for Sailfish OS (using Sailfish Silica), an improved and cleaned-up MeeGo 1.2 Harmattan UI (which now shares big chunks of code with the Sailfish UI) and device playlist sync for MP3 players in the Desktop version.

  • QML UI
    • Playback position in episode list, shownotes button in medi aplayer, download filename in shownotes and horizontal line for sections (by Nelson Ferreira)
    • Abstraction for MeeGo 1.2 Harmattan (Qt Components) and Sailfish OS (Silica Components), split into common codebase with specialization components (share/gpodder/ui/qml/{harmattan,sailfish})
    • Asynchronous image loading in episode item
    • Declare x-axis drags for PlaybackBarProgress
    • Decoupled Python->QML interaction from implementation details (upcalls happen exclusively via signals / context properties)
    • Bling: Fade truncated text in Sailfish UI
    • Harmattan UI: Split UI elements into separate pages, move toolbar contents into menu for unification with Sailfish / cleaner interaction
    • Various clean-ups and simplifications in the Python backend
    • Scroll multi-episode list to episode list position
    • Step-wise asynchronous episode list loading
  • Gtk UI
    • Device playlists and two-way sync (by  Joseph Wickremasinghe, bug 1769)
    • Fixed Gtk 2.18 compatibility (by Andreas Piesk, bug 1761)
    • GtkWarning fixes in shownotes (by Sean Munkel, bug 1735)
    • Fix shownotes window resizing error (by Sean Munkel, bug 1736)
    • Fix status icon not disappearing after being disabled (by Sean Munkel, bug 1714)
    • Fix encoding issues in notifications (by Sean Munkel, bug 1744)
    • Device sync preferences: Disable all widgets when device sync is off
    • Flattr preferences: Don't close preferences when WebKit/Gtk is missing
    • Fix context menu UI blocking for extensions (bug 1778)
    • Resizable shownotes view in main window
    • Searching in the extensions list (preferences dialog)
    • Device sync: Show error message for unconfigured device
    • Shownotes (plaintext): Must not be editable in main window
  • Extensions
    • Notification bubbles for Windows (by Sean Munkel, bug 426)
    • Download progress on Window taskbar (by Sean Munkel)
    • Stream to Sonos extension (by Stefan Kögl)
    • New OGG to MP3 extension (by Bernd Schlapsi, bug 1733)
    • M4A Converter: Check file extension (by Bernd Schlapsi, bug 1770)
    • Support both libav and ffmpeg for converting, support for Windows (by Bernd Schlapsi, bug 1773)
    • Add option to remove all tags (by Bernd Schlapsi, bug 1771)
    • Enqueue in Media Player: Mark episodes as played (by Bernd Schlapsi, bug 1749)
    • Woodchuck extension removed (unmaintained, not working)
  • Others
    • GtkOSXApplication 2.0.1 fixes (by Eric Le Lay, bug 1759)
    • FreeBSD network interface detection (by Olivier Brisson, bug 1730)
    • Upload gpodder.net episode actions in batches (by Stefan Kögl)
    • Added support for the Opus Audio Codec (by Bernd Schlapsi, bug 1734)
    • Avoid bugus error messages on download (bug 1731)
    • Util: Parse HH:MM-style strings with HH > 59
    • Vimeo: Use video title as download filename
    • Extensions API: New on_episode_playback() function
    • YouTube: Fix directory search (bug 1760)
    • Model: Day, month and year for custom filename (bug 1768)
    • Cover downloader: Add 4-second connection timeout
    • Improved offline mode / online detection (bug 1730)
  • Translations
    • Spanish (Adolfo Jayme Barrientos and Simó Albert i Beltran)
    • Italian (Maurizio Ballo and Alessandro Campidori)
    • Persian (Iran) (Mohammad Dashtizadeh)
    • Portuguese (Sérgio Marques)
    • French (bttfmcf)
    • Chinese (China) (luojie)
    • Portuguese (Brazil) (Rafael Ferreira and Dudu Maroja)
    • Spanish (Mexico) (Rigoberto Calleja)
    • Polish (Filip Kłębczyk)
    • Galician (Gonçalo Cordeiro)
    • Norwegian Bokmål (Jim Nygård)
    • Portuguese (Joel Calado)
    • Hebrew (Amiad Bareli)
    • Dutch (Arne Stierman)
    • Basque (Asier Iturralde Sarasola)
    • Greek (Atheos)
    • Kazakh (Baurzhan Muftakhidinov)
    • Swedish (Daniel Sandman)
    • Czech (Czech Republic) (David Štancl)
    • German

As always, a detailed changelog is available at gpodder.org/changelog/3.5.0.

Download: gpodder-3.5.0.tar.gz
md5sum: 85237ee3978eedf7abcee37d68c55633
sha1sum: 127c557309b16db470ad34c538582f203c3ec768

For packages in distributions, see the downloads page.

Thanks to all users who supported the gPodder project by providing bug reports, patches, documentation, feedback or donations / Flattrs.


Progress report from the February 2013 hack day

Our monthly Jour Fixe for gPodder hacking at the Metalab Vienna has taken place on the 16th this month.

We've been mostly working on fixing several bugs related to extension scripts on different platforms and we have been discussing the initial plans for gPodder 4. Right now, there's some code in the "cuatro" branch in Git that features a new, faster podcast feed parser. The extension fixes will be included in the next release.

Next up: The March 2013 Hack Day (already on the 9th).


mygpoclient 1.7 "Nuisance Value" released

Another catch-up release of mygpoclient is out, bringing you new features and an improved syncing experience. The top contributors of this release are Stefan Derkits with 12 commits, and Stefan Kögl with 5 commits. New features include:
  • Additional attributes for simple.Podcast
  • Getting top tags and podcasts of a tag (public API)
  • Added support for podcast and episode data requests
  • Support and unit tests for the settings URLs
  • Raise MissingCredentials exception in SimpleClient
  • Accept episode actions with "flattr" as their type
  • Various fixes, clean-ups and unit test improvements
It is recommended that all users upgrade to this new version of mygpoclient - it will become mandatory in a future gPodder release (or at least mandatory when gpodder.net syncing is used)

Download: mygpoclient-1.7.tar.gz
md5sum: fc4e237c40eba0733a362949d304974c
sha1sum: 9efb1d07b75b13bfa1ea7c644505ebef14fabb26

More information can be found on the mygpoclient homepage and in the cheeseshop.

Android Client "Detlef Gpodderson" 1.0 released

(This blog post comes from the Detlef team, who just finished their one-semester project at University to create a gpodder.net client for Android.)

After almost 800 hours of work, attending hackdays, thousands of lines written (and thousand of lines deleted again) it's finally done: Version 1.0 of Detlef Gpodderson has been released on Google Play.

Excuse me, but who is Detlef?
Detlef is the code name of a gpodder.net client for Android 4+ devices. It was created by a team of 6 students during a university course on software engineering tutored by Stefan (@horrendus) and released under the terms of the GNU GPLv2 license.

800 hours of work may sound like a lot for such an app - but the course focused in large parts on project management, organisation and documentation. So the 800 hours did not go exclusively in coding as one might think.

The resulting software forms a good basis for further development, and contributions are very welcome!

Sounds nice, but what can I do with it?
Detlef Gpodderson is designed as a dedicated client for gpodder.net for devices running Android 4.0 or newer. Here's what you can do with this first release:
  • Synchronize podcast subscriptions (two-way)
  • Discover new podcasts from within the app
  • Listen to podcasts using the integrated media player
  • Create playlists, filter episodes lists and much more
You want to contribute? Great!
Everybody can contribute to Detlef, and you don't even need to be able to write code to help us! Here are some ideas what you can do to help us out:
All that’s left to say is: Have fun with Detlef, and send us some feedback! If something does not work in this first version, please file a bug or even send a pull request - we are sure that we can iteratively improve the application to a point where it's the best podcatcher on Android.


gPodder @ FOSDEM 2013

Several members of the gPodder Dev Team have attended FOSDEM 2013 last weekend in Brussels, Belgium. In addition to meeting with many developers and people from the community, we were also able to meet Eric (of gPodder-Mac OS X fame) and taste the wide selection of beers in Belgium.

It was also a great opportunity to try on the new gPodder T-Shirts (a very limited edition ;):

You can find more photos of the FOSDEM weekend in Brussels on Flickr.

The next physical meetup will be the Hack Day February 2013 in a bit more than one week. I hopefully get around to do some outstanding pull request merging until then. If you have a change and want to give it a little push, feel free to ping me (thp) directly.


Progress report from the January 2013 hack day

Another meetup in Vienna has been held this month to push forward some parts of gPodder (both the client, the web service as well as related projects such as the library and Detlef gPodderson).

There have been several topics that we discussed and worked on:
  • thp demonstrated his work with the new podcastparser, the C implementation of it, we discussed how to use it in the future
  • brot worked on bug 1441, closed as duplicate of bug 1324
  • brot worked on bug 1751, closed as won't fix as there's a workaround
  • brot worked on bug 1749
  • skoegl started work on a "Stream to Sonos" extension for the gPodder app
  • skoegl fixed some bugs in the mygpoclient library
  • horrendus requested an Ohloh organization for all gPodder projects
  • horrendus fixed a bug in libmygpo-qt (using cgdb)
  • moe presented Detlef and continued working on its implementation
  • thp removed the time tracking field in our Bugzilla (we didn't use it)

moe from the Detlet project (an open source gpodder.net podcatcher for Android) demonstrated their Android Podcatcher in the Android Emulator:

Thanks to all for attending, and see you at the February 2013 Hack Day!


Flattr support in gpodder.net

Flattr support has just been added to gpodder.net! Flattr is an easy way to support content creators by giving small amounts of money for content you enjoy. gpodder.net makes flattring podcasts even easier for listeners, publishers and client developers.

When you connect your Flattr account in the gpodder.net Flattr settings, Flattr buttons will show up for all podcasts and episodes that accept donations through Flattr. You can also set up auto-flattring played episodes -- this will automatically flattr all episodes that you've listened to on a supported client (currently gPodder and Amarok). The directory contains a list of all podcasts that accept Flattr donations.

When a podcast feed includes a payment URL gpodder.net will enable flattr buttons and auto-flattring for it. The publisher pages will indicate if gpodder.net has detected payment URLs in a podcast feed.

Client Developers
When your podcast client supports sending episode actions to gpodder.net it is now automatically Flattr-enabled! When a user enables auto-flattring on the website, all played episodes will automatically be flattred by gpodder.net.
You can also make use of the Settings API to let the user edit Flattr settings locally. The documentation contains a short summary of the Flattr support.

Follow @gpoddernet for new Flattr-enabled podcasts or visit our Flattr directory regularly.

See also the announcement from Flattr.


gPodder 3.4.0 now available for Windows

Builds of gPodder 3.4.0 for Windows are finally available after a short delay of a few days:

Installer for XP/Vista/7: gpodder-3.4.0-setup.exe
md5sum: 53506d61ca779b4bb1ad0f3b7c5a8973
sha1sum: 745f67337e719744f21f6fc460c8f9d97e637938

Standalone .ZIP package: gpodder-3.4.0-win32.zip (SF.net Mirror)
md5sum: e04ad0b2401205b218afc9150904e68e
sha1sum: 852b2560612ec51409eba1dd255429dce34cbca2

As always, please check the downloads page for up to date information on the most recent builds. For details on this release, see the official release announcement.