使用Spotipy中来自sp.albums的.json输出,从同一位艺术家的多张专辑中获取曲目ID

如何解决使用Spotipy中来自sp.albums的.json输出,从同一位艺术家的多张专辑中获取曲目ID

我知道有多种方法可以做到这一点-而且我已经使用用户播放列表唱片从一位艺术家那里成功获取了所有曲目ID。但我想提出一个不依赖于现有用户播放列表的Python程序。

我想做的是从将多个专辑传递到Spotipy中的sp.albums时创建的.json文件中的专辑数据中提取曲目ID。

我有我要传递给唱片专辑的这张专辑ID列表,这些列表ID是我最喜欢的乐队之一Fugazi的所有唱片。

 album_ids = ['6ZyP2KPr2AkAbUWbsHmzEg','2bU6BaHfovn3rvxxxHSkWd','3tnzZhTTjRTExYc9odG0dt','1hatewdVYKH0xqEkdOLQLb','3kPxFCpws7ZyzI1cMME4dV','3zBQ2UZzCzgCnIkFYMOWlY','3QpmoxpWCacHLsZMhLn1ag','3ZnF1cPxlqB48RyLiecDnv','21wERoyBas2JCRCgysPDJX']

然后我将此列表传递给sp.albums:

fugazi_songs = sp.albums(album_ids)

fugazi_songs的.json文件太长了,无法在此处发布。

但这是一开始的代码,其中包含第一张专辑中第一首歌曲的数据:

{"albums": [{
"album_type": "album","artists": [{
    "external_urls": {
        "spotify": "https://open.spotify.com/artist/62sC6lUEWRjbFqXpMmOk4G"
    },"href": "https://api.spotify.com/v1/artists/62sC6lUEWRjbFqXpMmOk4G","id": "62sC6lUEWRjbFqXpMmOk4G","name": "Fugazi","type": "artist","uri": "spotify:artist:62sC6lUEWRjbFqXpMmOk4G"
}],"available_markets": ["AD","AE","AL","AR","AT","AU","BA","BE","BG","BH","BO","BR","BY","CA","CH","CL","CO","CR","CY","CZ","DE","DK","DO","DZ","EC","EE","EG","ES","FI","FR","GB","GR","GT","HK","HN","HR","HU","ID","IE","IL","IN","IS","IT","JO","JP","KW","KZ","LB","LI","LT","LU","LV","MA","MC","MD","ME","MK","MT","MX","MY","NI","NL","NO","NZ","OM","PA","PE","PH","PL","PS","PT","PY","QA","RO","RS","RU","SA","SE","SG","SI","SK","SV","TH","TN","TR","TW","UA","US","UY","VN","XK","ZA"],"copyrights": [{
    "text": "Dischord Records","type": "C"
},{
    "text": "Dischord Records","type": "P"
}],"external_ids": {
    "upc": "0643859181027"
},"external_urls": {
    "spotify": "https://open.spotify.com/album/6ZyP2KPr2AkAbUWbsHmzEg"
},"genres": [],"href": "https://api.spotify.com/v1/albums/6ZyP2KPr2AkAbUWbsHmzEg","id": "6ZyP2KPr2AkAbUWbsHmzEg","images": [{
    "height": 640,"url": "https://i.scdn.co/image/ab67616d0000b2737c6b218a0797b44ace3f237b","width": 640
},{
    "height": 300,"url": "https://i.scdn.co/image/ab67616d00001e027c6b218a0797b44ace3f237b","width": 300
},{
    "height": 64,"url": "https://i.scdn.co/image/ab67616d000048517c6b218a0797b44ace3f237b","width": 64
}],"label": "Dischord Records","name": "First Demo","popularity": 32,"release_date": "2014-11-18","release_date_precision": "day","total_tracks": 11,"tracks": {
    "href": "https://api.spotify.com/v1/albums/6ZyP2KPr2AkAbUWbsHmzEg/tracks?offset=0&limit=50","items": [{
        "artists": [{
            "external_urls": {
                "spotify": "https://open.spotify.com/artist/62sC6lUEWRjbFqXpMmOk4G"
            },"uri": "spotify:artist:62sC6lUEWRjbFqXpMmOk4G"
        }],"disc_number": 1,"duration_ms": 190459,"explicit": false,"external_urls": {
            "spotify": "https://open.spotify.com/track/4PKl6Tt8YQaJIJmlnwELi7"
        },"href": "https://api.spotify.com/v1/tracks/4PKl6Tt8YQaJIJmlnwELi7","id": "4PKl6Tt8YQaJIJmlnwELi7","is_local": false,"name": "Waiting Room - Demo","preview_url": "https://p.scdn.co/mp3-preview/d9d339d1c8426d37d8a8ed30a8eb6e4a10ee84d3?cid=ff4c1e3515504e8397510b8d452c0eab","track_number": 1,"type": "track","uri": "spotify:track:4PKl6Tt8YQaJIJmlnwELi7"
    },

这是第二张专辑中第一首歌的代码,紧接在第一张专辑数据的结尾:

{
    "album_type": "album","artists": [{
        "external_urls": {
            "spotify": "https://open.spotify.com/artist/62sC6lUEWRjbFqXpMmOk4G"
        },"uri": "spotify:artist:62sC6lUEWRjbFqXpMmOk4G"
    }],"copyrights": [{
        "text": "Dischord Records","type": "C"
    },{
        "text": "Dischord Records","type": "P"
    }],"external_ids": {
        "upc": "0718751962026"
    },"external_urls": {
        "spotify": "https://open.spotify.com/album/3tnzZhTTjRTExYc9odG0dt"
    },"href": "https://api.spotify.com/v1/albums/3tnzZhTTjRTExYc9odG0dt","id": "3tnzZhTTjRTExYc9odG0dt","images": [{
        "height": 640,"url": "https://i.scdn.co/image/ab67616d0000b273528034c2cfe590178ac6657a","width": 640
    },{
        "height": 300,"url": "https://i.scdn.co/image/ab67616d00001e02528034c2cfe590178ac6657a","width": 300
    },{
        "height": 64,"url": "https://i.scdn.co/image/ab67616d00004851528034c2cfe590178ac6657a","width": 64
    }],"name": "Instrument Soundtrack","popularity": 53,"release_date": "1999","release_date_precision": "year","total_tracks": 18,"tracks": {
        "href": "https://api.spotify.com/v1/albums/3tnzZhTTjRTExYc9odG0dt/tracks?offset=0&limit=50","items": [{
            "artists": [{
                "external_urls": {
                    "spotify": "https://open.spotify.com/artist/62sC6lUEWRjbFqXpMmOk4G"
                },"uri": "spotify:artist:62sC6lUEWRjbFqXpMmOk4G"
            }],"duration_ms": 227000,"external_urls": {
                "spotify": "https://open.spotify.com/track/7dcMZLssGtsCJq9VdI22XC"
            },"href": "https://api.spotify.com/v1/tracks/7dcMZLssGtsCJq9VdI22XC","id": "7dcMZLssGtsCJq9VdI22XC","name": "Pink Frosty Demo","preview_url": "https://p.scdn.co/mp3-preview/8dd834d95f6d4d74a36d71f24be422212545c881?cid=ff4c1e3515504e8397510b8d452c0eab","uri": "spotify:track:7dcMZLssGtsCJq9VdI22XC"
        },

解析fugazi_songs .json文件会向我显示指向单个轨道ID的层次结构:

albums.item.tracks.items.item.artists.item.id

我正在使用for循环尝试使用此路径从.json文件中的每首歌曲中获取所有曲目ID。

track_ids = []
for i in range(len(fugazi_songs['albums'])):
track_ids.append(fugazi_songs['albums'][i]['tracks']['items'][i]['id'])

输出仅给我一张专辑的track_id。

track_ids
['4PKl6Tt8YQaJIJmlnwELi7','44ETQCGE31ypmEc5ut3WMe','18CrxbPSUzPlibPB7jjsbi','2iNaUrp1SRBFoJnJqhbwS8','3SdaSSuc4prTO9IKFZEvxd','21ObFu22NhjfhXJm51Idij','2jKNbuegISV7YPdvXu3vaB','7r5rLLUes9m2bKvdmESzBP','6JPcT2uMbQzmdp6VJFa9bA']

我确定解决方案很简单-但是我花了数小时试图弄清楚这一点。

如何获取从sp.albums生成的.json文件中收集的多个专辑的所有曲目?

非常感谢您抽出宝贵的时间阅读本文,感谢您的投入!

解决方法

如果我正确地理解了您的代码和数据,则您不是从一张专辑中获得全部歌曲,而是从第一张专辑中获得第一首歌曲,从第二张专辑中获得第二首歌曲,依此类推(请检查一下)。我认为您必须将代码更改为此:

track_ids = []
for album_id in range(len(fugazi_songs['albums'])):
    for track_id in range(len(fugazi_songs['albums'][album_id]['tracks']['items']))
        track_ids.append(fugazi_songs['albums'][album_id]['tracks']['items'][track_id]['id'])

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 <select id="xxx"> SELECT di.id, di.name, di.work_type, di.updated... <where> <if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 <property name="dynamic.classpath" value="tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-