Development/Summer of Code/2016/ListenBrainz

From MusicBrainz Wiki


ListenBrainz is one of the newest MetaBrainz projects. Read more information on its homepage.

Getting started

If you want to work on ListenBrainz you should show that you are able to set up the server software and understand how some of the infrastructure works. Here are some things that we might ask you about

  • Show that you understand the goals that ListenBrainz wants to achieve, which are written on its homepage
  • Install the server on your computer or use the Vagrant setup scripts to build a virtual machine
  • Create an oauth application on the MusicBrainz website and add the configuration information to your ListenBrainz server. Use this to log in to your server with your MusicBrainz details
  • Use the import script that is part of the ListenBrainz server to load scrobbles from last.fm to your ListenBrainz server, or the main ListenBrainz server
  • Use your preferred programming language to write a submission tool that can send Listen data to ListenBrainz. You could make up some fake data for song names and artists. This data doesn't have to be real.
  • Try and delete the ListenBrainz database on your local server to remove the fake data that you added.
  • Look at the list of tickets that we have open for ListenBrainz and see if you understand what tasks the tickets involve
  • If you want to, see if you can contribute to fixing a ticket. Either add a comment to the ticket or ask in IRC for clarification if you don't understand what the ticket means

Ideas

Submission API compatible with Last.fm scrobblers

Proposed mentors: ruaok, alastairp, gentlecat
Languages/skills: Python
Forum for discussion

Right now ListenBrainz has its own API documented at https://listenbrainz.readthedocs.org/en/latest/. It'd be great if there were an additional web service layered on top of that one which spoke the Last.fm API, so it could be used as a proxy for existing Last.fm clients (ideally submitting the listens to both sites).

Statistics

Proposed mentors: ruaok, alastairp, gentlecat
Languages/skills: Python
Forum for discussion

User profiles on ListenBrainz are basically just a flat list of all your listens right now. We need to generate stats based on these listens: top artists (artist credits?), albums (release groups might be more useful than releases), recordings (works?), etc. Besides users, stats for the artists themselves would be nice (what was already mentioned, but as an aggregate across all users). This should be accomplished by streaming all of our data to Google's BigQuery and then building the needed systems to create statistics from that.

A way to associate listens with MBIDs

Proposed mentors: ruaok, alastairp, gentlecat
Languages/skills: Python
Forum for discussion

Last.fm is broken because of the terrible way it handles metadata (artists with the same name are jumbled into a single page; at the same time, there are often multiple pages for the same artist/album/track due to spelling variations). ListenBrainz is smarter by taking advantage of MBIDs. But there needs to be some sort of interface for identifying listens as being for a particular track (or recording) MBID. This could allow the user to identify an album they listened to on Spotify as the same one they listen to in iTunes a few days later. Then they wouldn't remain separate artists or albums in the stats due to differences in metadata alone.