After hacking for a while on the beforementioned Jamendo helper KTorrent script and learning about Libre.FM I got a great idea!
How about if we made not only a central system to promote all free music, but also to make all the free music available to users/listeners in a more natural and easy way and at the same time lessen the load and costs of the netlabels?
Well, I have a plan and I think it could work!
Because I'm quite busy lately, I'll just quote my own e-mail that I sent to the Libre.fm mailing list with my battle plan in it:
I've just recently learnt about Libre.fm and it made me think about the possibilities…
Because this will be a longer e-mail, I'll try to put some structure in it. At first I'll talk in short about what I imagine Libre.fm could provide that Last.fm doesn't (and couldn't), then show you the big picture and at the end a detailed example of a real-life use case.
Libre.fm and Downloads¶
One thing that Libre.fm has that Last.fm didn't (and couldn't by this day) is access to all of the music it promotes and streams. It would be a shame to let this wonderful opportunity pass us by!
What I propose is to have next to every album that is promoted on Libre.fm:
- a direct HTTP/FTP link to the download
- a torrent or magnet link to the album
The direct download link was proposed already, from what I gathered from IRC, so I'll concentrate on the latter idea.
The idea behind having a BitTorrent link – either as a torrent link with Libre.fm running a tracker or better yet a tracker-less magnet link – has many positive side effects.
Firstly it would shift the web traffic from the indie net labels (and Libre.fm) towards the users, which would lower the hosting costs. A possible downside would be that the net labels wouldn't have their own track then on how many people downloaded the album, but a) since it's under a copyleft license, the users could share it otherwise anyway; and b) they could always check Libre.fm for that data (via API?).
Secondly the fact that it was handled via P2P would mean that even if a net label went away, the albums would still be shared. Here the magnet link would IMHO fare even better then a tracker, in case Libre.fm gets into trouble (knocks on wood).
The Big Plan (TM)¶
Of course, just having a direct download and a P2P link is a nice touch, but it's nothing really revolutionary. But using the Libre.fm API to extend this idea, Libre.fm could bring the music directly to the user's fingertips and ears with minimal effort from the user him-/her-self.
What I imagine is that by using the Libre.fm API integrated into music players and P2P clients we could make access to music a lot more natural:
- Let's say the Jimmy listens to a music stream either in the browser or favourite music program.
- Jimmy likes the current song and wants to check out the album, so he clicks on the "download" button.
- Automatically his computer (or other device) downloads the album and puts it into his music collection, without bothering him about it.
- When Jimmy goes offline he can still enjoy the music, without bothering too much where, how and using which protocols his got his music.
So, from Jimmy's point of view, he would just click (or drag and drop or whatever) the download button and that was it!
Technicalities of the Use Case¶
Here's how I imagine the above use case would work in the background (be warned, I'm not much of a coder!) with already existing technology:
- Jimmy launches Amarok and tunes into the Libre.fm plugin to check his recommended artists.
- When he hears something he likes, he clicks the little "download" button in Amarok.
- Amarok uses the Libre.fm API to check out the torrent/magnet link and uses the user's default BitTorrent application to open it – let's use KTorrent, because I'm somewhat familiar with its scripting API.
- KTorrent has a script implemented, which would check where the torrent/magnet link came from and/or which tracker, and because it came from one of the free music net labels, it would automatically apply the user's settings for it (e.g. download to the music collection folder, any bandwidth restrictions, add it to the appropriate torrent group etc.).
- At the same time the same KTorrent script would check if there's any seeds available. If there aren't any (for a longer period of time) it would trigger a direct download, which it would get from the Libre.fm API, uncompress the album (if needed) and move its contents into the music folder accordingly. Then it would start seeding that same album, so the next user(s) could already use the benefit of P2P.
- Amarok would automatically notice the new album in its local collection and Jimmy would see it there with artwork and all.
For this to work optimally, all the albums in the torrents would have to be ready for use the moment they finish downloading – e.g. not compressed, all tracks (including artwork and license) in a folder.
I imagine we could stretch this even further, so that even if the user didn't start the download from a Libre.fm page or service, the system (e.g. browser, music player, BitTorrent client or all of them) could check via API if there is a torrent/magnet link available on Libre.fm for the album. Maybe it would be plausible (I doubt it though) even to get BitTorrent clients to upload torrent/magnet links to Libre.fm.
Of course, it shouldn't be limited only to KDE software – that's why I think it would be a great idea to use Libre.fm and its API as the central intermediary for it all.
I know this is quite an enthusiastic idea, but I'm already working on something similar for Jamendo using Amarok (the plugin's there) and KTorrent (I'm writing the script) – and it seems possible to do!
So far the biggest problem I encountered was that KTorrent is not forwarding some methods that I need to their API, but the devs already have that planned.
Of course, doing this on such a grand scale as I propose, would be more difficult, but I think it'd be worth it! As I said, although I'm not much of a coder, I'll be happy to at least write the Amarok and KTorrent scripts in order to make it work.
So… what do you think of it?
Cheers, Matija "hook" Šuklje (a.k.a. "silver_hook")
hook out → studying, going to bed