Banshee shoutcast extension

perjantai 28. elokuuta 2009

Both extensions released on code.google.com

This week as planned I gave a little facelift to streamrippers configuration dialog which now looks a lot better. As I was doing this I noticed some little things that should be done to fetchers dialogs aswell. For example the dialog didn't have a "header-label" and the name of the service to which we're going to perform the search is mentioned below the header.
Both extensions have finnish translations now.

I created pages for both extensions to code.google.com. Links to the pages (also found in links-list):
http://code.google.com/p/banshee-radiostationfetcher/
http://code.google.com/p/banshee-streamripper/

perjantai 21. elokuuta 2009

Fixing and wrapping stuff up

I was away for weekend and when I got back I had a nice surprise waiting. Bertrand had reviewed my code, fixed some things. I am especially thankful for help with my mangled autotools-scripts. Yes they still give me headache. These fixes were for stationfetcher and I could easily apply the fixes for streamripper too.

The blog has now two more links for tarballs that you can download and install. The installation process is somewhat usual:

./configure --enable-user-extension
make
make install

There isn't anymore too much time anymore. Actually a bit more than a week. I think in this time I will add finnish translation to both extensions and have streamrippers configuration dialog more like it should be by gnomes design-documentation. One more thing is to start thinking about a video-presentation that I have to make about this project.

perjantai 14. elokuuta 2009

Some more fixing

This week I cleaned up gitorious. There is now two separate projects for the extensions. The old shoutcast-extension project isn't used anymore.
Streamripper can now be installed with ./configure --enable-user-extension && make && make install -commands. Stationfetcher however needs some work with this.
The exception handling of stationfetcher is improved now and is a bit more mature by design. It seems I have got rid of all crashing now and the occasional UI mess-up.

I will continue with stationfetcher and autotools. Then make tarballs available.

sunnuntai 9. elokuuta 2009

Testing, fixing, refactoring...

This week I've been fixing the code. I gathered list of things that have been checked out:

- Streamripper-extension used to check whether or not currently listened source is recordable. This check is moved to "track-level" since radio streams can appear on same songlist with "regular" media files.
- Console.WriteLine-commands are moved to Hyena.Log.Debug which is the way to go with printing lines here.
- Debugging messages have also been checked and made sure they are consistent.
- All UI-messages are also checked that they are properly formatted and everything fetched from "Catalog".
- Radiostation fetcher's statusbar-messages are now consistent.
- All code that used threadpool is changed to use banshee's own scheduling.
- UI isn't updated anymore from separate threads. Something I didn't know I shouldn't be doing. Thanks again for the community for straightening me out.
- Xiph-query is now being done when the dialog is being constructed. No more slow first query (see previous text).

What next? I didn't clean gitorious yet. Autotools-stuff needs to be checked. I suspect dependencies aren't correct and make install won't work as it should.

sunnuntai 2. elokuuta 2009

First version of Banshee.RadioStationFetcher in gitorious

The user interface is now rewritten and imho integrates better with banshee now. As planned stations can now be fetched from www.xiph.org too. The fetching is handled rather differently with xiph - all stations are fetched first and searching is done locally. This makes first query slow but after first one it's blazing fast. Maybe query should be done when the dialog is first shown so there would be less latency and annoyance for the user. Making new source available was kind of fun to do so maybe I try to add atleast one more. Live365 sounds promising...

Anyway I feel now that this extension wont see anymore dramatic changes. I should start testing both extensions heavily now and fix all the small bugs you don't see before you really use the software. I also should start thinking how well my little extensions are packed and how to make things easy to anyone who might start using these. One more thing is to clean gitorious from stuff I don't use anymore.

lauantai 25. heinäkuuta 2009

Streamripper configuration

Streamripper is now configurable. Configurable features are setting the output directory for ripped files and enabling automatic importing of new songs to media library. Changes made are pushed to gitorious. I believe this streamripper-extension won't see too big changes anymore, from now on it will be testing and bug-fixing.

The shoutcast UI part however needs to be re-written in my opinion. As it is it cannot be easily extended to support other sources than shoutcast. Also having separate UI for internet-radio and for shoutcast is kinda stupid.

New plan is to refactor the name of the whole thing to something like Stationfetcher and have it appear on Tools-menu. Now it would be easy to just add new sub-menus for other stream sources. I'd like to add support for xiph.com which seems to offer quite nice selection of streams. I estimate this to take a week.

lauantai 18. heinäkuuta 2009

Streamripper-extension in gitorious

As planned streamripper-extension is now separated from shoutcast-extension. The new project can be found in gitorious (under the same project). Streamripper-part is also now removed from shoutcast-extension and can also be found in gitorious under a branch called 'no_streamripper'.

Once compiled and installed the usage of the new extension is simple. In Banshee just click tools -> Streamripper -> Activate streamripper to start ripping a radiostream. Now ripped files automatically go to Music library.

There's some work to be done for this extension: the output folder and disabling auto-import should be configurable, if stream listening is stopped, ripper just keeps on ripping and one particular line needs a face-lift ;)