이 저장소에서는 Spotify 차트에 소개 된 트랙과 관련된 데이터를 수집하고 탐색합니다. 나는 이미 많은 일을했던이 저장소에서 한 일을 바탕으로합니다. 불행히도,이 프로젝트의 데이터 처리는 정말 지저분했기 때문에 더 깨끗한 데이터 세트를 만들기 위해 처음부터 시작하기로 결정했습니다.
Spotify 차트와 관련된 데이터를 가져 오기위한 CLI 스크립트를 생각해 냈습니다. 이 프로젝트의 cli_scripts
하위 폴더에서 찾을 수 있습니다. 폴더 이름에서 알 수 있듯이 스크립트는 모두 명령 줄에서 직접 호출 할 수 있습니다. -h
옵션으로 각 스크립트를 호출하여 허용되는 인수에 대한 정보를 얻을 수 있습니다 (예 : python cli_scripts/get_all.py -h
).
먼저, Spotify Daily Top 200의 트랙에 대한 데이터를 조립하기위한 스크립트를 생각해 냈습니다. 불행히도이 데이터는 API를 통해 사용할 수 없습니다. 또한 각 지역의 차트 CSV 파일을 다운로드하고 매우 불편한 Spotify 차트 페이지를 탐색하고 다운로드 버튼을 클릭하여 별도로 추적해야합니다.
그러나 두 개의 스크립트를 만들어이 작업을 수행했습니다 ( spotify_charts
하위 폴더 참조).
download.py
: 차트 다운로드 프로세스를 자동화하여 여러 지역 (인수를 통해 지정된 전부 또는 서브 세트) 및 selenium
날짜 범위 (시작 + 종료 날짜) (Spotify Account/Credentials가 필요합니다!)combine_charts.py
: 지정된 디렉토리에 위치한 다운로드 된 Spotify 차트 CSV 파일을 결합하여 단일 .parquet
파일로 Spotify의 음악에 대한 흥미로운 정보와 메타 데이터는 Spotify의 공식 API에서 검색 할 수 있습니다. spotipy
Python API 래퍼를 통해 Spotify API를 사용하는 모든 스크립트는 spotify_api
에서 찾을 수 있습니다.
get_track_metadata.py
: 제공된 .parquet
파일에 언급 된 고유 한 트랙 ID에 대한 /tracks
API 엔드 포인트에서 트랙 메타 데이터를 가져옵니다. 여러 메타 데이터 .parquet
파일의 폴더를 출력합니다get_album_metadata.py
: 트랙 대신 앨범에 대해서만 위와 동일합니다 ( /albums
API 엔드 포인트 사용)get_artist_metadata.py
: 여러 입력 파일 중 모든 고유 아티스트 ID에 대한 아티스트 메타 데이터 (각각 artists_id
열이 있음)에 대한 아티스트 메타 데이터는 위의 다른 스크립트와 같은 폴더에 메타 데이터를 저장합니다.get_all.py
: 모든 스크립트를 결합하여 트랙 메타 데이터를 먼저 얻은 다음 트랙과 관련된 모든 앨범에 대한 앨범 메타 데이터 및 모든 트랙 및 앨범 아티스트의 아티스트 메타 데이터에 대한 앨범 메타 데이터를 결합합니다. 불행히도, 트랙 크레딧 (특히 작곡가 및 제작자)에 대한 정보는 Public Spotify API를 통해 사용할 수 없습니다. 그러나 나는 그 일을 할 수있는 방법을 생각해 냈습니다. Spotify 웹 앱에서 만든 특정 요청에 사용되는 요청 헤더를 추출 할 수 있습니다. 예를 들어 트랙 페이지에서 Show Credits
팝업을 열 때 재사용하여 다른 요청을 동일하게 (내부/내부) API 엔드 포인트로 만들도록 재사용 할 수 있습니다.
이 접근법은 사용될 수 있습니다
# download CSVs; might take a loooong time, can be interrupted and restarted/resumed later
python cli_scripts/spotify_charts/download.py -s 2022-01-01 -e 2022-12-31 -o data/scraper_downloads
# combine downloaded CSVs into single parquet file
python cli_scripts/spotify_charts/combine.py -o data/top200_2022
python cli_scripts/spotify_api/get_all.py -i data/top200_2022/charts.parquet
TODO : 스크립트가 '완료'되면 적절한 명령 추가 (충분히 좋습니다)
모든 것이 작동하도록하려면 다음 지침을 따를 수 있습니다 (최근 버전의 Python이 설치되어 있다고 가정).
원한다면 conda
사용하여 새로운 환경을 만들 수 있습니다.
conda env create --name=spotify-charts-analysis
conda activate spotify-charts-analysis
모든 스크립트가 상자 밖으로 작동하도록하려면 실행하여 helpers
패키지를 설치할 수 있습니다.
pip install -e .
또는 물론, 물건을 실행하려는 문제가 발생할 때 패키지를 하나씩 설치할 수도 있습니다.
Spotify의 가사는 상당히 인기있는 노래 (예 : 어떤 이유로 가사가있는이 악기 트랙)에서도 잘못 될 수 있습니다.