Join GitHub today
GitHub is home to over 31 million developers working together to host and review code, manage projects, and build software together.Sign up
With a switch from OS X to Linux, I was missing my favourite RSS reader : Vienna RSS. On the other hand, gPodder had already proven invaluable to me, so I thought of reusing parts of it.
I turned out even better: gPodder does already all I need. Well, most of it ;-) :
- displays HTML shownotes (basically the content of feed entries);
- doesn't remove episodes once they disappear from the feed (downloaded episodes, at least);
- is a well written and commented code base, suitable for a novice python programmer like me;
- keeps episodes in a simple sqlite database, so that I can import my 3 years worth of feed entries from Vienna RSS.
So, let's hack it:
- the show notes should be embedded in the main window instead of being in a dialog; copy-paste a bit of code to implement this;
- gPodder doesn't like it when feed entries don't have an attachment; fixing this breaks assumptions here an then in the code, but it's not too bad;
- it also enforces an upper limit on the number of episodes kept in a feed. I fixed this (or was it already there ?) by not pruning locked channels and locking all channels.
- the list of new episodes for download may not display episodes without attachments ; deleting an episode without attachments shouldn't warn you about deleting files ;
- scalability : there are >5000 episodes in the database now, and counting; displaying the "All Episodes" channel is unfeasible and updating 70+ channels takes a lot of time (~5 minutes);
- profiling didn't help (can't figure out where all the time is spent !);
- recompiling python, gtk, pygtk with -O2 helped a lot;
- updating feeds in parallel proves a huge time saver (~30s for 60 channels now). I was under the impression that sqlite won't support multithreading, but maybe thanks to the global interpreter lock in python, no problem.
- marking episodes as old when they have been for 2s in the shownotes is quite handy.
- adding a channel for unread (=new) episodes and adding the new episodes count to the pills in the channel list is quite confortable;
"You know what ? I'm happy !" Now I can read the news on linux...