Code Monkey home page Code Monkey logo

spotify-analysis's Introduction

Spotify-Analysis

2024 정화예술대학교 뮤직테크놀로지Lab1 5~6주차 과제 (작업 기간: 일주일)

과제 정보

<AI 기술의 활용>

Q. "현재 우리가 이용할 수 있는 AI 기술을 어떻게 활용하여 음악을 중심으로 하는 콘텐츠를 만들 수 있을까?"

A. "현재 개발과 작곡을 공부 중인 학생으로서

음악을 들을 때 차트를 참고하지 않는 개인적인 습관으로 인해 트렌드 파악이 불리함.

따라서 Spotify의 글로벌 Top50 차트를 기반으로 음악 분석 & 추천 서비스를 만들어 단점을 극복"

프로젝트 기획

<Spotify의 음악 추천 AI 'BART'>

• 과제 사전 조사를 하다 음악 큐레이션이 좋기로 유명한 Spotify가

자사 AI인 BART를 통해 음악 큐레이션을 진행한다는 것을 알았습니다.

Spotify API를 이용해 BART를 호출하고, 직접 음악 추천을 받을 수 있다는 소식을 듣고 바로 기획을 시작했습니다.

• 앞서 말했듯, 저는 음악 차트를 참고하지 않기 때문에 트렌드에 항상 불리했는데

이번 프로젝트로 제 단점을 개선하고자 Spotify API를 적극 활용해 Spotify Global Top50 차트를 기반으로

음악 분석과 차트 내의 음악과 비슷한 음악을 추천받을 수 있는 기능을 구현하고자 했습니다.

프로젝트 진행

<처음 써보는 html과 웹 프레임워크>

• 저는 프로그래밍을 시작한 이후부터 쭉 웹 프레임워크와 네트워크 관련 지식은 거의 0%였습니다.

파이썬이 주력 언어이기도 했고 데이터와 API를 주로 다루는 프로젝트만 진행했기 때문이죠.

따라서 html에서 url 클릭 시 다른 페이지로 이동하는 기능을 만들기도 어려웠지만

수많은 삽질과 구글링으로 겨우 해결했습니다.

이 프로젝트로 인해서 백엔드와 프론트엔드 개발자의 위대함을 알게 됐고,

앞으로 웹 관련 서비스를 만드는 도전을 많이 하게 될 것 같습니다.

<데이터베이스>

• 우선 개인 과제용 토이 프로젝트라고 해도,

최소한의 예외 처리와 기반을 다지기 위해서 접속자와 관련된 처리를 했습니다.

만약 차트 데이터를 저장하지 않고 접속할 때마다 API에서 데이터를 받아와 전송하면

API 레이트리밋이 가장 치명적일 것이라 생각해서

차트 데이터와 트랙 데이터를 Sqlite3 데이터베이스를 이용해 저장했습니다.

• 서버를 엶과 동시에 30분마다 차트 수정일자와 DB에 저장해둔 마지막 차트 수정일자를 대조하여 값이 다르면

차트와 트랙 데이터를 새로운 데이터로 저장하는 방식을 채택했습니다.

이로써 레이트리밋에 대한 걱정이 한 가지 사라지게 되었습니다.

<모듈화>

• 개발하시는 분들이라면 다들 아실테지만 저는 특히 모듈화를 중요하게 생각합니다.

데이터를 다루는 프로젝트라면 더욱 더요.

그렇기 때문에 Spotify API로 데이터를 받아오는 기능을 먼저 테스트해보고, 모듈화하였습니다.

덕분에 데이터를 불러오는 것이 더욱 편리하고 직관적이게 됐습니다.

<기능 구현>

• 만들어둔 모듈과 DB를 활용해 본격적인 기능들을 구현했습니다.

Spotify 글로벌 Top50 차트에 접속하면 현재 순위와 순위 변동 사항, 곡 제목과 아티스트 등의 간단한 정보를 출력하고

분석 페이지에서 자세한 정보를 확인할 수 있도록 만들었습니다.

분석 페이지에서는 곡에 대한 자세한 정보와 BART를 통한 10개의 곡 추천을 출력하도록 했습니다.

<프로젝트의 미래>

• 우선 저는 이 프로젝트의 목적이 마음에 들어 좀 더 만들어보고 싶다고 생각들었습니다.

여유가 없어 전혀 진행하지 않았던 프론트엔드도 구축해서 쓸 만한 서비스가 될 때까지 만들어 볼 계획입니다.

spotify-analysis's People

Contributors

yng-min avatar

Watchers

 avatar  avatar

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.