Creating dashboards and data visualizations using data gathered from multiple APIs.
I often wondered not only how much does an artist's death affect the popularity of their music but events such as:
Queen's popularity increase due to the film Bohemian Rhapsody.
The increase in popularity of the song "Bohemian Rhapsody" due to the film Bohemian Rhapsody.
Motley Crue's popularity increase due to the film The Dirt.
Increase in popularity of Motley Crue's albums due to the film The Dirt.
User can:
-
Select an artist for comprehensive information
-
Sort by Artist or rank using stats from Spotify and Last.FM
-
Last.FM "ratio" column accounts for inflated playcounts I assume are due to fans playing the same albums and songs endlessly
The above, older, screenshot shows the main menu (dynamic, adapting to type of page you're viewing) along the top (built with Bootstrap) for quick navigation anywhere. All buttons apply to the artist currently displayed. As features such as data visualizations were added to the artists dashboards, those buttons were removed.
-
Images usually pulled from Spotify but sometimes manually uploaded (after downloading from fanart.tv)
-
Related artists (eg Related artists for Ronnie James Dio are Dio, Rainbow, Black Sabbath, etc.) - data gathered via algorithms used with MusicBrainz.com
-
Current Spotify followers for Artist
-
Current LastFM listeners and playcount
-
Line Graphs for stats over time - data visualization created using D3.js
-
User can click Albums for discography stats
Associated Artists Force Graph
This interactive graph displays how artists are related to each other. Users can move nodes around to focuse on a particular band or band member.
As such, one can also consider this a graph for Black Sabbath, Rainbow, Deep Purple, etc.
Another interactive feature is dragging and dropping the artist(s) of the user's choice to create their own custom bar graph.
Albums in list view can be sorted by album title, release date, and popularity.
Discrography pages used to be separated by Spotify and Last.FM stats but now contain all columns on one page.
Even older screenshot showing album list displaying only year and current Spotify popularity:
Some artists have scatterplots (powered by D3)
This scatterplot displaying Spotify popularity uses the "Associated Artists" feature/table (powered by data gathered through the MusicBrainz API to include every album on which Ronnie James Dio was lead singer from Elf to Heaven & Hell.
Hovering over an album cover gives additional information.
This scatterplot displaying LastFM playcounts uses the "Associated Artists" feature/table as well but since there are, in some cases, more releases available in personal collections, you'll notice this image displays releases from the 50s even before he joined Elf.
Hovering over an album cover gives additional information.
Data stored in MySQL (MariaDB) database. D3 gets data using PHP scripts containing SQL queries and builds the graphs and charts. I think album charts need to be vertical, rather than horizontal bar chart because some artists have tons of albums and it requires horizontal scrolling even on a desktop that overflows out of the Bootstrap elements, eventually getting cut off by SVG boundaries.
Associated Artists Albums Bar Graph
Much like the above scatterplots included all albums feature Ronnie James Dio as lead singer, the bar graphs below aggregate all groups Steve Taylor sang for with his solo work.
At present, tracks are listed all together. Eventually, they'll be viewable by album. Tracks list view is sortable by album title, track title, and popularity.
Cron jobs daily collect data using Spotify Web API and Last.fm
- Artists: Popularity and Followers
- Albums: Popularity
- Tracks: Popularity
- Genres: Future For force layout relationship charts
- Gather MBIDs for artists, releases (oversimplification is "releases" are what they call albums), recordings ("tracks")
- MusicBrainz.org
- Future Gather "Relationships" (band members, personnel) from tracks
- Artist, logos and album art
- Listeners for artists, albums, tracks
- Playcount for artists, albums, tracks
- Tags (genres)
ListenBrainz.org includes these helpful pages:
Future
- Venues, cities of concerts
- Genres of concert artists
PHP-based version of rockinJS which replaced myRockinApp (Python). Moved on to using PHP and MySQL with Pop-PHP because I couldn't get the objects to build as completely as I wanted in either Python to Javascript.
- Timeline sliders to increase or decrease timespan
- Add speech output, descriptions of charts, results
- Alternate input for those who can't see to drag & drop