在百度网盘和素材库之间搬文件:从网盘导入,或把素材存到网盘。
在百度网盘和素材库之间搬文件:把网盘里的素材拉进来,也把成片存回去。
| 工具 | 名字 | 干什么 |
|---|---|---|
pan_list | 列出网盘目录 | 列一个目录下的文件和子目录,给出 fs_id;没列完时交回 has_more 和 next_start |
pan_search | 搜索网盘文件 | 按文件名搜(递归),找不准路径时用它;命中比 limit 多时 has_more 为真 |
pan_import | 从百度网盘导入 | 按 fs_id 把文件拉进素材库,返回 asset_id。fs_id 声明成 format: "external_id"(网盘里的编号):工作流和对话里用,不上画板 |
pan_upload | 上传到百度网盘 | 把素材库里的一个文件传到网盘,返回 fs_id;边传边报进度,可取消,最长 30 分钟 |
拿到 asset_id 之后它就是一份普通素材:插时间线、当生成的首帧、拿去发布,都一样。
pan_import 和 pan_upload 也都是工作流节点(「从百度网盘导入」/「上传到百度网盘」)。
百度的上传协议本身就是三步,不是这里绕远:
少一步都不行:只传不 create 的话,文件在网盘上根本不存在,而 superfile2 全都返回成功。
默认不覆盖 —— 同名文件已存在时另存为副本。传错一次就把人家网盘上的东西冲掉,
这个代价比多一个副本大得多。要覆盖就显式传 overwrite: true。
md5 是流式算的,不整个载进内存 —— 上传的常常是几个 G 的成片。
上传是流式工具:每传完一片报一次进度(工作流节点上看得到「已上传 12.0 / 96.0 MB」),
取消时停在片与片之间;清单给它声明了 30 分钟的预算(timeout_seconds),默认的 60 秒装不下几百 MB 的成片。
网盘路径没写开头的 / 也认。
pan_upload 的 asset_id 在清单里标了 "format": "asset",所以宿主交过来的已经是一个
本地路径(见 PLUGIN_MANIFEST.md 的「要收一个文件」)。
插件这一侧不知道素材库存在,也不需要知道。
给的是副本不是原件,调用结束即删。
换回来的 refresh_token(有效期 10 年)和 access_token 自动存进这个连接,那条「授权」变成已授权。
这两格不和 AppKey 摆在一起;手里已经有 refresh_token 的话,点「授权」那一行的「手动填写令牌」展开自己填,
Access Token 那一格留空即可 —— 插件会用 refresh_token 自己换。
百度不再接受已存的令牌时(refresh_token 被作废、续过一次还是说过期),插件在失败响应里带上
reauthorize: true,连接会标成需要重新授权 —— 点「重新授权」走一遍就好。
百度的 access_token 三十天到期。插件撞上「过期」那个 errno 就换一个新的、原样重试一次,
并把换来的 token 交回宿主记住(靠 state 通道)。
你填一次 refresh_token 就不用再管。
access_token 和 refresh_token 都会被记住 —— 百度换 token 时会连 refresh_token 一起 轮换,只存前者的话,三十天后拿着一个已经作废的去换,得到的是一个查不出原因的失败。
续了一次还是过期,说明问题不在有效期上(AppKey 不对、应用被停用),这时才会报到界面上, 并且只重试一次 —— 再试就是拿同一个错误刷接口。
每一条接口都走同一个续期口子,上传的 precreate / create 也不例外;同一次调用里续第二次时用的是 刚轮换出来的那个 refresh_token。续完之后这次调用失败了(比如文件不存在),新令牌也照样交回去记住 —— 旧的那个已经被百度作废了。
pan_import 只换到 dlink 就交给宿主(见 PLUGIN_MANIFEST.md
的 artifact 那节)。理由不是省事:
dlink 恰好是必须带凭据才能下的那种地址:不带 User-Agent: pan.baidu.com 直接 403,
还要把 access_token 拼在 url 上。所以交出去的不只是 url,还有那组请求头 —— 这也正是
artifact 通道支持 headers 的原因。
接口形状按开放平台文档写,离线部分(参数拼装、分页、errno 翻译、artifact 交接)有测试覆盖。
尚未对着真实账号跑过 —— 第一次接上真号时请核对一遍 pan_list / filemetas 的返回字段。
pan_list列出百度网盘某个目录下的文件和子目录。返回每一项的 fs_id、文件名、大小、是不是目录。fs_id 是后面 pan_import 要用的。一次最多 limit 条,还有没列出的时 has_more 为真,把 next_start 传回 start 接着列。
pan_search按文件名在百度网盘里搜索。找不准路径时用这个,比一层层 pan_list 快。返回同样带 fs_id;命中比 limit 多时 has_more 为真 —— 换个更准的关键词或限定目录。
pan_import把百度网盘里的一个文件拉进素材库。传 pan_list / pan_search 给出的 fs_id。返回 asset_id,之后就和别的素材一样用。
pan_upload把素材库里的一个文件传到百度网盘。传 asset_id 和网盘上的目标路径(如 /我的资源/成片.mp4)。边传边报进度,最长 30 分钟。
权限是逐项给的:装之前,应用会把它声明的权限摊开给你看。本地脚本以你当前用户的权限运行,只装信得过的来源。