在此存储库中,我收集和探索与Spotify图表中特色的曲目有关的数据。我基于在此仓库中所做的工作,在那里我已经做了很多事情。不幸的是,这个项目中的数据处理真的很混乱,因此我决定从头开始创建一个清洁数据集。
我提出了CLI脚本,以获取与Spotify图表有关的数据。它们可以在该项目的cli_scripts文件夹中找到。正如文件夹名称所建议的那样,可以直接从命令行调用脚本。您可以将每个脚本带有-h选项,以获取有关接受参数的信息(例如: python cli_scripts/get_all.py -h )。
首先,我想出了用于组装Spotify Daily Top 200轨道的数据的脚本。不幸的是,此数据无法通过API获得。此外,必须下载每个区域的图表CSV文件,然后单独跟踪(通过导航到Spotify图表页面并单击下载按钮),这是非常不便的。
但是,我通过创建两个脚本来解决此问题(请参阅spotify_charts文件夹):
download.py :自动使用selenium下载多个区域(通过参数指定的全部或子集)的CSV文件的过程CSV文件(启动 +结束日期)(需要Spotify帐户/凭据!)combine_charts.py :组合下载的Spotify图表CSV文件位于指定目录中的单个.parquet文件Spotify的官方API也可以检索到Spotify上有关音乐的许多有趣的信息和元数据。所有使用Spotify API(通过spotipy Python API包装器)的脚本都可以在spotify_api中找到:
get_track_metadata.py :从/tracks API端点获取轨道元数据,以获取提供的.parquet文件中提到的唯一轨道ID。输出几个元数据.parquet文件的文件夹get_album_metadata.py :仅适用于上面的事情,仅适用于专辑而不是曲目(使用/albums API端点)get_artist_metadata.py :在几个输入文件(每个都有artists_id列)中获取所有独特艺术家ID的艺术家元数据,也将元数据存储在文件夹中,例如上面的其他脚本get_all.py :将所有脚本结合在一起,首先获得轨道元数据,然后是与曲目相关的所有专辑的元数据,最后是所有曲目和专辑唱片艺术家的艺术家元数据。不幸的是,轨道积分(特别是词曲作者和制作人)的信息也无法通过公共Spotify API获得。但是,我想出了一种解决这个问题的方法。可以提取用于Spotify Web应用程序提出的特定请求的请求标题,例如,在轨道页面上打开Show Credits弹出窗口时,并将其重新使用以使其他请求对相同的(inofficial/Internal)API Endpoint。
这种方法可用于
# 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_2022python cli_scripts/spotify_api/get_all.py -i data/top200_2022/charts.parquetTODO:添加脚本“完成”后添加正确的命令(足够好)
为了使一切正常工作,您可以按照以下说明(假设您已安装了Python的最新版本)
如果愿意,可以创建一个新环境,例如使用conda :
conda env create --name=spotify-charts-analysis
conda activate spotify-charts-analysis
为了使所有脚本都在框外工作,您只需运行即可安装helpers包
pip install -e .
另外,您当然也只需在遇到试图执行问题的问题时一对一安装包裹
即使对于相当受欢迎的歌曲,Spotify上的曲目歌词也可能是不正确的(例如,出于某种原因具有歌词的乐器曲目)。