GithubHelp home page GithubHelp logo

ubc-mds / spotify-explorer-py Goto Github PK

View Code? Open in Web Editor NEW
1.0 0.0 3.0 12.56 MB

A Spotify exploration app for music enthusiasts. The app helps you discover interesting trends in Spotify music popularity across various features such as genres, danceability, loudness, etc.

Home Page: https://spotify-explorer-py.herokuapp.com/

License: MIT License

Python 16.63% Procfile 0.05% Jupyter Notebook 83.00% Dockerfile 0.31%
spotify music visualization barplot trendline densityplot dropdown

spotify-explorer-py's Introduction

Spotify Explorer App

Spotify Explorer is a data visualization dashboard app (built on Dash) displaying insights and trends on Spotify's music, artists and song types. This app is made for anyone who's keen in discovering what lies underneath a vast data collected on Spotify's platform, be they music enthusiasts or music business executives.

Table of Contents

The App

You can access the dashboard app here: Spotify Explorer

Motivation and Purpose

Our purpose for developing this app can be branched into 2 main goals: to help others discover more about the artists, genres they care about and to help the music industry solve business problems with data. As music enthusiasts ourselves, we wanted to help fellow music fans understand more about their favourite artists, genres and song types. Furthermore, the app would be beneficial for music industry professionals who want to make business decisions on which artists and genres to develop their business in.

Below are just a couple of potential problem-solving scenarios to achieve these objectives:

  • Music listeners may want to dive more into new music with a specific genre. Our app can display top popular atists belonging to that genre and listeners can try out listening to those artists, thereby discovering new music they may like.

  • Business executives can use our tool to find trends in popularity of artists over the past few years, and decide whether to pursue contract extension with specific artists (based on the artist's performance). If they're interested to zoom into any specific artist, the histogram plot would be able to tell them what the distribution of popularity looks like for that artist. For example, if they prefer to pursue an artist with less variability in popularity, they can infer that from the plot. They can also explore the relationship between music characteristics distribution and popularity classes to gain insights on the music track features influencing the popularity scoring from customers and act on them in the future music content collection.

Dashboard description

The app contains 2 tabs that shows a total of four plots with sidebar widgets allowing users to control filtering options for the plots.

  • Top artists with an average popularity score (filtered by Genre)
    Here the user can select a particular genre of music by using the drop down list for genre located on the left hand side of the dashboard. The plot shows the artist and their corresponding popularity score for the specific genre.
  • Popularity Trend of Specific Artists across time (filtered by Artist)
    The user on choosing a specific artist from a different down drop list, will be provided with a line chart of the artist's average popularity score over the years.
  • Popularity Distribution of Specific Artists (filtered by Artist)
    Based on the artist chosen from the previous drop down list, this plot will show the distribution of the Artist's popularity score. This helps the user identify the artist's popularity score across their songs.
  • Popular Song Characteristics (filtered by Genre)
    Finally, a seperate drop down list for song characteristics help users choose from a list of attributes such as loudness, danceability, etc. The plot then shows the relationship of the chosen attribute with popularity through a scatter plot.

App Design

If you want to help further develop the app

  1. Fork the repository
  2. Set up conda environment as follows
conda env create -f spotify.yml
conda activate spotify-ex
  1. To run the app locally, run the following command from the root of this repository
python src/app.py
  1. Create an issue on this repo to inform the Team about the changes/improvements you want to make. See Contributing section below for more details.

Run the app locally via Docker

If you wish to run our app using Docker, fork our repo and write the following commands in the root of this repo after loading up Docker Desktop:

docker-compose up

Finally, open the app at this URL: http://localhost:8000/

Contributing

Interested in contributing? Check out the contributing guidelines. Please note that this project is released with a Code of Conduct. By contributing to this project, you agree to abide by its terms.

App Contributors

  • Christopher Alexander
  • Jennifer Hoang
  • Thea Wenxin
  • Michelle

License

spotify-explorer-py was created by Christopher Alexander, Jennifer Hoang, Thea Wenxin and Michelle Wang. It is licensed under the terms of the MIT License.

spotify-explorer-py's People

Contributors

christopheralex avatar jennifer-hoang avatar michelle-wms avatar xiangwxt avatar

Stargazers

 avatar

spotify-explorer-py's Issues

Milestone 1 Tasks

Proposal proposal.md
1,000 words

  • Motivation and purpose Jennifer
  • Description of the data Michelle
  • Research questions you are exploring Wenxin

Description of app and sketch

  • 200-300 words and live in the README.md Chris
  • Sketch Everyone

Project structure

  • Create repo Chris
  • Conduct.md Chris
  • Contributing.md Chris

Sketch of layout (updated)

Hi all, so the sketch is updated with 2 tabs:

  • Tab 1: Artists/Genres Overview
  • Tab 2: Song characteristics

The 'un-used' charts are at the top right corner for reference/ inspiration. Feel free to comment/ make other suggestions if necessary. Thanks.

Overcome altair data transformer in Heroku

Altair required data transformer when number of rows are more than 5000 which our dataset has .
Altair data transformer is not supported in Heroku, we need to find a work around.

Milestone 2 Tasks

Tasks:

  1. Heroku Deployment (Chris)
  • Github folder structure
  1. Interactive Dash app - (ALL)
  • Implement 4 plots (1 each) and widgets
  • Layout (Michelle)
  1. Reflection (Jenn)
  • What has/hasn't been implemented (500 words)
  1. Improve README (Wenxin)
  • Add info for those interested in using/developing dashboard

Weekly Roles:
Proofreaders: Michelle/Chris
Scribe: Jenn
Submission: Chris

Add appropriate docstring for plotting functions

  • Remove layout initial docstring added by Chris in components.py (Chris)
  • Add function docstring to all plotting functions in Numpy style. ( Michelle, Jenn , Thea )
  • Could add one line docstring for layout functions. (Chris and whoever wants to help :P )

Heroku deployment and Initial layout

  • notebook for python implementation of graphs.
  • Basic layout in app.py.
  • Link github in heroku.
  • Add collaborators in heroku.
  • Create staging pipeline.
  • Create production pipeline
  • Create review actions in heroku.

Weekly Milestone Roster

Role Milestone 1 Milestone 2 Milestone 3 Milestone 4
Proof-readers Jennifer/Wenxin Michelle/Chris Wenxin/Michelle Chris/Jennifer
Scribe Michelle Jennifer Chris Wenxin
Submitter Wenxin Chris Michelle Jennifer

ย 


Milestone 3 tasks

Michelle

Chris

Persona - Michelle, Frontend - Jenn, Backend - Chris, Documentation - Thea

Jenn

Chris

Famous conferences, workshops --> Wenxin
twitter accounts to follow, blogpost --> Chris
Podcasts, Discord/Slack communities --> Jenn
webpage, YouTube Channels. --> Michelle

Provide the most extensive list of resources you can with a short description for each. Where do you find the most material? Where would you suggest a beginner start learning about this technology?

https://docs.google.com/document/d/1yeo7CbcC9UEme9kropYyKXXQswZFZmrsQOKfoGqeIfc/edit?usp=sharing

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.