You need to enable JavaScript to run this app. 如何基于Spotify API实现满100首后自动新建序列播放列表的自动化流程
优惠活动
大模型
产品
解决方案
定价
更多

如何基于Spotify API实现满100首后自动新建序列播放列表的自动化流程

自动化全流程实现方案

核心逻辑拆解

完全匹配你提出的命名规则、100首单列表容量上限、自动创建新列表的要求,以及举的244首曲目的实际场景,全流程不需要人工干预,分为3个固定步骤:

  • 第一步:前置数据准备
    • 拉取所有待归类的源曲目,严格按照曲目首次添加到外部播放列表的added_at时间戳升序排序,保证曲目顺序完全符合要求
    • 拉取当前账号下所有已存在的播放列表,自动过滤出命名匹配Playlist #数字规则的列表,解析每个列表的当前实际曲目总数
  • 第二步:定位当前填充的起始位置
    • 把所有匹配规则的播放列表按编号从小到大排序,依次计算每个列表的剩余可填充容量(100 - 当前曲目数)
    • 找到第一个剩余容量>0的列表作为当前填充目标,优先填满这个列表的剩余空间,不直接跳去创建新列表
    • 如果所有已有的同规则列表都已经达到100首的容量上限,就自动生成编号最大的下一个序列列表作为填充目标

    注意:你目前编写的代码仅实现了“生成下一个序列播放列表名称”的单步逻辑,缺失了优先填充未达容量上限的已有列表的核心判断——如果直接基于这部分代码跑,会跳过还有30个空位的Playlist #4,直接从Playlist #5开始填,和实际需求不符。另外原代码里'Playlist #2'缺失左引号,运行时会触发语法报错。
    可以把序列识别逻辑优化成兼容所有命名匹配场景的健壮版本,避免识别错列表编号:

    import re
    
    def parse_playlist_seq(playlist_name: str) -> int | None:
        # 严格匹配Playlist #加数字的命名规则,过滤其他无关列表
        match = re.match(r"^Playlist #(\d+)$", playlist_name.strip())
        return int(match.group(1)) if match else None
    
    # 示例:你提到的现有列表场景
    existing_playlists = [
        {"name": "Playlist #1", "track_count": 100},
        {"name": "Playlist #2", "track_count": 100},
        {"name": "Playlist #3", "track_count": 100},
        {"name": "Playlist #4", "track_count": 70}
    ]
    
    # 定位填充起点
    sorted_existed = sorted(
        [pl for pl in existing_playlists if parse_playlist_seq(pl["name"]) is not None],
        key=lambda x: parse_playlist_seq(x["name"])
    )
    current_target = None
    current_capacity = 0
    for pl in sorted_existed:
        remain = 100 - pl["track_count"]
        if remain > 0:
            current_target = pl["name"]
            current_capacity = remain
            break
    # 所有已有列表都满了就新建下一个序列列表
    if current_target is None:
        max_seq = max(parse_playlist_seq(pl["name"]) for pl in sorted_existed)
        current_target = f"Playlist #{max_seq + 1}"
        current_capacity = 100
    
  • 第三步:循环批量填充曲目
    • 把之前排好序的待归类曲目按当前填充目标的容量切分块,每一块直接调用添加曲目的接口写入对应播放列表
    • 每填满一个播放列表(曲目数到100),自动生成下一个序列编号的新列表,把后续待添加的曲目切分新的块继续填充,直到所有待归类曲目全部处理完成

    对应你提到的244首待处理曲目的场景,流程会自动运行成:

    1. 填充Playlist #4:剩余30个位置,放入排序后的前30首曲目,填满
    2. 自动创建Playlist #5:放入接下来的100首曲目,填满
    3. 自动创建Playlist #6:放入接下来的100首曲目,填满
    4. 自动创建Playlist #7:放入剩余的14首曲目,完成全流程

实操注意事项

  • 调用接口添加曲目时,单次请求最多支持传入100个曲目URI,刚好和每个播放列表的最大容量匹配,不需要额外做细粒度拆分
  • 拉取源曲目和已有播放列表时要处理分页逻辑,避免只拉取第一页数据导致的顺序错乱、曲目遗漏
  • 每完成一个播放列表的填充,重新拉取列表的实际曲目数做校验,避免因为接口异常导致的重复添加、曲目缺失

内容的提问来源于stack exchange,提问作者thereceptionist

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 15:06:09