You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用myjdapi删除含.opus后缀链接失败的技术求助

解决myjdapi无法删除.opus后缀下载链接的问题

问题分析

你的脚本能正常遍历下载包和文件名,但删除操作无效,核心原因是JD API通过链接唯一ID而非文件名执行删除操作,如果你的代码仅传递文件名或未正确获取链接ID,就会导致删除失败。

修正方案及代码示例

以下是可直接运行的修正代码,包含两种删除逻辑:删除所有.opus链接,或仅删除对应存在同前缀.m4a文件的.opus链接:

from myjdapi import Myjdapi

# 初始化并连接JD账户
jd = Myjdapi()
jd.connect('你的JD账户邮箱', '你的JD账户密码')

# 获取所有下载包
all_packages = jd.downloads.query_packages()

for pkg in all_packages:
    # 获取当前包内的所有下载链接
    links_in_pkg = pkg.query_links()
    opus_link_ids = []
    
    # 收集包内所有.m4a文件的前缀(用于匹配对应opus)
    m4a_filename_prefixes = [link.name.rsplit('.', 1)[0] for link in links_in_pkg if link.name.endswith('.m4a')]
    
    for link in links_in_pkg:
        # 判断当前链接是否为opus格式
        if link.name.endswith('.opus'):
            link_prefix = link.name.rsplit('.', 1)[0]
            # 两种逻辑二选一:
            
            # 逻辑1:删除所有opus链接
            opus_link_ids.append(link.id)
            
            # 逻辑2:仅删除存在对应m4a文件的opus链接(注释掉逻辑1,启用此段)
            # if link_prefix in m4a_filename_prefixes:
            #     opus_link_ids.append(link.id)
    
    # 批量删除目标链接
    if opus_link_ids:
        pkg.remove_links(opus_link_ids)
        print(f"已清理包「{pkg.name}」中的{len(opus_link_ids)}个opus链接")

关键注意事项

  • 必须使用链接ID:JD API的删除操作依赖链接的唯一id属性,而非文件名,这是你之前操作失败的核心原因。
  • 批量删除更高效:通过收集ID列表批量调用remove_links,比逐个删除更符合API设计逻辑。
  • 权限与状态检查:确保你的账户对这些下载链接有管理权限;如果链接处于正在下载状态,部分场景下需要先调用link.pause()再执行删除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 01:17:41