Ted Nugent Is A Sweetheart

I know because I’ve met him. He was kind, cool, gentle, generous and awesome. I’ve known and am related to others who have met him and they feel the same. Maybe it’s because we’re all from Michigan. People are just nicer and more laid back there.

Also, as I’ve been reminded the last couple days while listening to some records I haven’t played in a long, long time — how much he rocks like nobody’s business when he’s on his game.

In honor of his upcoming August 20 show here in the Tampa Bay area, here are some stats from my little web app. I have one set of PHP scripts that daily and weekly grab data from the Spotify WebAPI. I track popularity scores for artists, albums, and tracks as well as followers for artists. Followers for artists is 99% boring because they just continue upward so that line chart on the left side of Figure 01 represents what most of them look like. Boring. I have another set of scripts written in Python that grab data from Last.fm using the MBIDs from MusicBrainz.org.

Last.fm can only grab one thing at a time which sucks hardcore. With Spotify, sometimes you’re limited to 20 or 50 things at a time but at least you can get 20-50 things at a time! The Python scripts take for-ev-er. All of that data then goes into various tables in a MySQL database.

The app’s … can I call it an app if it’s a web app? Or is it just a regular old site albeit a data-driven site? I call it PopRock because it started tracking only popularity on Spotify. The home page is a list of the artists I track — a total of 326 as of this moment.

Many were chosen because they were either nominated for induction to the Rock and Roll Hall of Fame, possibly inducted to the Rock and Roll Hall of Fame, or there are countless articles about the fact that they are continually snubbed or overlooked by the Rock Hall. I was curious about whether their popularity was affected by such announcements.

nearPlaycount.png
Figure 00: PopRock’s home page with artists sorted by Last.fm playcount. The default order is A-Z but users can sort by Popularity, Followers, Listeners, and Playcount. You’d be surprised how different the table appears when you change it.

Others were chosen because I’m interested in them, there is or was a movie coming out about them, or they might die soon and I am so pissed that I didn’t have David Bowie or Prince in when they died. I can’t believe I didn’t already have them in given how much I love each of them–especially Bowie.

All of the artists in Figure 00 are in Spotify and some also get data from Last.fm. I really mean only some — it’s just pure luck or coincidence that sorting the table by playcount to see which artists are “near” Ted Nugent brought nothing but artists for which I get data from both places. Originally, I was just going to screen grab five above and five below Nugent but I stretched it since going another 1 or 2 brought in both Joan Jett and her one-time bandmates, Evil Stig.

There is a growing list of artists with data only from Last.fm and I am in the process of making a page just for them. Integrating both data sets into every “feature” has proven not only sometimes difficult but it tends to break stuff for days — the damage sometimes compounded because I may have missed it and kept coding before I noticed it.

Writing the AJAX for the sorting was challenging enough without … changing what data is displayed and then changing my mind again.

nugent_artistChart.png
Figure 01: The main or home page for this artist. A work in progress.

Here are some closeups. Neither of the Spotify-based line graphs give any real, useful information, but they were great for learning Javascript, jQuery, and D3 as well as PHP and Python. There’s still a lot of work to do as I want to make almost everything on the site interactive which will increase it’s usefulness a ton as well as the “fun factor.”

nugentSummary.png
Figure 02: I really don’t like those default “pill boxes” in Bootstrap.

Artist and album cover art images come mostly from Spotify. For the few that are Last.fm-only come from some art archive something or other that rarely works so if I have an album from MB/LastFM that isn’t also in Spotify, I just hunt it down with a Google Image search because life is too short.

Nugent began with The Amboy Dukes, a band that was equally cool yet sounded nothing like his eventual solo work. Here are their stats.

amboyDukesSummary.png
Figure 03: And I need to do something about that dynamic title, don’t I?

Normally, the Spotify Followers graphs all look like Nugent’s below, no matter what the range is in the Y axis so I was surprised to see that jump for the Amboy Dukes in mid-April. Also, odd jumps like that usually happen Spotify-wide so I find this one particularly interesting because it didn’t appear anywhere else. What could possibly influence the Amboy Dukes?

nugent_compareFollow.jpg
Figure 04: Spotify Followers for Ted Nugent (left) and the Amboy Dukes (right) made with D3.js

I still haven’t quite decided on a solution for messes like this next one.

nugent_albumColumns.jpg
Figure 05: Spotify popularity for many of Nugent’s albums. Also made with D3.js

My greed for data is never satisfied so I grab data for every edition of every album. So, for artists with relatively few albums it gets far too wide — especially if I ever decide I want to make this mobile-friendly. If you look closely, you can see the last album is cut off — and I have the SVG width at something ridiculous like 2400px. I am considering the following (no pun intended):

  • Putting the SVG in a “scrollable” DIV
  • Making the chart vertical
  • Just purging many of the “duplicate” albums from my database
  • Hmm … just thought of this one … starting with a few and making the rest optional. The user can drag thumbnails from outside the graph and then it’s their problem if it get’s too wide.

Gosh. Darn. His music is so awesome. “Workin’ Hard, Playin’ Hard” is on now. I’m listening to my Wholesome, Calming Ted Nugent Mix playlist on Spotify.

Wholesome Calming Ted Nugent Mix playlist on Spotify
Figure 06: Click here or search for this playlist on Spotify

Speaking of songs, here are his most played albums according to Last.fm and his most “popular” albums according to Spotify.

nugeAlbumsSpotAndLastFM.jpg
Figure 07: Even little things like comparing these two charts are what I love about data.

I love finding out what’s the same and what’s different … whether it’s people, cultures, music charts, whatever. I wish the above two sources had an Insights blog like PornHub. Sex is great and all, but PornHub’s data blog — that’s what really turns me on.

Ted’s charts don’t contain any surprises for the most part. Of course the eponymous debut is #1 on both because it has Stranglehold, followed closely by Cat Scratch Fever (because it’s a masterpiece) then Free-for-All because, I mean, damn … he got a local (then) singer named Meat Loaf for, like, $2 when he was struggling at Motown Records. You’ve got “greatest hits” compilations through both. Hunt Music and Spirit of the Wild stay up there for one reason and one reason alone — the ethereal, magical, amazing, spiritual, ass-kicking, galaxy-rocking song that is “Fred Bear“. I doubt I am alone in being only able to name that one song from either album. Intensities In 10 Cities is a good album and all but it’s probably only there because of Wayne’s World.

Ooh, hold on … “You Make Me Feel Right At Home” is on … How is it that Frank Zappa and Ted Nugent are the only two rockers who use … I don’t know if it’s a xylophone or a marimba … but it’s just perfect.

I’ve never understood the love for his debut solo album. There. I’ve said it. I’m sorry.

I want to say I’m surprised that Love Grenade and Craveman are so close to the top but I can’t speak with any authority because I’ve never bothered to listen to either of them. You know what, I’ll bet they’re high up because people listen to them on streaming … nope, nope … they’re on the LastFM chart … which means it’s more likely those albums were paid for, right?

And now, as I promised earlier … the songs … okay, now, check this out …

tracksSpot_nuge.png
Figure 08: Most popular Ted Nugent songs on Spotify

Normally, on a Spotify list, there are lots of duplicates because you have true music-lovers listening to actual albums but also a lot of people listening to whatever single they’ve heard from some compilation. Figure 08, however, looks like an actual ranking while the Last.fm chart looks like what I’d expect from Spotify.

tracksLastFM_nuge.png
Figure 09: Most played Ted Nugent songs according to Last.fm

All of that is just … whatever … you may, like me, be more curious about the Amboy Dukes. I won’t bother showing their album rankings because a) they didn’t have many and b) you know full well what #1 is as well as #2 and why. In that spirit, I’ve taken the liberty of crossing out the obvious tracks so we can look at the other, more exciting players on the chart.

tracksSpot_Dukes.jpg
Figure 10: Most popular Amboy Dukes tracks on Spotify

How is “Missionary Mary” so low? And where the heck is “Saint Philip’s Friend”? Where, I ask! It turns up here, as I’d expect (see above) on the Last.fm list.

insta_tracksLastFM_Dukes.jpg
Figure 11: Most played Amboy Dukes songs according to Last.fm

If you ever get the chance to talk to Mr. Nugent, conversation with him is more likely to sound like “Why a Carrot is More Orange Than an Orange” than “Wang Dang Sweet Poontang.” Seriously. He’s great.

Ted Nugent was my second concert. Bon Jovi was supposed to open for him but didn’t show.

1984.jpg
Figure 12: Me wearing my Ted Nugent concert t-shirt from the Penetrator tour. I find it interesting that the album cover didn’t use the traditional logo but the shirt did. Wait a second … the album used the same logo as the Free-for-All album — I never noticed!

Until recently (then recently, not now recently) my hair was down to my shoulders. The burnout princess I went to the concert with was less than thrilled about my haircut. Truth be told, so was I. I took the Peter Criss solo album to the barber and said I wanted my hair to look like that. It didn’t.

Here is a playlist of his setlist for that night:

Spotify playlist based on Ted Nugent Setlist from April 27, 1984 in Detroit
Figure 13: Click here or search for this playlist on Spotify

 

I saw him again for the 1990/1991 Whiplash Bash. The Damn Yankees were in high rotation so it was a Ted Nugent/Damn Yankees concert which is the closest I’ve ever been to a Styx concert.

One of the few memories I have of my father is him buying me Nugent by Ted Nugent at … Kmart or something … and listening to it in his car. It was one of those depressing … visits at one of his depressing apartments after my parents divorced.

I think I’ll go see him in August. That, I think, would rock.

Advertisements

All We Need Is Ratio Ga-Ga

ListenersDesc.png
Figure 01: My artist-related data from Last.fm sorted (descending) by Listeners.

I find it fascinating when you think numbers seem to say one thing but beg a question that’s answered with further investigation. Often, statistics are delivered in the simplest way, out of context, and presented in a way to support what the presenter wants to say, not what the data says.

For example, in the last election cycle, a list of questions was being passed around from one group of pollsters to the other. I know this because the first time I heard them, I complained that they were poorly written and their data would be meaningless as a result. Several weeks later, another group called me and when I told the young lady I’d like to re-state what I told the earlier pollster, she said it was impossible I’d heard them before because they’d just started calling people that day. I have to paraphrase from memory and, because I’m naturally honest, I won’t be able to recall it as horrible as it actually was … it was something like, “Do you think Obamacare should be repealed?” or “What are your feelings about Obamacare?” … both with equally bad Likert Scale answers. I told the pollsters it was obvious their poll was written so that no matter who they called, their “data” would say most people hated the Affordable Care Act (also notice they called it “Obamacare”). The truth is nobody likes it but there’s no way whoever presented the data was going to mention how many people thought it was “not enough” instead of “too much” — and they didn’t bother asking.

Anyway … on the other hand, sometimes data is good but could be great in the hands of a super genius data scientist like myself.

I collect data from the last.fm API — Listeners and Playcounts for artists, albums, and tracks. While the data is yummy straight from the oven, there’s a lot of mixing and kneading I can do before baking it that makes it yummier.

Figure 01 shows Radiohead has over 7 million more followers than the artist in second-place, Queen. The difference between 2nd and 3rd place (The Cure) is even bigger with approximately 11 million less. First of all, I can’t believe Radiohead is so popular. Second of all, when I first saw their number of listeners, I immediately asked myself if that resulted in an equivalent landslide of plays.

Maybe it’s cool to like Radiohead so they have a lot of listeners, but nobody actually listens to their music. You know, the guy with vinyl editions of their albums on his wall but if he heard a Radiohead song on the, you know, radio, he wouldn’t recognize it because he’s never really listened to them.

playcountDESCmovement.png
Figure 02: My artist-related data sorted (descending) by Playcount.

The top six and the bottom six stayed exactly the same as did Meat Loaf and the Amboy Dukes. The rest didn’t change much but the big winner in the set of artists I track was Saxon, gaining 4 slots (which, because these artists are merely the union of bands I’m curious about and the Rock and Roll Hall of Fame Class of 2019 still doesn’t tell you much beyond, “Huh, that’s interesting” if even that).

But wait, there’s more.

Playcount might be equally meaningless if — and this is the outcome I was hoping for — the listeners and playcounts were really close meaning a half-billion people tried the  casserole but nobody went back for seconds.

I can already tell that Radiohead fans listen to a motherload of Radiohead music because, as it turns out, their playcount is almost a half-billion. So I wrote a little Python script to find the ratios for me which I could then use for sorting.

ratioDescMovement.png
Figure 03: My artist-related data sorted (desc) by Ratio.

The top five still hold their places. Ozzy drops two places but that’s nowhere near as interesting as Saxon moving up 12 slots, Anvil … freaking Anvil … moving up 11 … Journey losing ten places and … and … Ronnie & the Prophets gaining nine because who can get enough of Dio singing doo-wop?

Let’s talk about Evil Stig (who gained +11) because I have some algorithms-in-progress to take care of this–and other–artists.

listenersCombinedHighlighted.png
Figure 04: Merging numbers for “the same” artists

Once the app is all done, it’ll auto-magically put artists together like Dio, Ronnie & the Prophets, Ronnie & the Redcaps, Heaven & Hell, Elf, and the Electric Elves because Ronnie James Dio (actually, there are some songs for that artist specifically as well) is in all of them. Why not also add Black Sabbath and Rainbow you ask? Because he was only in those bands for some of their albums. The algorithm(s) part of the solution is relatively easy compared to the tedious, manual table-building and table-populating part. Ugh.

RJD (blue overlay in Figure 04) would move up at least a couple slots with his 6-8 bands and Joan Jett would move up at least six with her three.

Unexpected Data Cleaning

I’ve had to get creative with writing SQL queries to start the process of merging my Spotify data and my LastFM data. At first I thought it was going rather well if not very fast. I was definitely exercising my brain and strengthening my SQL and algorithm skills.

I was quite pleased and relieved upon realizing all the releases in a LastFM release-group–as well as all common recordings across them–shared the same Listeners and Playcount numbers.

What does all that gibberish mean? Check out my first post about Using the Last.fm and MusicBrainz APIs.

Think of an album. Any album. I’ll think of 13 by Black Sabbath because that will come up here in a minute. That album is released in multiple countries, even in a single country there are multiple versions of an album such as different covers, deluxe versions with bonus tracks, after a few years the remastered version, and so on. Each unique version is a “release” in the 13 “release-group.” What you and I would call “tracks,” MusicBrainz calls “Recordings.”

Table listing data from Last FM about the Black Sabbath album thirteen.
Figure 01: Data porn in the form of the “13” Release Group.

Anyway, all nineteen versions of 13 (Figure 01) are really all the same album with mostly all the same songs so, thankfully, LastFM gives them the same standard MBID and numbers. I’m relieved because they could have been pricks (as they’re known to be) and said more people listen to the version of “God Is Dead?” on vinyl than on the digital copy from iTunes but–again, thank God–they don’t. See what I did there? With the “thank God”? I am so clever.

Just in case you’re as aroused as I am looking at all the yummy goodness from MusicBrainz in Figure 01, here’s another screenshot.

13_ReleaseTracks.png
Figure 02: Just look at it! My imagination is running wild!

At first, I thought it would be messy kinda like Spotify, so I had Python grab every MB release for which LastFM had data and store it all in a JSON file (so I could review it and plan for my other data science and data visualization needs & wants).

PythonValidation.png
Figure 03: A “valid” release, for me, is one for which LastFM has data. There’s no reason to keep that data and waste time checking all of them every time.

I wanted to merge or at least somehow “link” the Popularity and Followers data from Spotify with the Listeners and Playcount data from LastFM for something resembling easy access. After deciding I only needed one set of stats per album and/or song from each release group, I told PHP to just grab the first release from each release-group for my database. 

python_JustFirstRelease.png
Figure 04: That argument in the if statement came after a lot of time and frustration caused by the fact that I didn’t know some release-groups didn’t have any releases. I know.

I added columns to my current albums table and created an albumsMB table with plans to merge them. To make that easier, I chose to make some temporary, redundant columns rather than convoluted JOINs and sub-queries. Then I made copies of those tables and ran some tests on those temporary copies. I have far too much data I love and am attached to — I am not going to risk losing it no matter how trivial the task is on which I’m working.

I played with two tables. The table of album info from MusicBrainz (below) and my existing table of album info from Spotify.

BS_albumsMB.png
Figure 05: Wherever there’s a Black Sabbath MBID in my albumsMB (album info from MusicBrainz) table, I added Black Sabbath’s Spotify ID. Easy.

I wondered–a lot–whether I really needed more columns from the data like “country”, “disambiguation,” etc. but all my SQL test queries worked so well so easily, I eagerly, perhaps hastily went in the “opposite” direction. I thought it was enough to tell PHP that wherever the album title and Spotify artist ID from the matched, add the album’s MBID to my existing albums table.

I was SO excited. I was finally going to have complete charts–with quantifiable data–for Black Sabbath that included all the Tony Martin era albums Spotify lacks. I was totally going to take screenshots and send them to Tony and he was going to be so grateful and we’d be best buds and I could move onto actual new features and stuff since my data was massaged and merged and yay!

I switched browser tabs to bask in my victory.

BS_albumsPopList.png
Figure 06: This page has things I’ll fix and temporary stuff I’ll remove once everything works.

I didn’t scroll down so I didn’t see this (Figure 06) whole thing. I didn’t notice there were actually three albums with LastFM data. I thought I’d not yet added code to the query that should populate the Listeners and Playcount columns but when I checked, I saw it was there and should be working. I don’t know which I saw first — those three rows with LastFM data or … this …

BS_albumsCropped.png
Figure 07: The albums table of Spotify album info. Only three rows received a MBID.

I was more confused than frustrated already by all the missing data in the albumMBID column when I noticed the two tables also contained very different albums.

Later: I wonder how the releases are ordered … but I can’t control the order they come in … regardless of how they are in their home database … I may have to use some surgical precision … with certain properties.

I should have anticipated that Tony Martin’s album MBIDs wouldn’t have a place to go but I also never noticed most of those Spotify albums include “(Remastered Edition)” in the title which meant most of the titles didn’t match. I wasn’t happy about that … that potentially meant some exhausting work with RegEx. I thought I might get off easy if I could change some existing columns to use FullText but I immediately thought of potential problems.

I half-heartedly started copying MBIDs and pasting them into the empty fields but then deleted them as I thought of … not only did I not want to do this manually for all my current (and future!) MB albums but what if I added columns later or found a more … accurate-ish, clean-ish solution. Which is what I started doing earlier and what I’m going to do now. Add more columns for the properties I mentioned earlier. One of the JSON files to which I referred when planning all this had no values for all the keys I thought of using. It looks like the most recent Black Sabbath data (from yesterday, FWIW) has values for most of them. I’ll need to add equivalent columns to the Spotify albums table, too.

In the back of my mind, I kept wondering why my Spotify albums list was so short. I keep adding and removing values from the “type” and “group” key in the PHP file that fetches Spotify album data. I’ll have to do that again so I can have more albums from each source so I can, hopefully, have more matches.

As I wrote this post and went to MusicBrainz to take screenshots, I saw this …

BS_MusicBrainz_Discography.png
Figure 08: So THERE are the albums that Spotify had but my MB/LFM data was missing!

Later, I also noticed the “Type: Album” bit in Figure 02.

I now know I have to request “Album + Compilation” and “Album + Live” to get, for example, Reunion. But … why don’t I have Vol 4 from MusicBrainz? It can’t be possible there were no releases from the Vol 4 release-group with data at LastFM … right?

Well, time to get knee and elbow deep with even more data about each release-group and release …

Yes, I’m aroused by that. 😉

P.S. I wonder if … and hope that … MusicBrainz and/or LastFM have the CD I once found at a truck stop … it was called something like “The Essential Black Sabbath” or “Black Sabbath’s Greatest” and it was exclusively Tony Martin tracks. I’d love find that and someday get it autographed just because it’s so … peculiar.

Update: Finding that Tony Martin Compilation

I have no idea if is even any of those listed in Figure 08, so …

TMdiscograpny.png
Figure 09: I love how precise MB users are — that someone made sure to add “featuring Tony Iommi” to Seventh Star.

Step #1 Click any album in their discography (Figure 09) between 87-95 except Dehumanizer. Poor Tony, man.

headlessCrossReleaseGroup.png
Figure 10: Headless Cross release group

Step #2 Click any release (Figure 10).

headlessCrossRelease.png
Figure 11: Dang, dudes! They gotta say “ex-Black Sabbath vocalist”? I wonder if Dio suffered the same fate. 

Step #3 Click Tony Martin’s name in the credits (Figure 11).

TMdiscography.png
Figure 12: Tony Martin’s discography

Crap. I was hoping it would be listed right here (Figure 12) but, I suppose this makes more sense.

Step #4 Click “Show all release groups instead” (Figure 12) or anything else I need to.

Crap #2. I’m actually going to have to go through all of those compilations …

I opened each compilation 1996 and later (that I knew wasn’t specifically Ozzy or Dio) in another tab.

*Sigh* Each tab is a release group so requires at least one more click.

I checked eight of those candidates:

  • The Sabbath Stones
    Six instrumentals, seven Tony Martin tracks, and one apiece by Dio, Ian Gillan, and Glenn Hughes. No Ozzy.
  • Greatest Hits
    Ozzy & Dio
  • Ozzy is the only vocalist featured on:
    • The Ultimate Collection
    • Forever
    • Greatest Hits
    • The Collection
    • Rock Giants
  • Rock Champions is all Tony Martin!

I checked a few albums and Dio is never referred to as “ex-vocalist”.

I feel it’s also worth mentioning The Best of Black Sabbath which is an unusually respectable–albeit unbalanced–compilation as these things go. First of all–awesome cover.

  • 28 songs by Ozzy
  • 2 by Dio
  • 1 awful song by Ian Gillan
  • 1 instrumental

Not a single Tony Martin song.

 

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.

First Tiny Bits o’ Data from LastFM

I can’t even begin to tell you how much fun I’m having with this mixture of Python, the MusicBrainz API, and the LastFM API. Much more to come about the process itself but, for now, just know that the number of Alice Cooper listeners rose from 1,365,754 on Feb 14, 2019 to 1,365,860 on Feb 15 for a total increase of 106. His total playcount rose from 31,123,429 to 31,126,727 — an increase of 3,298 plays. Lovely data viz will follow the procedural tutorial.