Same Artist with Different MBIDs: MusicBrainz, LastFM (and Spotify)

TL;DR ==> Skip the Introduction and scroll to “The Actual Tests”

Introduction

One of the cooler (to me) features of my PopRock app is it combines related artists for some of the charts–if the same artist is in multiple bands, for example, like Ronnie James Dio was in Dio, ElfBlack Sabbath, Rainbow, and so on. That was fun to work on and most triumphant when I finally got it to work.

MusicBrainz and LastFM, however, have provided me with a somewhat similar challenge. In my first post about using the MusicBrainz and LastFM APIs, I mentioned that Alice Cooper has two MBIDs–one for the band (1964-1975 according to MusicBrainz) and another for the lead singer cum solo artist (or is it “solo artist née lead singer”?). I’ve stored those two MBIDs, along with several others, in a python list that I loop through to get data about multiple artists. I wasn’t yet ready to store this data in my database, so I was saving each artist’s daily data in a JSON file (which Python makes so freaking easy, by the way!) like so:

artistNameFor_file_name = artistName.replace(‘ ‘, ”)

dateFor_file_name = time.strftime(“%m-%d-%y”)

artistJSON = json.dumps(artist, indent=4)

f = open (‘data/’ + artistNameFor_file_name + ‘_‘ + dateFor_file_name + ‘.json‘, ‘w’)

f.write (artistJSON)

f.close()

It works totally awesome — even for artists with unusual characters in their name such as Mötley Crüe. It doesn’t work so well for artists with exactly the same name such as Alice Cooper and Alice Cooper. In the latter case, data for the second Alice Cooper overwrites the file and data for the first Alice Cooper.

I could use the ‘a’ (instead of the ‘w’) argument to append it but for it to merge the data how I want it* isn’t really worth the time and effort it would take to write that script. What I’ll do, instead, is write the PHP for putting both sets of data where it belongs in my MySQL database which I have to do anyway. What I noticed while writing that previous post was LastFM isn’t a pretentious wiener like the guys who work for Championship Vinyl in High Fidelity (and MusicBrainz contributors). LastFM uses only one of those MBIDs for  Alice Cooper. I just have to test both MBIDs again to see which one — then I can write … wait … I could add some … other string from an artist’s data to the filename … OR I could include the time in addition to the date … and that might be helpful for … something else as well. But, as I said, I need this PHP written as well.

Back to the primary topic:

I need a script (and maybe a … are they called “lookup” tables?) that knows to put data from both Alice Cooper MBID … crap … no, wait … because these are hard, quantifiable (yes, I know I’m mis-using that word … be thankful I didn’t say “mis-abusing”) numbers I can add them! That’s the whole purpose behind getting LastFM data in the first place!

I am hoping Joan Jett is equally easy. For some reason, MusicBrainz contributors have her under Joan Jett and Joan Jett and the Blackhearts. I have no idea why. She’s never done anything without the Blackhearts. This is not a Tom Petty and Tom Petty & the Heartbreakers situation … aw, man! … I also need to deal with Tom Petty.

Spotify has one artist id for all Alice Cooper albums as well as Joan Jett. They have different, separate ids for the two Tom Petty entities which I’m okay with (and I’m sure Spotify is relieved). There are other issues with Spotify both odd but whatever as well as inaccurate but … that’s a whole different, well, issue.

The Actual Tests

TEST #1 – Part 1

First, I’ll demonstrate the “problem” by showing the response to a request to MusicBrainz for the Alice Cooper group’s Release Groups (a list of albums containing all the different releases–like other countries, etc.–of that album).

ACgroup_MB_ReleaseGroups.png
The Alice Cooper band MBID data includes 25 release groups (for only 7 “real life” albums! Still only 8 if you include Greatest Hits).

OMG! I just noticed there is a “type” property with a “Group” value! Woo-hoo! That is going to make everything sooooo easy.

ACperson_MB_ReleaseGroups.png
MusicBrainz has 25 release groups for Alice Cooper as a solo artist. Exactly the same amount as the group which is odd considering he has 20 studio albums (which doesn’t include live albums or compilations). That … is weird.

I notice, with a smile, this MBID has a “type” of “person” key/value pair.

I have to note that the Alice Cooper discography Wikipedia page combines solo artist and group lists for studio albums, live albums, and compilations but separates group and solo artist singles. Alice Cooper is just a mess. 😉

Important part: Each MBID has 25 albums for a total of 50. Yes, I read all of that and know each MBID has a different list of albums.

TEST #1 – Part 2

Artist Info from LastFM using the person vs band MBIDs

ACcombined_LastFM_artistInfo.png

The LastFM response using the person MBID gets me artist info for the same MBID.

The LastFM response using the group MBID redirects me to the artist info for the person MBID and the data is the same — note the listeners and playcount values.

Moral: I only need to use one MBID for getting info from LastFM — the person MBID.

Let’s try Joan Jett.

JJperson_MB_ReleaseGroups.png
MusicBrainz has 9 release groups for Joan as an individual.

I’m amused they have hometowns (“begin_area”) for both Alice (Detroit) and Joan (Wynnewood) but for the Alice Cooper group (Pheonix) and JJ & the Blackhearts (Los Angeles) they have the city in which the band was formed.

JJperson_MB_ReleaseGroups.png
MusicBrainz has 25 release groups for Joan Jett and the Blackhearts!

Joan Jett & Company isn’t quite as simple with LastFM.

JJperson_LastFM_artistInfo.png
Joan Jett individual MBID stats from LastFM

Joan Jett the person is, apparently, similar to neither the artist who inspired everything about her (Suzi Quatro) nor her contemporary, Pat Benatar.  Okay.

JJband_LastFM_artistInfo.png
Joan Jett and the Blackhearts MBID stats from LastFM

JJ & the BHs are, unsurprisingly, similar to her old band The Runaways and, well, Lita Ford (lead guitarist for The Runaways).

Neither “solo” or with the BHs (and those should be, in truth, the same MBID) is similar to Evil Stig (a band for which JJ sang 100% the lead vocals, not just some as she did with the Runaways).

Most importantly and irritatingly, the MBIDs have different values for listeners and playcount. I can still simply add them but this requires me to fetch each MBID in Last FM separately (for the time being, while I’m using my Python script to put the responses into JSON files).

Update: I’ve made a little lookup-ish table.

queryForMBID.png

I know I don’t need the name columns, but it helps me. This is for artists that are identical in the real world to make sure data from LastFM goes where it should — Alice Cooper has all Alice Cooper stats, albums, and tracks and Joan Jett gets all her stuff.

Speaking of Joan Jett, I am about to–any second now–make a lookup-ish table for related artists so I don’t need my “manual” group charts below.

steveTaylorGroup.png
This chart uses arrays containing an artist and groups for which they were the only lead singer.

On a related note, I’ll make a “related albums” table for artists who were only on some of a band’s albums — for example, any Dio-related query knows to get only those Rainbow and/or Black Sabbath albums for which he was the lead singer.

An issue that will still remain is albums for which an artist is only on one or some of the songs:

  • My albums table won’t accept albums if the artistID exists in the artist table which means neither The Rocky Horror Show nor The Rocky Horror Picture Show get inserted because they’re cast albums with various singers–Meat Loaf‘s artistID won’t match the artistID for those albums and “Various” or whatever isn’t in the artists table.
  • Ted Nugent‘s Free for All album doesn’t display for Meat Loaf queries despite Loaf singing some of the songs — he isn’t the “artist” for the album. Hmm … I should look and see if he shows up in any of properties for that album in any of my data sources … my goodness but this app is becoming wicked cool wicked fast!

Footnotes

*Once I increase my MongoDB and CouchDB knowledge, perhaps it won’t be such a time-consuming task.

Advertisements

Drag & Drop Rock & Roll

I really need to decide which in my list of “coming soon” features for myRockinApp will get my full attention. One is dragging and dropping an artist onto a chart to compare their popularity over time (in two different ways) but … rats … that’s not really what I just took a bunch of screenshots to talk about … the other is this … either a simple array or — more fun — a groovy algorithm to combine multiple artists that are actually the same artist … like all the versions of

Mike Knott that include but are not limited to …

knott.png

  • Mike Knott
  • Michael Knott
  • L.S.U.
  • L.S.U. (Life Savers Underground)
  • Life Savers

Or Miss Joan Jett

joanJett.png

Finally … FINALLY … it looks like they have all her shizzle on Spotify.

And the artist that got me started thinking about this, Ronnie James Dio

dio.png

I want to make something that will grab me just the Rainbow or Black Sabbath albums on which he is the lead singer. I’d also like to write something that gets me just the songs off other artist’s albums like Roger Glover‘s Butterfly Ball and the Grasshopper’s Feast as well as Kerry Livgren‘s Seeds of Change.

Of course, making this drag & drop, too, is probably the easiest and least frustrating way to do this … and … make a way to save the dropped artists as a group the user can name something like “Dio and Friends.”

I’ve found several promising looking bits of documentation and tutorials for jQueryUI and using that with AJAX, etc.

Note to self: Add Elf to database.

I’ll likely do this first because the multi-line charts sound like they’re gonna be quite a bit more difficult.

petty.png

And I need to find out why so many albums have no art like Tom Petty & the Heartbreakers above. Meat Loaf has that issue, too.

Dream Journal #1-2

Monday:
Binge-watched Big Love over the weekend resulting in a dream where I was making out with Nicki in our car when a pack of werewolves attacked the car. I woke up before learning our fate.

Tuesday (last night):
I was a prospect in the Sons of Anarchy MC. Wherever we went, my ex-wife (to whom I was married for approximately one year as a teenager thirty years ago) was there. Not stalking me — just coincidentally doing something nearby. I kept thinking she was going to make fun of me for being in the MC.

We (SAMCRO) kept trying to leave on a ride but, each time, somebody had to run back inside for something. Not for guns or anything but, like, to pee or grab something to eat. By the time they’d get back outside, somebody else had run in because they obviously had a second.

Eventually, I was hanging out with Joan Jett. Normally, when Joan Jett is in my dream, we’re totally a couple but, in this dream, she was totally the rock star and I was totally just a fanboy. I started talking about how much I loved her voice and that adorable accent she has even when singing and she totally blushed.

I made Joan Jett blush.