Bilibili 上传相关接口分析

最近在做一些相关的事情,在这里做个笔记。

目前,Bilibili 的上传是随机给用户分配方式,包括七牛、自己的服务器或者其他什么什么。应该有四到五中。其中,七牛的上传是最方便的。这里就以七牛为例子。

请求上传Token

GET https://member.bilibili.com/preupload

{
                name: "文件名",
                size: "文件大小,单位字节",
                r: "qn", // qn 代表七牛
                profile: "ugcfr/web3", // 未知,不改动
                ssl: "1" // 固定为1
            }

此时会返回一个 uploadToken,这个就是拿去给七牛看的,按照七牛的分块上传的流程随便喂给七牛均可。此外还会返回一个文件名,是B站分配给这个文件的服务器上的文件名,记下来。

通知上传开始

GET https://data.bilibili.com/v/web/web_ugc_upload

{
                mid: "用户ID",
                fts: "cookie中有一个叫fts的字段",
                url: "https%3A%2F%2Fmember.bilibili.com%2Fvideo%2Fresubmit.html",
                proid: "1",
                ptype: "1",
                eventid: "start",
                filename: "上个阶段拿到的文件名",
                filesize: "文件大小,单位M,去尾",
                ver: "v3_2.0.3",
                cdn: "http://upcdn-os.acgvideo.com/",
                _: new Date().valueOf() // 当前时间戳
            }

fts推测为first login time的缩写。

通知上传结束

GET https://data.bilibili.com/v/web/web_ugc_upload

{
                mid: "用户ID",
                fts: getFts(),
                url: "https%3A%2F%2Fmember.bilibili.com%2Fvideo%2Fresubmit.html",
                proid: "1",
                ptype: "1",
                eventid: "success",
                filename: "上个阶段拿到的文件名",
                filesize: "文件大小,单位M,去尾",
                ver: "v3_2.0.3",
                cdn: "http://upcdn-os.acgvideo.com/",
                _: new Date().valueOf() // 当前时间戳
            }

提交稿件

POST https://member.bilibili.com/x/vu/web/add

{
                copyright: 2, // 1是原创2是转载
                cover: "",
                csrf: "", // cookie中一个叫bili_jct的字段
                desc: "", // 简介
                mission_id: 0, // 应该是参加活动
                no_reprint: 0, // 是否禁止转载
                source: source, // 来源
                tag: tags.join(','), // 标签,半角逗号分隔
                tid: tid, // 投稿分类id
                title: title, // 标题
                videos: [
                    {
                        desc: "", // P1 的简介
                        filename: "之前拿到的服务器分配的文件名",
                        title: "" // P1 的标题
                    }
                ]
}

 

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注