Difference between revisions of "DataVis2012/Projects/Schapiro"
(10 intermediate revisions by the same user not shown) | |||
Line 14: | Line 14: | ||
I think my best bet for geo hyped music data is to scrape the data myself. I have set up a server script to scrape from the Last.fm API. I grab the weekly hyped artists charts for 46 US cities (http://bit.ly/wBWTk7). The two API calls will be geo.getMetroArtistChart and geo.getMetroHypeArtistChart (http://bit.ly/yoYlvF). The results will be stored in a mySQL database. | I think my best bet for geo hyped music data is to scrape the data myself. I have set up a server script to scrape from the Last.fm API. I grab the weekly hyped artists charts for 46 US cities (http://bit.ly/wBWTk7). The two API calls will be geo.getMetroArtistChart and geo.getMetroHypeArtistChart (http://bit.ly/yoYlvF). The results will be stored in a mySQL database. | ||
UPDATE: Full scraped database at: http://theitt.com/InternalProjects/DataViz/lastfm.sql | |||
=== Step 2: Filtering Data === | === Step 2: Filtering Data === | ||
The subset of the artists I use will be decided based on the richness of the data that is scraped. Hopefully we'll see something interesting here! | The subset of the artists I use will be decided based on the richness of the data that is scraped. Hopefully we'll see something interesting here! | ||
I will take the top 5 artists for each city from each week and put into JSON as such: | |||
<pre> | |||
Rank_data = { // obj containing cities | |||
Boston: [ // each city is array of weeks | |||
[ // each week has array of artist rank objs | |||
{ | |||
artist: 'Beyonce', | |||
listeners: 501 | |||
}, | |||
{ | |||
artist: 'Arcade Fire', | |||
listeners: 200 | |||
}, | |||
... | |||
], | |||
[ | |||
... | |||
] | |||
] | |||
} | |||
Weeks = [ // use FROM_UNIXTIME over full set of weeks | |||
'2009-02-01', | |||
'2009-02-08', | |||
... | |||
] | |||
</pre> | |||
To keep clutter minimum, I think I'll use this subset of cities: | |||
*Boston | |||
*Austin | |||
*Philadelphia | |||
*Nashville | |||
*San Francisco | |||
*Miami | |||
*New York | |||
=== Step 3: Rendering Data === | === Step 3: Rendering Data === | ||
Line 22: | Line 61: | ||
My current design idea is a map of the US (or world) with circles of differing sizes compared to how popular an artist is, overlaced with a connecting line betweens cities traveled to (in order) in the upcoming/previous tour | My current design idea is a map of the US (or world) with circles of differing sizes compared to how popular an artist is, overlaced with a connecting line betweens cities traveled to (in order) in the upcoming/previous tour | ||
==== Version 1: Timecloud ==== | |||
UPDATE: After discussing with Silva, the new plan to a slider to deal with time, and as you slide along, tag clouds appear over the various cities of the most popular artists. There is also the option to filter these artists by genre, etc. | UPDATE: After discussing with Silva, the new plan to a slider to deal with time, and as you slide along, tag clouds appear over the various cities of the most popular artists. There is also the option to filter these artists by genre, etc. | ||
Line 27: | Line 67: | ||
I may be able to do this by modifying https://github.com/stef/timecloud to place tag clouds atop a static image of the United States or a dynamic image such as: http://www.openstreetmap.org/ | I may be able to do this by modifying https://github.com/stef/timecloud to place tag clouds atop a static image of the United States or a dynamic image such as: http://www.openstreetmap.org/ | ||
Update: MOCKUP at http://theitt.com/InternalProjects/DataViz/tagcloud | |||
'''Conclusion''': This doesn't give very much useful information. Time to go back to my original idea | |||
==== Version 2: Google Maps ==== | |||
// rewrite API to take band name and year and find out total number of listeners in each city | |||
// getting past events | |||
// then put them on the map | |||
http://ws.audioscrobbler.com/2.0/?method=artist.getpastevents&format=json&artist=phish&api_key=46d8e5af527082f81cd3e592d5d832a8&limit=300 | |||
// numbered icons | |||
http://code.google.com/p/google-maps-icons/wiki/NumericIcons | |||
// circle overlays (for # of listeners in city) | |||
https://developers.google.com/maps/documentation/javascript/reference#MarkerShape | |||
FINISHED: http://theitt.com/InternalProjects/DataViz/tour/ | |||
Source code: https://github.com/yono38/Listeners-Concerts-Corr |
Latest revision as of 23:27, 7 May 2012
My Projects
Visualizing Music Hype and Music Tour Correlations
I will be mapping out how many people listen to an artist in various metros compared to the most recent tour route.
Step 1: Acquiring Data
The band tour data will be loaded dynamically, using one of the following datasources: Last.fm Eventful Songkick JamBase
I'll need to test and see which produces the most accurate and extensive data.
I think my best bet for geo hyped music data is to scrape the data myself. I have set up a server script to scrape from the Last.fm API. I grab the weekly hyped artists charts for 46 US cities (http://bit.ly/wBWTk7). The two API calls will be geo.getMetroArtistChart and geo.getMetroHypeArtistChart (http://bit.ly/yoYlvF). The results will be stored in a mySQL database.
UPDATE: Full scraped database at: http://theitt.com/InternalProjects/DataViz/lastfm.sql
Step 2: Filtering Data
The subset of the artists I use will be decided based on the richness of the data that is scraped. Hopefully we'll see something interesting here!
I will take the top 5 artists for each city from each week and put into JSON as such:
Rank_data = { // obj containing cities Boston: [ // each city is array of weeks [ // each week has array of artist rank objs { artist: 'Beyonce', listeners: 501 }, { artist: 'Arcade Fire', listeners: 200 }, ... ], [ ... ] ] } Weeks = [ // use FROM_UNIXTIME over full set of weeks '2009-02-01', '2009-02-08', ... ]
To keep clutter minimum, I think I'll use this subset of cities:
- Boston
- Austin
- Philadelphia
- Nashville
- San Francisco
- Miami
- New York
Step 3: Rendering Data
My current design idea is a map of the US (or world) with circles of differing sizes compared to how popular an artist is, overlaced with a connecting line betweens cities traveled to (in order) in the upcoming/previous tour
Version 1: Timecloud
UPDATE: After discussing with Silva, the new plan to a slider to deal with time, and as you slide along, tag clouds appear over the various cities of the most popular artists. There is also the option to filter these artists by genre, etc.
I imagine the final result looking something like: http://www.nytimes.com/interactive/2009/02/02/sports/20090202_superbowl_twitter.html
I may be able to do this by modifying https://github.com/stef/timecloud to place tag clouds atop a static image of the United States or a dynamic image such as: http://www.openstreetmap.org/
Update: MOCKUP at http://theitt.com/InternalProjects/DataViz/tagcloud
Conclusion: This doesn't give very much useful information. Time to go back to my original idea
Version 2: Google Maps
// rewrite API to take band name and year and find out total number of listeners in each city
// getting past events // then put them on the map http://ws.audioscrobbler.com/2.0/?method=artist.getpastevents&format=json&artist=phish&api_key=46d8e5af527082f81cd3e592d5d832a8&limit=300
// numbered icons http://code.google.com/p/google-maps-icons/wiki/NumericIcons
// circle overlays (for # of listeners in city) https://developers.google.com/maps/documentation/javascript/reference#MarkerShape
FINISHED: http://theitt.com/InternalProjects/DataViz/tour/ Source code: https://github.com/yono38/Listeners-Concerts-Corr