813 lines
278 KiB
HTML
813 lines
278 KiB
HTML
<!doctype html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="utf-8" />
|
||
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
||
<meta name="generator" content="VuePress 2.0.0-rc.24" />
|
||
<style>
|
||
:root {
|
||
--vp-c-bg: #fff;
|
||
}
|
||
|
||
[data-theme='dark'] {
|
||
--vp-c-bg: #1b1b1f;
|
||
}
|
||
|
||
html,
|
||
body {
|
||
background-color: var(--vp-c-bg);
|
||
}
|
||
</style>
|
||
<script>
|
||
const useChoice = localStorage.getItem('vuepress-color-scheme')
|
||
const systemStatus =
|
||
'matchMedia' in window
|
||
? window.matchMedia('(prefers-color-scheme: dark)').matches
|
||
: false
|
||
|
||
if (useChoice === 'light') {
|
||
document.documentElement.dataset.theme = 'light'
|
||
} else if (useChoice === 'dark' || systemStatus) {
|
||
document.documentElement.dataset.theme = 'dark'
|
||
}
|
||
</script>
|
||
<link rel="icon" href="/bilibili-API-collect/logo2.jpg"><title>投稿 | BAC Document</title><meta name="description" content="社区开源的第三方哔哩哔哩 API 文档">
|
||
<link rel="preload" href="/bilibili-API-collect/assets/style-D1PJH1oj.css" as="style"><link rel="stylesheet" href="/bilibili-API-collect/assets/style-D1PJH1oj.css">
|
||
<link rel="modulepreload" href="/bilibili-API-collect/assets/app-Dgsdh8A6.js"><link rel="modulepreload" href="/bilibili-API-collect/assets/upload.html-DvDEkxhj.js">
|
||
<link rel="prefetch" href="/bilibili-API-collect/assets/CONTRIBUTING.html-Dg5RrJ0s.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/index.html-CyFjrwOB.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/index.html-DfGFo93u.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/splash.html-DTxmsPVe.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/ver.html-BK7Hl968.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-CRFYL4xy.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/list.html-67H6b90D.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-CkX_wc45.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/activity_list.html-Bekn3Lxe.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-DMnsBsuq.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/list.html-CBuhzqhd.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/recommend_author.html-DBwItBdc.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-C0ql065z.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/articles.html-zLkcz3pu.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/card.html-wL4C5GKc.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/category.html-Xldy-aPs.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-CB0fSHFP.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/view.html-COrufaKB.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-BeujPZDG.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-DvFa4PRS.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/music_list.html-DeijlME4.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/musicstream_url.html-qq6CNfyp.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/rank.html-DT2C28KO.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/status_number.html-DEiPXucy.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/follow.html-DOVJW4CZ.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-BLypTc8g.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/season_index.html-BSNCSXU1.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/timeline.html-CzpzQzIG.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/videostream_url.html-DlvjAVi_.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/banlist.html-Bx6m-UTQ.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/index.html-BMdR7u31.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/video_room.html-CJ-aNxn7.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-BHbw7wWp.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/videostream_url.html-DnLcd0On.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/ip.html-BZmNmhHk.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-D_ydhzqh.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/list.html-D36gw51A.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/index.html-BN64GETH.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/opus.html-CoQ5EdO3.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/railgun.html-2O05GCD4.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/season.html-B_fCwBA8.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/statistics_data.html-BWH8OqIZ.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/videos.html-4_uXrA4K.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/msg.html-C4G_rrXA.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-DeaDnvTK.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/buzzword.html-3axAz5ab.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/config.html-P2TT80Ma.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/danmaku_proto.html-B5M4AXvu.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/danmaku_view_proto.html-DtK2aZTc.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/danmaku_xml.html-bHEnwOx6.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/history.html-D731H-Qd.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/snapshot.html-sItLSrou.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/thumbup.html-oIOmP01b.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/webmask.html-BwxLSheT.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-D9uytAI1.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/all.html-MgLtiraJ.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/atlist.html-CG0zNeT5.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/banner.html-W9RH5Lg_.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/basicInfo.html-DamYRO2m.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/card_info.html-BWktH6O6.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/content.html-DefzfqTR.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/detail.html-DH1NRSL5.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/dynamic_enum.html-DL_Gf64x.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/get_dynamic_detail.html-Bbk5LVZ-.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/nav.html-D91zXMZR.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/publish.html-DaacAe0m.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/space.html-BjwA2AkB.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/topic.html-CxxVTskb.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/Bcoin.html-BhhfS1Rx.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/WeChat_Alipay.html-D7UPw-Mv.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/charge_list.html-DOFwkRFh.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/charge_msg.html-Bd63UhW6.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/monthly.html-D8O3h0v-.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-DvqnymQp.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/list.html-Dk7ayv8u.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-DkRNgDlt.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-BSjizl7z.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/list.html-BfbnP9bx.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/color.html-D1CBKZrT.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/lottery.html-DbmXyYLK.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/skin.html-B7_-FfE5.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/history.html-U2B19yU-.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/toview.html-m3XzHepP.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/danmaku.html-cYqsa6rm.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/emoticons.html-XPYXDzf0.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/follow_up_live.html-B7NT2XJb.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/gift.html-CPTDEb2_.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/guard.html-CgEHD9Az.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-bgddEvuk.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/live_area.html-UOPRZqNz.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/live_bill.html-Bxf6rN7p.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/live_data.html-DPx4fcGp.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/live_replay.html-iMUKGSwe.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/live_stream.html-CTvbm8Zd.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/live_vote.html-niGIJdSc.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/manage.html-DmvWf2hl.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/message_stream.html-DYabMnOf.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/recommend.html-0Yo2xP9c.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/redpocket.html-Bc9pXjpT.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/report.html-BHBFFQZc.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/silent_user_manage.html-8B8EvR5w.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/user.html-FhJX8EJT.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/cookie_refresh.html-C-y7uaCA.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/exit.html-wyBJUhyQ.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/login_info.html-DcTURbz0.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/login_notice.html-BXRbf4ou.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/member_center.html-UE6PIsuf.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/Activity.html-Bxk-gk5Y.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/ClockIn.html-CenNAwzg.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/Comic.html-CLerib4W.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/Download.html-Br9YEqP_.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/Season.html-Bv-xbTdd.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/User.html-BxuEgE-I.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/index_file.html-KxhduYzw.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/light_card.html-BX3csIVY.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/point_shop.html-BUYGiY4x.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/msg.html-DgLc4Fa5.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/private_msg.html-CTuY6IIe.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/private_msg_content.html-DnEBdBrk.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/settings.html-BbVpohbZ.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/b23tv.html-Dxsq1OVj.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/buvid3_4.html-DBUwha3H.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/bvid_desc.html-C81lzKez.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/device_identity.html-B5I04eFh.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/errcode.html-BlmDP2Xd.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/mathjax.html-B4Rx2kT_.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/picture.html-CKV2obIX.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/time_stamp.html-Cf7HhcO3.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-UGem3f8j.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/fetch.html-BtDU5o5f.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-C9gLOntC.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-DLzbyzsd.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-BtDZhXMA.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/list.html-Db8OOHOo.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/index.html-5vHX0xv-.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/detail.html-VOBIbF4h.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/features.html-DiZBiXUW.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/rich_text_nodes.html-BvGiNCao.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/space.html-BdhGUVoS.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/hot.html-C_FX8JaJ.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/search_request.html-xQgx95ji.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/search_response.html-BFpK_6jG.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/suggest.html-DlPRFJxV.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/teenager_mode.html-D3G18A_n.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/batch.html-cGq5Qeh2.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/check_nickname.html-BRdxxp6m.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/contract.html-YS65q_jn.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-CktfHCh6.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/medals.html-BRvf8EJa.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/official_role.html-CBvofUdP.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/register.html-BOasFjaK.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/relation.html-b3hEZ13C.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/space.html-BfZb_dIi.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/status_number.html-BT56l5dB.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-DLBmRfG7.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/appeal.html-CcLQmg66.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/attribute_data.html-C_YkRlS-.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/collection.html-B-uxvybk.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-L873uB9d.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/interact_video.html-DoiQ0Pcr.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/online.html-DJ5lT1x9.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/pbp.html-BBYSf0a-.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/player.html-ZpJBp7gv.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/recommend.html-D0A21iEw.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/report.html-DuHXegGH.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/snapshot.html-hqn3Xd78.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/status_number.html-iguXtKgQ.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/summary.html-DYcY1pBr.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/tags.html-Jjo00nOo.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/video_zone.html-B-nRnqQj.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/video_zone_v2.html-Cqbk0tky.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/videostream_url.html-JIL5pwcj.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/dynamic.html-BfZKb2_b.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/popular.html-xzW9jflm.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/precious_videos.html-DUvixdN1.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/ranking.html-Cx0F7V2z.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-1E0fVjfS.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/center.html-FZSMvI39.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/clockin.html-CE6-I-0u.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-D7kTJjVD.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/info.html-Bj2GpsEI.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/404_manga.html-CkQTSSKc.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/banner.html-CWlCIz3C.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/header.html-CSeKquiq.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/zone_upload.html-CcYIfnj4.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/action.html-BIakPva5.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/base_info.html-DevYYkKc.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/judgement_info.html-BuyAWrJX.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/QR.html-BHJa37nz.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/SMS.html-In_XL6PP.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/password.html-CmP0Tl9k.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/index.html-B3pWXgRb.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/APP.html-CuPBHwrB.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/APPKey.html-CPC2-tlJ.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/bili_ticket.html-BusUE46s.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/v_voucher.html-BbbVVnZu.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/wbi.html-D21GJ5Gx.js" as="script"><link rel="prefetch" href="/bilibili-API-collect/assets/404.html-DrI-cPdQ.js" as="script">
|
||
</head>
|
||
<body>
|
||
<div id="app"><!--[--><div class="vp-theme-container external-link-icon" vp-container><!--[--><header class="vp-navbar" vp-navbar><div class="vp-toggle-sidebar-button" title="toggle sidebar" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a class="route-link" href="/bilibili-API-collect/"><img class="vp-site-logo" src="/bilibili-API-collect/logo2.jpg" alt="BAC Document"><span class="vp-site-name vp-hide-mobile" aria-hidden="true">BAC Document</span></a></span><div class="vp-navbar-items-wrapper" style=""><!--[--><!--]--><nav class="vp-navbar-items vp-hide-mobile" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link auto-link" href="/bilibili-API-collect/" aria-label="首页"><!--[--><!--[--><!--]--><!--]-->首页<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/bilibili-API-collect/#🍴目录" aria-label="目录"><!--[--><!--[--><!--]--><!--]-->目录<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/bilibili-API-collect/CONTRIBUTING.html" aria-label="贡献指南"><!--[--><!--[--><!--]--><!--]-->贡献指南<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="相关社群"><span class="title">相关社群</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="相关社群"><span class="title">相关社群</span><span class="right arrow"></span></button><ul class="vp-navbar-dropdown" style="display:none;"><!--[--><li class="vp-navbar-dropdown-item"><a class="auto-link external-link" href="http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=ympvb3LAPT-Ulu3ezhGqbkJ8zXMKImOX&authKey=z1KdkOdKO3wytN43m9K6On9nBtnDL4pAoD6VQHCipFBb9TasNDKuDHCmOE6TF3uc&noverify=0&group_code=191187164" aria-label="QQ交流群(综合技术交流)" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->QQ交流群(综合技术交流)<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="auto-link external-link" href="https://t.me/bilibili_API_collect_community" aria-label="Telegram交流群(Github Bot推送)" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->Telegram交流群(Github Bot推送)<!--[--><!--[--><!--]--><!--]--></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><a class="auto-link external-link" href="https://github.com/SocialSisterYi/bilibili-API-collect" aria-label="GitHub" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->GitHub<!--[--><!--[--><!--]--><!--]--></a></div><!--]--></nav><!--[--><!--]--><button type="button" class="vp-toggle-color-mode-button" title="toggle color mode"><svg class="light-icon" viewbox="0 0 32 32" style=""><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg class="dark-icon" viewbox="0 0 32 32" style="display:none;"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z" fill="currentColor"></path></svg></button><form class="search-box" role="search"><input type="search" placeholder="搜索" autocomplete="off" spellcheck="false" value><!----></form></div></header><!--]--><div class="vp-sidebar-mask"></div><!--[--><aside class="vp-sidebar" vp-sidebar><nav class="vp-navbar-items" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link auto-link" href="/bilibili-API-collect/" aria-label="首页"><!--[--><!--[--><!--]--><!--]-->首页<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/bilibili-API-collect/#🍴目录" aria-label="目录"><!--[--><!--[--><!--]--><!--]-->目录<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/bilibili-API-collect/CONTRIBUTING.html" aria-label="贡献指南"><!--[--><!--[--><!--]--><!--]-->贡献指南<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><div class="vp-navbar-dropdown-wrapper"><button class="vp-navbar-dropdown-title" type="button" aria-label="相关社群"><span class="title">相关社群</span><span class="arrow down"></span></button><button class="vp-navbar-dropdown-title-mobile" type="button" aria-label="相关社群"><span class="title">相关社群</span><span class="right arrow"></span></button><ul class="vp-navbar-dropdown" style="display:none;"><!--[--><li class="vp-navbar-dropdown-item"><a class="auto-link external-link" href="http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=ympvb3LAPT-Ulu3ezhGqbkJ8zXMKImOX&authKey=z1KdkOdKO3wytN43m9K6On9nBtnDL4pAoD6VQHCipFBb9TasNDKuDHCmOE6TF3uc&noverify=0&group_code=191187164" aria-label="QQ交流群(综合技术交流)" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->QQ交流群(综合技术交流)<!--[--><!--[--><!--]--><!--]--></a></li><li class="vp-navbar-dropdown-item"><a class="auto-link external-link" href="https://t.me/bilibili_API_collect_community" aria-label="Telegram交流群(Github Bot推送)" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->Telegram交流群(Github Bot推送)<!--[--><!--[--><!--]--><!--]--></a></li><!--]--></ul></div></div><div class="vp-navbar-item"><a class="auto-link external-link" href="https://github.com/SocialSisterYi/bilibili-API-collect" aria-label="GitHub" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->GitHub<!--[--><!--[--><!--]--><!--]--></a></div><!--]--></nav><!--[--><!--]--><ul class="vp-sidebar-items"><!--[--><li><p tabindex="0" class="vp-sidebar-item vp-sidebar-heading">投稿 <!----></p><!----></li><!--]--></ul><!--[--><!--]--></aside><!--]--><!--[--><main class="vp-page"><!--[--><!--]--><div vp-content><!--[--><!--]--><div id="content"><h1 id="投稿" tabindex="-1"><a class="header-anchor" href="#投稿"><span>投稿</span></a></h1><h2 id="上传封面" tabindex="-1"><a class="header-anchor" href="#上传封面"><span>上传封面</span></a></h2><blockquote><p>https://member.bilibili.com/x/vu/web/cover/up</p></blockquote><p><em>请求方式: POST</em></p><p>认证方式:Cookie(SESSDATA)</p><p>注: 目前看来上传的图片似乎不会自动删除</p><p><strong>URL参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>ts</td><td>num</td><td>当前时间</td><td>不必要</td><td>UNIX 毫秒时间戳</td></tr></tbody></table><p><strong>正文参数(application/x-www-form-urlencoded):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>csrf</td><td>str</td><td>CSRF Token (位于 Cookie 中 bili_jct)</td><td>必要</td><td></td></tr><tr><td>cover</td><td>base64</td><td>视频封面</td><td>必要</td><td>经过 base64 编码的图片数据</td></tr></tbody></table><p><strong>JSON回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0: 成功<br>-400: 请求错误<br>-111: csrf 校验失败<br>-101: 账号未登录</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为 0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p><code>data</code> 对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>url</td><td>str</td><td>封面 URL</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><p>假设已经把需要发送的数据进行编码存放在文件 <code>./b64</code> 中:</p><div class="language-text line-numbers-mode" data-highlighter="shiki" data-ext="text" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-text"><span class="line"><span>csrf=xxxxxxxxxxxx&cover=data%3Aimage%2Fjpeg%3Bbase64%2C%2F9j%2F4AAQSkZJRgABA...</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>发送请求:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -X</span><span style="color:#CE9178;"> POST</span><span style="color:#569CD6;"> --url</span><span style="color:#CE9178;"> "https://member.bilibili.com/x/vu/web/cover/up"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--url-query </span><span style="color:#CE9178;">"ts=$(</span><span style="color:#DCDCAA;">date</span><span style="color:#CE9178;"> +%s%3N)"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--data-binary </span><span style="color:#CE9178;">@b64</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">"SESSDATA=xxxxxx; bili_jct=xxxxxx"</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>JavaScript (Node.js) 请求<a href="https://gist.github.com/SessionHu/5e47a3a1a351ac5486c87e3d63930e7a" target="_blank" rel="noopener noreferrer">示例</a></p><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "url"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://archive.biliimg.com/bfs/archive/77906db03b1eefac02613de184afad03f7bc58d7.jpg"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="获取上传模板列表" tabindex="-1"><a class="header-anchor" href="#获取上传模板列表"><span>获取上传模板列表</span></a></h2><blockquote><p>https://member.bilibili.com/x/vupre/web/tpls</p></blockquote><p><em>请求方式: GET</em></p><p>认证方式:Cookie(SESSDATA)</p><p><strong>URL参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>t</td><td>num</td><td>当前时间</td><td>非必要</td><td>UNIX 毫秒时间戳</td></tr></tbody></table><p><strong>JSON回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0: 成功<br>其他: 失败</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为 0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>array</td><td>模板列表</td><td></td></tr></tbody></table><p><code>data</code> 数组中的对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>tid</td><td>num</td><td>模板 ID</td><td></td></tr><tr><td>name</td><td>str</td><td>模板名称</td><td></td></tr><tr><td>typeid</td><td>num</td><td>分区 ID</td><td></td></tr><tr><td>title</td><td>str</td><td>标题</td><td></td></tr><tr><td>tags</td><td>str</td><td>标签</td><td></td></tr><tr><td>description</td><td>str</td><td>描述</td><td></td></tr><tr><td>copyright</td><td>num</td><td>版权类型</td><td>1: 自制<br>2: 转载</td></tr><tr><td>attribute</td><td>num</td><td>属性</td><td>0 或其他</td></tr><tr><td>is_default</td><td>num</td><td>是否默认</td><td>0: 否<br>1: 是</td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> "https://member.bilibili.com/x/vupre/web/tpls"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">"SESSDATA=xxxxxxxxxxx"</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: [</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "tid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">12</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"直播录像"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "typeid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">173</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "title"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">" 标题"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "tags"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"可爱"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "description"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"描述"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "copyright"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "attribute"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "is_default"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> ]</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="编辑上传模板" tabindex="-1"><a class="header-anchor" href="#编辑上传模板"><span>编辑上传模板</span></a></h2><blockquote><p>https://member.bilibili.com/x/vupre/web/tpl/update</p></blockquote><p><em>请求方式: POST</em></p><p>认证方式:Cookie(SESSDATA)</p><p><strong>URL参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>t</td><td>num</td><td>当前时间</td><td>非必要</td><td>UNIX 毫秒时间戳</td></tr></tbody></table><p><strong>正文参数(application/json):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>tid</td><td>num</td><td>模板 ID</td><td>必要</td><td></td></tr><tr><td>name</td><td>str</td><td>模板名称</td><td>非必要</td><td></td></tr><tr><td>title</td><td>str</td><td>标题</td><td>非必要</td><td></td></tr><tr><td>keywords</td><td>str</td><td>标签</td><td>非必要</td><td>多个标签用 <code>,</code> 分隔</td></tr><tr><td>description</td><td>str</td><td>描述</td><td>非必要</td><td></td></tr><tr><td>typeid</td><td>num</td><td>分区 ID</td><td>非必要</td><td></td></tr><tr><td>arctype</td><td>str</td><td>版权类型</td><td>非必要</td><td>"Original": 自制<br>"Copy": 转载</td></tr><tr><td>is_default</td><td>num</td><td>是否默认</td><td>非必要</td><td>0: 否<br>1: 是</td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token (位于 Cookie 中 bili_jct)</td><td>必要</td><td></td></tr></tbody></table><p><strong>JSON回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0: 成功<br>其他: 失败</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为 0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -X</span><span style="color:#CE9178;"> POST</span><span style="color:#CE9178;"> "https://member.bilibili.com/x/vupre/web/tpl/update"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--url-query </span><span style="color:#CE9178;">"t=$(</span><span style="color:#DCDCAA;">date</span><span style="color:#CE9178;"> +%s%3N)"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">-H </span><span style="color:#CE9178;">"Content-Type: application/json"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--data </span><span style="color:#CE9178;">'{</span></span>
|
||
<span class="line"><span style="color:#CE9178;"> "tid": 12,</span></span>
|
||
<span class="line"><span style="color:#CE9178;"> "name": "新模板名称",</span></span>
|
||
<span class="line"><span style="color:#CE9178;"> "title": "新标题",</span></span>
|
||
<span class="line"><span style="color:#CE9178;"> "keywords": "标签1,标签2",</span></span>
|
||
<span class="line"><span style="color:#CE9178;"> "description": "新描述",</span></span>
|
||
<span class="line"><span style="color:#CE9178;"> "typeid": 173,</span></span>
|
||
<span class="line"><span style="color:#CE9178;"> "arctype": "Original",</span></span>
|
||
<span class="line"><span style="color:#CE9178;"> "is_default": 1,</span></span>
|
||
<span class="line"><span style="color:#CE9178;"> "csrf": "xxxxxxxxxxxx"</span></span>
|
||
<span class="line"><span style="color:#CE9178;">}'</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">"SESSDATA=xxxxxxxxxxx"</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="查询话题" tabindex="-1"><a class="header-anchor" href="#查询话题"><span>查询话题</span></a></h2><blockquote><p>https://member.bilibili.com/x/vupre/web/topic/type</p></blockquote><p><em>请求方式: GET</em></p><p>认证方式:Cookie(SESSDATA)</p><p><strong>URL参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>type_id</td><td>num</td><td>分区 ID</td><td>非必要</td><td></td></tr><tr><td>pn</td><td>num</td><td>页码</td><td>必要</td><td>从 0 开始</td></tr><tr><td>ps</td><td>num</td><td>每页个数</td><td>必要</td><td></td></tr><tr><td>title</td><td>str</td><td>视频标题</td><td>非必要</td><td></td></tr><tr><td>t</td><td>num</td><td>当前时间</td><td>非必要</td><td>UNIX 毫秒时间戳</td></tr></tbody></table><p><strong>JSON回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0: 成功<br>其他: 失败</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为 0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>array</td><td>话题列表</td><td></td></tr></tbody></table><p><code>data</code> 数组中的对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>topic_id</td><td>num</td><td>话题 ID</td><td></td></tr><tr><td>topic_name</td><td>str</td><td>话题名称</td><td></td></tr><tr><td>description</td><td>str</td><td>话题描述</td><td></td></tr><tr><td>mission_id</td><td>num</td><td>任务 ID</td><td></td></tr><tr><td>activity_text</td><td>str</td><td>活动文本</td><td></td></tr><tr><td>activity_description</td><td>str</td><td>活动描述</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> "https://member.bilibili.com/x/vupre/web/topic/type"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">"pn=0"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">"ps=20"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">"SESSDATA=xxxxxxxxxxx"</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "topics"</span><span style="color:#D4D4D4;">: [</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "topic_id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1245317</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "topic_name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"疯狂打游戏"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "description"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"疯狂于游戏的世界吧!愿你在这场虚拟的战斗中展现出你非凡的智慧与勇气,让每一个夜晚都充满了激情与荣耀!"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "mission_id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1742462</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "activity_text"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"有奖活动"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "activity_description"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"@神魂の魇 发起"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> ],</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "tags"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">null</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "maxpage"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">200</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "request_id"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"123"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="话题搜索" tabindex="-1"><a class="header-anchor" href="#话题搜索"><span>话题搜索</span></a></h2><blockquote><p>https://member.bilibili.com/x/vupre/web/topic/search</p></blockquote><p><em>请求方式: GET</em></p><p>认证方式:Cookie(SESSDATA)</p><p><strong>URL参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>page_size</td><td>num</td><td>每页个数</td><td>非必要</td><td></td></tr><tr><td>offset</td><td>num</td><td>个数偏移</td><td>非必要</td><td>并非页数</td></tr><tr><td>keywords</td><td>str</td><td>关键字</td><td>非必要</td><td></td></tr><tr><td>t</td><td>num</td><td>当前时间</td><td>非必要</td><td>UNIX 毫秒时间戳</td></tr></tbody></table><p><strong>JSON回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0: 成功<br>其他: 失败</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为 0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p><code>data</code> 对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>result</td><td>obj</td><td>搜索结果</td><td></td></tr></tbody></table><p><code>result</code> 对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>has_create_jurisdiction</td><td>bool</td><td>?</td><td></td></tr><tr><td>is_new_topic</td><td>bool</td><td>是否为新话题?</td><td></td></tr><tr><td>tips</td><td>str</td><td>提示信息</td><td></td></tr><tr><td>page_info</td><td>obj</td><td>分页信息</td><td></td></tr><tr><td>topics</td><td>array</td><td>话题列表</td><td></td></tr></tbody></table><p><code>page_info</code> 对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>has_more</td><td>bool</td><td>是否有更多</td><td></td></tr><tr><td>offset</td><td>num</td><td>偏移量</td><td></td></tr><tr><td>page_number</td><td>num</td><td>页码</td><td></td></tr></tbody></table><p><code>topics</code>数组中的对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>act_protocol</td><td>str</td><td>?</td><td></td></tr><tr><td>activity_sign</td><td>str</td><td>?</td><td></td></tr><tr><td>description</td><td>str</td><td>话题描述</td><td></td></tr><tr><td>id</td><td>num</td><td>话题 ID</td><td></td></tr><tr><td>mission_id</td><td>num</td><td>任务 ID</td><td></td></tr><tr><td>name</td><td>str</td><td>话题名称</td><td></td></tr><tr><td>state</td><td>num</td><td>状态?</td><td></td></tr><tr><td>uname</td><td>str</td><td>?</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> "https://member.bilibili.com/x/vupre/web/topic/search"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">"page_size=20"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">"offset=0"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">"keywords=example"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">"SESSDATA=xxxxxxxxxxx"</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "result"</span><span style="color:#D4D4D4;">: {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "topics"</span><span style="color:#D4D4D4;">: [</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1200265</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"巴黎最前线"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "uname"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "state"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "description"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"巴黎体育盛会前线速递!"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "mission_id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "activity_sign"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "act_protocol"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> ],</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "page_info"</span><span style="color:#D4D4D4;">: {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "page_num"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "offset"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "has_more"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">true</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "is_new_topic"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">false</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "has_create_jurisdiction"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">true</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "tips"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"该话题是UP主活动相关话题,您在话题下的稿件信息可能会被提供给发起话题的UP主,并可能被UP主用于二次创作"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="标签可用性检查" tabindex="-1"><a class="header-anchor" href="#标签可用性检查"><span>标签可用性检查</span></a></h2><blockquote><p>https://member.bilibili.com/x/vupre/web/topic/tag/check</p></blockquote><p><em>请求方式: GET</em></p><p>认证方式:Cookie(SESSDATA)</p><p><strong>URL参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>tag</td><td>str</td><td>需要检查的标签</td><td>必要</td><td></td></tr></tbody></table><p><strong>JSON回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0: 成功<br>其他: 失败</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为 0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><p><code>data</code> 对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>标签状态</td><td>0: 可用<br>其他: 不可用</td></tr><tr><td>content</td><td>str</td><td>错误返回</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> "https://member.bilibili.com/x/vupre/web/topic/tag/check"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">"tag=example_tag"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">"SESSDATA=xxxxxxxxxxx"</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "content"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">16025</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"tag已经被封印了~"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "content"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"服务器错误"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="获取简介相关信息" tabindex="-1"><a class="header-anchor" href="#获取简介相关信息"><span>获取简介相关信息</span></a></h2><blockquote><p>https://member.bilibili.com/x/vupre/web/archive/desc/format</p></blockquote><p><em>请求方式: GET</em></p><p>认证方式:Cookie(SESSDATA)</p><p><strong>URL参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>typeid</td><td>num</td><td>分区 ID</td><td>必要</td><td></td></tr><tr><td>copyright</td><td>num</td><td>版权类型</td><td>必要</td><td>1:自制<br>2:转载</td></tr><tr><td>t</td><td>num</td><td>当前时间</td><td>非必要</td><td>UNIX 毫秒时间戳</td></tr></tbody></table><p><strong>JSON回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0: 成功<br>其他: 失败</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为 0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>null</td><td>信息本体</td></tr></tbody></table><p>注:某个时间点后,没有发现 data 为 null 的情况了,过去为 null 时简介上限250字</p><p><code>data</code> 对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>typeid</td><td>num</td><td>分区 ID</td><td></td></tr><tr><td>id</td><td>num</td><td>ID</td><td></td></tr><tr><td>lang</td><td>num</td><td>未知</td><td></td></tr><tr><td>copyright</td><td>num</td><td>版权类型</td><td>1:自制<br>2:转载</td></tr><tr><td>components</td><td>str</td><td>简介输入框提示文字</td><td>JSON 字符串</td></tr></tbody></table><p><code>components</code> 示例: <code>'[{"name":"相关游戏","index":1,"type":"text","required":"1","box":"请输入本视频所涉及的游戏名称,以顿号分隔,例:英雄联盟、塞尔达传说、刺客信条"},{"name":"简介补充","index":2,"type":"textarea","required":"1","box":""}]'</code></p><p><strong>示例:</strong></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> "https://member.bilibili.com/x/vupre/web/archive/desc/format"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">"typeid=65"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">"copyright=1"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">"SESSDATA=xxxxxxxxxxx"</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "typeid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">65</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "lang"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "copyright"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "components"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"[{</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">name</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">:</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">相关游戏</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">,</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">index</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">:1,</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">type</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">:</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">text</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">,</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">required</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">:</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">1</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">,</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">box</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">:</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">请输入本视频所涉及的游戏名称,以顿号分隔,例:英雄联盟、塞尔达传说、刺客信条</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">},{</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">name</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">:</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">简介补充</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">,</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">index</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">:2,</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">type</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">:</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">textarea</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">,</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">required</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">:</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">1</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">,</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">box</span><span style="color:#D7BA7D;">\"</span><span style="color:#CE9178;">:</span><span style="color:#D7BA7D;">\"\"</span><span style="color:#CE9178;">}]"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="获取上传线路" tabindex="-1"><a class="header-anchor" href="#获取上传线路"><span>获取上传线路</span></a></h2><blockquote><p>https://member.bilibili.com/preupload?r=probe</p></blockquote><p><em>请求方式: GET</em></p><p>认证方式:无</p><p><strong>URL参数:</strong></p><p>无</p><p><strong>JSON回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>OK</td><td>num</td><td>返回值</td><td>1: 成功<br>其他: 失败</td></tr><tr><td>lines</td><td>array</td><td>上传线路列表</td><td></td></tr><tr><td>probe</td><td>obj</td><td>未知</td><td></td></tr></tbody></table><p>probe 中的对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>post</td><td>float</td><td>未知</td><td>固定0.1</td></tr></tbody></table><p>lines 数组中的对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>os</td><td>str</td><td>操作系统</td><td></td></tr><tr><td>query</td><td>str</td><td>查询参数</td><td></td></tr><tr><td>probe_url</td><td>str</td><td>探测 URL</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> "https://member.bilibili.com/preupload?r=probe"</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "OK"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "lines"</span><span style="color:#D4D4D4;">: [</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "os"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"upos"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "query"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"probe_version=20221109&upcdn=tx&zone=cs"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "probe_url"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"//upos-cs-upcdntx.bilivideo.com/OK"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "os"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"upos"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "query"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"probe_version=20221109&upcdn=bldsa&zone=cs"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "probe_url"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"//upos-cs-upcdnbldsa.bilivideo.com/OK"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "os"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"upos"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "query"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"probe_version=20221109&upcdn=bda2&zone=cs"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "probe_url"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"//upos-cs-upcdnbda2.bilivideo.com/OK"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> ],</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "probe"</span><span style="color:#D4D4D4;">: {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "post"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0.1</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="预测稿件类型" tabindex="-1"><a class="header-anchor" href="#预测稿件类型"><span>预测稿件类型</span></a></h2><blockquote><p>https://member.bilibili.com/x/vupre/web/archive/types/predict</p></blockquote><p><em>请求方式: POST</em></p><p>认证方式: Cookie(SESSDATA)</p><p><strong>URL参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>ts</td><td>num</td><td>当前时间</td><td>不必要</td><td>UNIX 毫秒时间戳</td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token (位于 Cookie 中 bili_jct)</td><td>必要</td><td></td></tr></tbody></table><p><strong>正文参数(multipart/form-data):</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>filename</td><td>str</td><td>视频文件名</td><td>必要</td><td>从视频上传接口获取, 无后缀名, 可为空</td></tr><tr><td>title</td><td>str</td><td>视频标题</td><td>不必要</td><td></td></tr><tr><td>upload_id</td><td>str</td><td>上传 ID</td><td>不必要</td><td>如 <code>616368979_1723455540876_8794</code></td></tr></tbody></table><p><strong>JSON回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0: 成功<br>-400: 请求错误<br>-111: csrf 校验失败<br>-101: 账号未登录</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为 0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>array</td><td>信息本体</td><td></td></tr></tbody></table><p><code>data</code> 数组:</p><table><thead><tr><th>项</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>0</td><td>obj</td><td>视频类型 1</td><td></td></tr><tr><td>1</td><td>obj</td><td>视频类型 2</td><td></td></tr><tr><td>……</td><td>obj</td><td>……</td><td></td></tr><tr><td>n</td><td>obj</td><td>视频类型 (n+1)</td><td></td></tr></tbody></table><p><code>data</code> 数组中的对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>id</td><td>num</td><td>子分区 ID</td><td></td></tr><tr><td>parent</td><td>num</td><td>总分区 ID</td><td></td></tr><tr><td>parent_name</td><td>str</td><td>总分区名称</td><td></td></tr><tr><td>name</td><td>str</td><td>子分区名称</td><td></td></tr><tr><td>description</td><td>str</td><td>子分区描述</td><td></td></tr><tr><td>desc</td><td>str</td><td>子分区描述</td><td>同 <code>description</code></td></tr><tr><td>intro_original</td><td>str</td><td>原创简介说明</td><td></td></tr><tr><td>intro_copy</td><td>str</td><td>转载简介说明</td><td></td></tr><tr><td>notice</td><td>str</td><td>注意事项</td><td></td></tr><tr><td>copy_right</td><td>num</td><td>版权信息?</td><td>0</td></tr><tr><td>show</td><td>bool</td><td>是否显示?</td><td>true</td></tr><tr><td>rank</td><td>num</td><td>排序权重?</td><td></td></tr><tr><td>max_video_count</td><td>num</td><td>最大视频数量?</td><td></td></tr><tr><td>request_id</td><td>str</td><td>空</td><td></td></tr><tr><td>human_type</td><td>obj|null</td><td>新分区ID,好像除第一个之外都是null</td><td></td></tr></tbody></table><p><code>human_type</code> 参数</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>id</td><td>num</td><td>新分区id</td><td>可在 <a href="#%E8%8E%B7%E5%8F%96%E6%96%B0%E5%88%86%E5%8C%BAID">获取新分区ID</a> 找到对应名称</td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -X</span><span style="color:#CE9178;"> POST</span><span style="color:#569CD6;"> --url</span><span style="color:#CE9178;"> 'https://member.bilibili.com/x/vupre/web/archive/types/predict'</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--url-query </span><span style="color:#CE9178;">'csrf=d51eadf05ba3bc6c5f76def7fbcc0185'</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">'filename='</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">'SESSDATA=xxx; bili_jct=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: [</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">122</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "parent"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">36</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "parent_name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"知识"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"野生技能协会"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "description"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"技能展示或技能教学分享类视频"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "desc"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"技能展示或技能教学分享类视频"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "intro_original"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"可对视频内容进行补充说明,并对所使用的视频素材进行标明。</span><span style="color:#D7BA7D;">\n</span><span style="color:#CE9178;">如是系列,也可附带上期视频地址。</span><span style="color:#D7BA7D;">\n</span><span style="color:#CE9178;">请勿加入涉政或具较大争议性的文字简介,否则将做打回处理。"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "intro_copy"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"转载稿件需标明出处,请注明原作者、原作者频道名或原作者投稿地址。</span><span style="color:#D7BA7D;">\n</span><span style="color:#CE9178;">可对相关内容进行补充说明。</span><span style="color:#D7BA7D;">\n</span><span style="color:#CE9178;">请勿加入涉政或具较大争议性的文字简介,否则将做打回处理。</span><span style="color:#D7BA7D;">\n</span><span style="color:#CE9178;">如是系列,也可附带上期视频地址。"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "notice"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"清晰明了表明内容亮点的标题会更受观众欢迎哟!"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "copy_right"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "show"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">true</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "rank"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">75</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "max_video_count"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">100</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "request_id"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">21</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "parent"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">160</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "parent_name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"生活"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"日常"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "description"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"一般日常向的生活类视频"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "desc"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"一般日常向的生活类视频"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "intro_original"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"能够选择自制的必须是up主个人或工作室自己制作剪辑的视频,除此之外的搬运视频字幕制作,对于视频进行加速、慢放等简易二次创作,在视频中添加前后贴片或者打水印等行为均不被认作自制"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "intro_copy"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"转载需写明请注明转载作品详细信息原作者、原标题及出处(需为该视频最原始出处,如所标注明显为非原始出处的话会被打回)"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "notice"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "copy_right"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "show"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">true</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "rank"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">4</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "max_video_count"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">50</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "request_id"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">242</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "parent"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">5</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "parent_name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"娱乐"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"娱乐粉丝创作"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "description"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"粉丝向创作视频"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "desc"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"粉丝向创作视频"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "intro_original"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "intro_copy"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "notice"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"清晰明了表明内容亮点的标题会更受观众欢迎哟!"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "copy_right"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "show"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">true</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "rank"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">40</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "max_video_count"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">50</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "request_id"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">65</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "parent"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">4</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "parent_name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"游戏"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"网络游戏"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "description"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"多人在线游戏为主要内容的相关视频"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "desc"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"多人在线游戏为主要内容的相关视频"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "intro_original"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"建议在简介和TAG中添加正确的游戏名,以便在分区和搜索中得到更好的展示。</span><span style="color:#D7BA7D;">\n</span><span style="color:#CE9178;">录制他人直播(包括授权转载、授权录制)不属于自制内容,请选转载。"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "intro_copy"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"建议在简介和TAG中添加正确的游戏名。</span><span style="color:#D7BA7D;">\n</span><span style="color:#CE9178;">搬运转载内容请添加原作者、原链接地址信息。录制他人直播内容请添加原主播信息、直播时间。</span><span style="color:#D7BA7D;">\n</span><span style="color:#CE9178;">未添加正确转载、录播信息的稿件可能被打回。"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "notice"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"【UP主/节目名】+《游戏名》+主要标题+期号"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "copy_right"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "show"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">true</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "rank"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">30</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "max_video_count"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">50</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "request_id"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">138</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "parent"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">160</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "parent_name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"生活"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"搞笑"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "description"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"搞笑挑战、剪辑、表演、配音以及各类日常沙雕视频"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "desc"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"搞笑挑战、剪辑、表演、配音以及各类日常沙雕视频"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "intro_original"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"能够选择自制的必须是up主个人或工作室自己制作剪辑的视频,除此之外的搬运视频字幕制作,对于视频进行加速、慢放等简易二次创作,在视频中添加前后贴片或者打水印等行为均不被认作自制"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "intro_copy"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"转载需写明请注明转载作品详细信息原作者、原标题及出处(需为该视频最原始出处,如所标注明显为非原始出处的话会被打回)"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "notice"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "copy_right"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "show"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">true</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "rank"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">30</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "max_video_count"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">50</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "request_id"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> ]</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="预测稿件标签" tabindex="-1"><a class="header-anchor" href="#预测稿件标签"><span>预测稿件标签</span></a></h2><blockquote><p>https://member.bilibili.com/x/vupre/web/tag/recommend</p></blockquote><p><em>请求方式: GET</em></p><p>认证方式: Cookie(SESSDATA)</p><p><strong>URL参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>upload_id</td><td>str</td><td>同 <a href="#%E9%A2%84%E6%B5%8B%E7%A8%BF%E4%BB%B6%E7%B1%BB%E5%9E%8B">预测稿件类型</a> 的 <code>upload_id</code></td><td>不必要</td><td></td></tr><tr><td>subtype_id</td><td>int</td><td>子分区 ID</td><td>不必要</td><td></td></tr><tr><td>title</td><td>str</td><td>视频标题</td><td>不必要</td><td></td></tr><tr><td>filename</td><td>str</td><td>同 <a href="#%E9%A2%84%E6%B5%8B%E7%A8%BF%E4%BB%B6%E7%B1%BB%E5%9E%8B">预测稿件类型</a> 的 <code>filename</code></td><td>不必要</td><td></td></tr><tr><td>description</td><td>str</td><td>视频简介</td><td>不必要</td><td></td></tr><tr><td>cover_url</td><td>str</td><td>视频封面 URL</td><td>不必要</td><td>不含 <code>https:</code> 或 <code>http:</code> 字串</td></tr><tr><td>t</td><td>int</td><td>当前 UNIX 毫秒时间戳</td><td>不必要</td><td></td></tr></tbody></table><p><strong>JSON回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>int</td><td>返回值</td><td>0: 成功<br>-101: 账号未登录</td></tr><tr><td>data</td><td>array</td><td>标签信息</td><td></td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为 0</td></tr><tr><td>request_id</td><td>str</td><td>请求 ID</td><td></td></tr></tbody></table><p><code>data</code> 数组:</p><table><thead><tr><th>项</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>0</td><td>obj</td><td>标签 1</td><td></td></tr><tr><td>1</td><td>obj</td><td>标签 2</td><td></td></tr><tr><td>……</td><td>obj</td><td>……</td><td></td></tr><tr><td>n</td><td>obj</td><td>标签 (n+1)</td><td></td></tr></tbody></table><p><code>data</code> 数组中的对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>tag</td><td>str</td><td>标签名称</td><td></td></tr><tr><td>checked</td><td>int</td><td>0</td><td></td></tr><tr><td>request_id</td><td>str</td><td>请求 ID</td><td>同根对象</td></tr></tbody></table><p><strong>示例:</strong></p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> 'https://member.bilibili.com/x/vupre/web/tag/recommend'</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--url-query </span><span style="color:#CE9178;">'subtype_id=122'</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--url-query </span><span style="color:#CE9178;">'title=Telnet手打HTTP'</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--url-query </span><span style="color:#CE9178;">'description=测试用 Telnet 手打 HTTP/1.x 协议访问本地服务器, 无 SSL/TLS 支持'</span></span>
|
||
<span class="line"><span style="color:#DCDCAA;">-b</span><span style="color:#CE9178;"> 'SESSDATA=xxx'</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: [</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "tag"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"学习"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "checked"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "request_id"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"TAG_1723543336295_3371"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "tag"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"编程"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "checked"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "request_id"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "tag"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"课程"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "checked"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "request_id"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "tag"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"学习心得"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "checked"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "request_id"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "tag"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"经验分享"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "checked"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "request_id"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> ],</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "request_id"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"TAG_1723543336295_3371"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="投递视频稿件-web" tabindex="-1"><a class="header-anchor" href="#投递视频稿件-web"><span>投递视频稿件(Web)</span></a></h2><blockquote><p>https://member.bilibili.com/x/vu/web/add/v3</p></blockquote><p><em>请求方式: POST</em></p><p>认证方式:Cookie(SESSDATA)</p><p><strong>URL参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>ts</td><td>num</td><td>当前时间</td><td>不必要</td><td>UNIX 毫秒时间戳</td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token (位于 Cookie 中 bili_jct)</td><td>必要</td><td></td></tr></tbody></table><p><strong>正文参数(application/json):</strong></p><p>根对象:</p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>videos</td><td>array</td><td>视频信息</td><td>必要</td><td>若为分 P 视频, 请注意数组元素顺序</td></tr><tr><td>cover</td><td>str</td><td>视频封面 URL</td><td>非必要</td><td>如果不传会自动取封面,参见<a href="#%E4%B8%8A%E4%BC%A0%E8%A7%86%E9%A2%91%E5%B0%81%E9%9D%A2">上传视频封面</a></td></tr><tr><td>cover43</td><td>str</td><td>视频封面 URL (比例为 4:3)</td><td>非必要</td><td>可为空</td></tr><tr><td>title</td><td>str</td><td>视频标题</td><td>必要</td><td>最多 80 字</td></tr><tr><td>copyright</td><td>num</td><td>1: 自制<br>2: 转载</td><td>必要</td><td></td></tr><tr><td>tid</td><td>num</td><td>分区 ID</td><td>必要</td><td>Web端此参数已无法手动设置,参数值为从<a href="#%E9%A2%84%E6%B5%8B%E7%A8%BF%E4%BB%B6%E7%B1%BB%E5%9E%8B">预测稿件类型</a>中获取第一个固定id</td></tr><tr><td>human_type2</td><td>num</td><td>新分区ID</td><td>非必要</td><td>从 <a href="#%E8%8E%B7%E5%8F%96%E6%96%B0%E5%88%86%E5%8C%BAID">新分区ID</a> 获取</td></tr><tr><td>tag</td><td>str</td><td>视频标签</td><td>必要</td><td>多个标签用 <code>,</code> 分隔, 最多 10 个</td></tr><tr><td>desc_format_id</td><td>num</td><td>简介格式 ID?</td><td>必要</td><td>9999: 纯文本</td></tr><tr><td>desc</td><td>str</td><td>视频简介</td><td>非必要</td><td>最多 2000 字</td></tr><tr><td>desc_v2</td><td>str</td><td>视频简介额外信息</td><td>非必要</td><td>比如有艾特操作时传递,见备注</td></tr><tr><td>recreate</td><td>num</td><td>是否允许二创</td><td>必要</td><td>-1: 允许(默认)<br>1: 不允许</td></tr><tr><td>dynamic</td><td>str</td><td>粉丝动态</td><td>必要</td><td></td></tr><tr><td>interactive</td><td>num</td><td>互动视频?</td><td>必要</td><td>0: 否</td></tr><tr><td>act_reserve_create</td><td>num</td><td>活动预约?</td><td>必要</td><td>0: 否</td></tr><tr><td>no_disturbance</td><td>num</td><td>是否推送到动态</td><td>必要</td><td>0:不推送,1:推送</td></tr><tr><td>no_reprint</td><td>num</td><td>是否允许转载</td><td>必要</td><td>1: 允许<br>0: 不允许</td></tr><tr><td>subtitle</td><td>obj</td><td>字幕信息</td><td>必要</td><td></td></tr><tr><td>dolby</td><td>num</td><td>杜比音效</td><td>必要</td><td>0: 否(默认)<br>1: 是</td></tr><tr><td>lossless_music</td><td>num</td><td>无损音乐</td><td>必要</td><td>0: 否(默认)<br>1: 是</td></tr><tr><td>up_selection_reply</td><td>bool</td><td>精选评论</td><td>必要</td><td></td></tr><tr><td>up_close_reply</td><td>bool</td><td>关闭评论</td><td>必要</td><td></td></tr><tr><td>up_close_danmu</td><td>bool</td><td>关闭弹幕</td><td>必要</td><td></td></tr><tr><td>web_os</td><td>num</td><td>平台类型?</td><td>必要</td><td>3</td></tr><tr><td>is_only_self</td><td>可见性</td><td>非必要</td><td>0:公开<br>1:仅自己可见</td><td></td></tr><tr><td>topic_id</td><td>话题id</td><td>非必要</td><td>可从<a class="route-link" href="/bilibili-API-collect/docs/creativecenter/upload.html#%E6%9F%A5%E8%AF%A2%E8%AF%9D%E9%A2%98">查询话题</a>等相关接口获取</td><td></td></tr><tr><td>mission_id</td><td>任务id</td><td>非必要</td><td>可从<a class="route-link" href="/bilibili-API-collect/docs/creativecenter/upload.html#%E6%9F%A5%E8%AF%A2%E8%AF%9D%E9%A2%98">查询话题</a>等相关接口获取</td><td></td></tr><tr><td>is_360</td><td>num</td><td>是否全景</td><td>非必要</td><td>-1:非全景<br>1:全景</td></tr><tr><td>neutral_mark</td><td>str</td><td>创作者声明</td><td>非必要</td><td></td></tr></tbody></table><p><code>videos</code> 数组中的对象:</p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>filename</td><td>str</td><td>视频文件名</td><td>必要</td><td>从视频上传接口获取, 无后缀名</td></tr><tr><td>title</td><td>str</td><td>分 P 标题</td><td>必要</td><td></td></tr><tr><td>desc</td><td>str</td><td>分 P 简介</td><td>必要</td><td></td></tr><tr><td>cid</td><td>num</td><td>分 P cid</td><td>必要</td><td>从视频上传接口获取, 即 <code>biz_id</code></td></tr></tbody></table><p><code>subtitle</code> 对象:</p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>open</td><td>num</td><td>是否启用字幕投稿</td><td>必要</td><td>0: 启用(默认)<br>1: 不启用</td></tr><tr><td>lan</td><td>str</td><td>字幕投稿语言</td><td>必要</td><td>可为空</td></tr></tbody></table><p><strong>desc_v2举例:</strong></p><div class="language-js line-numbers-mode" data-highlighter="shiki" data-ext="js" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-js"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||
<span class="line"><span style="color:#6A9955;"> // 如果两者不一致,可能导致后续在web修改出现错误</span></span>
|
||
<span class="line"><span style="color:#CE9178;"> "desc"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"前面@陈睿 后面"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#CE9178;"> "desc_v2"</span><span style="color:#D4D4D4;">: [ </span><span style="color:#6A9955;">// 纯文字type是1,艾特用户type是2,biz_id为用户uid</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#CE9178;"> "biz_id"</span><span style="color:#9CDCFE;">:</span><span style="color:#CE9178;"> ""</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#CE9178;"> "raw_text"</span><span style="color:#9CDCFE;">:</span><span style="color:#CE9178;"> "前面"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#CE9178;"> "type"</span><span style="color:#9CDCFE;">:</span><span style="color:#B5CEA8;"> 1</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#CE9178;"> "biz_id"</span><span style="color:#9CDCFE;">:</span><span style="color:#CE9178;"> "208259"</span><span style="color:#D4D4D4;">, </span><span style="color:#6A9955;">// uid</span></span>
|
||
<span class="line"><span style="color:#CE9178;"> "raw_text"</span><span style="color:#9CDCFE;">:</span><span style="color:#CE9178;"> "陈睿"</span><span style="color:#D4D4D4;">, </span><span style="color:#6A9955;">// 用户名</span></span>
|
||
<span class="line"><span style="color:#CE9178;"> "type"</span><span style="color:#9CDCFE;">:</span><span style="color:#B5CEA8;"> 2</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#CE9178;"> "biz_id"</span><span style="color:#9CDCFE;">:</span><span style="color:#CE9178;"> ""</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#CE9178;"> "raw_text"</span><span style="color:#9CDCFE;">:</span><span style="color:#CE9178;"> " 后面"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#CE9178;"> "type"</span><span style="color:#9CDCFE;">:</span><span style="color:#B5CEA8;"> 1</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> ]</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><strong>示例:</strong></p><p>假设已经把需要发送的数据存放在文件 <code>./data.json</code> 中:</p><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "videos"</span><span style="color:#D4D4D4;">: [</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "filename"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"n240728ad33h52yqhxbtw51cb06sq9gx"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "title"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"Telnet手打HTTP"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "desc"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "cid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">500001629877726</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> ],</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "cover"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"https://archive.biliimg.com/bfs/archive/85447ea20431ef799382c403c84b4bfb82a41053.jpg"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "cover43"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "title"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"Telnet手打HTTP"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "copyright"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "tid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">122</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "tag"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"telnet,socket,tcp,linux,http"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "desc_format_id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">9999</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "desc"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"测试用 Telnet 手打 HTTP/1.x 协议访问本地服务器, 无 SSL/TLS 支持"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "recreate"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">-1</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "dynamic"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"for testing"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "interactive"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "act_reserve_create"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "no_disturbance"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "no_reprint"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "subtitle"</span><span style="color:#D4D4D4;">: {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "open"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "lan"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">""</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "dolby"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "lossless_music"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "up_selection_reply"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">false</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "up_close_reply"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">false</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "up_close_danmu"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">false</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "web_os"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "csrf"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"xxxxxxxxxxxxxxxxxxxxxxxx"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>发送请求:</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -X</span><span style="color:#CE9178;"> POST</span><span style="color:#569CD6;"> --url</span><span style="color:#CE9178;"> "https://member.bilibili.com/x/vu/web/add/v3"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--url-query </span><span style="color:#CE9178;">"ts=$(</span><span style="color:#DCDCAA;">date</span><span style="color:#CE9178;"> +%s%3N)"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--url-query </span><span style="color:#CE9178;">"csrf=xxxxxxxxxxxxxxxxxxxxxxxx"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">-H </span><span style="color:#CE9178;">"Content-Type: application/json; charset=utf-8"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--data </span><span style="color:#CE9178;">@data.json</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">"SESSDATA=xxxxxx; bili_jct=xxxxxxxxxxxxxxxxxxxxxxxx"</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "aid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">112861976201494</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "bvid"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"BV181vnexEmB"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="编辑视频稿件-web" tabindex="-1"><a class="header-anchor" href="#编辑视频稿件-web"><span>编辑视频稿件(Web)</span></a></h2><blockquote><p>https://member.bilibili.com/x/vu/web/edit</p></blockquote><p><em>请求方式: POST</em></p><p>认证方式:Cookie(SESSDATA)</p><p><strong>URL参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>t</td><td>num</td><td>当前时间</td><td>非必要</td><td>UNIX 毫秒时间戳</td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token (位于 Cookie 中 bili_jct)</td><td>必要</td><td></td></tr></tbody></table><p><strong>正文参数(application/json):</strong></p><p>绝大部分参数与上传一致,部分参数只有不对编辑生效</p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>aid</td><td>num</td><td>视频 ID</td><td>必要</td><td></td></tr><tr><td>videos</td><td>array</td><td>视频信息</td><td>必要</td><td>若为分 P 视频, 请注意数组元素顺序</td></tr><tr><td>title</td><td>str</td><td>视频标题</td><td>必要</td><td>最多 80 字</td></tr><tr><td>cover</td><td>str</td><td>视频封面 URL</td><td>非必要</td><td>如果不传会自动取封面,参见<a href="#%E4%B8%8A%E4%BC%A0%E8%A7%86%E9%A2%91%E5%B0%81%E9%9D%A2">上传视频封面</a></td></tr><tr><td>cover43</td><td>str</td><td>视频封面 URL (比例为 4:3)</td><td>非必要</td><td>可为空</td></tr><tr><td>copyright</td><td>num</td><td>1: 自制<br>2: 转载</td><td>必要</td><td></td></tr><tr><td>tid</td><td>num</td><td>分区 ID</td><td>必要</td><td></td></tr><tr><td>tag</td><td>str</td><td>视频标签</td><td>必要</td><td>多个标签用 <code>,</code> 分隔, 最多 10 个</td></tr><tr><td>desc_format_id</td><td>num</td><td>简介格式 ID?</td><td>必要</td><td>9999: 纯文本</td></tr><tr><td>desc</td><td>str</td><td>视频简介</td><td>非必要</td><td>最多 2000 字</td></tr><tr><td>desc_v2</td><td>str</td><td>视频简介额外信息</td><td>非必要</td><td>比如有艾特操作时传递,见上传视频</td></tr><tr><td>recreate</td><td>num</td><td>是否允许二创</td><td>必要</td><td>-1: 允许(默认)<br>1: 不允许</td></tr><tr><td>dynamic</td><td>str</td><td>粉丝动态</td><td>必要</td><td></td></tr><tr><td>interactive</td><td>num</td><td>互动视频?</td><td>必要</td><td>0: 否</td></tr><tr><td>act_reserve_create</td><td>num</td><td>活动预约?</td><td>必要</td><td>0: 否</td></tr><tr><td>no_disturbance</td><td>num</td><td>是否推送到动态</td><td>必要</td><td>0:不推送<br>1:推送</td></tr><tr><td>no_reprint</td><td>num</td><td>是否允许转载</td><td>必要</td><td>1: 允许<br>0: 不允许</td></tr><tr><td>subtitle</td><td>obj</td><td>字幕信息</td><td>必要</td><td></td></tr><tr><td>web_os</td><td>num</td><td>操作系统</td><td>必要</td><td>1: Web</td></tr><tr><td>mission_id</td><td>num</td><td>任务 ID</td><td>非必要</td><td>0: 无</td></tr><tr><td>csrf</td><td>str</td><td>CSRF Token (位于 Cookie 中 bili_jct)</td><td>必要</td><td></td></tr><tr><td>new_web_edit</td><td>num</td><td>未知</td><td>非必要</td><td>未知</td></tr><tr><td>is_360</td><td>num</td><td>是否全景</td><td>非必要</td><td>-1:非全景<br>1:全景</td></tr><tr><td>is_only_self</td><td>可见性</td><td>非必要</td><td>0:公开<br>1:仅自己可见</td><td></td></tr></tbody></table><p><strong>JSON回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0: 成功<br>其他: 失败</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为 0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>data</td><td>obj</td><td>信息本体</td><td></td></tr></tbody></table><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "aid"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">123456</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "bvid"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"BV1xx411c7mD"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="获取新分区id" tabindex="-1"><a class="header-anchor" href="#获取新分区id"><span>获取新分区ID</span></a></h2><blockquote><p>https://member.bilibili.com/x/vupre/web/archive/human/type2/list</p></blockquote><p><em>请求方式: GET</em></p><p>认证方式:Cookie(SESSDATA)</p><p><strong>URL参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>t</td><td>num</td><td>当前时间</td><td>非必要</td><td>UNIX 毫秒时间戳</td></tr></tbody></table><p><strong>JSON回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>code</td><td>num</td><td>返回值</td><td>0: 成功<br>其他: 失败</td></tr><tr><td>message</td><td>str</td><td>错误信息</td><td>默认为 0</td></tr><tr><td>ttl</td><td>num</td><td>1</td><td></td></tr><tr><td>type_list</td><td>array</td><td>信息本体</td><td></td></tr></tbody></table><p><code>type_list</code> 对象:</p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>id</td><td>num</td><td>分区ID</td><td></td></tr><tr><td>name</td><td>str</td><td>分区名</td><td></td></tr></tbody></table><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "code"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "message"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"0"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "ttl"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "data"</span><span style="color:#D4D4D4;">: {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "type_list"</span><span style="color:#D4D4D4;">: [</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1001</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"影视"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1002</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"娱乐"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1003</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"音乐"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1004</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"舞蹈"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1005</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"动画"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1006</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"绘画"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1007</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"鬼畜"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1008</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"游戏"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1009</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"资讯"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1010</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"知识"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1011</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"人工智能"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1012</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"科技数码"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1013</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"汽车"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1014</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"时尚美妆"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1015</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"家装房产"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1016</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"户外潮流"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1017</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"健身"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1018</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"体育运动"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1019</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"手工"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1020</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"美食"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1021</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"小剧场"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1022</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"旅游出行"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1023</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"三农"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1024</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"动物"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1025</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"亲子"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1026</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"健康"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1027</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"情感"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1029</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"vlog"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1030</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"生活兴趣"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> },</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1031</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "name"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"生活经验"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> ]</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h2 id="上传视频文件" tabindex="-1"><a class="header-anchor" href="#上传视频文件"><span>上传视频文件</span></a></h2><p>注: 目前看来上传的视频文件似乎不会自动删除, 而且似乎不是视频也可以上传的样子, 但是下载认证字段有效期只有 5 天</p><h3 id="上传流程" tabindex="-1"><a class="header-anchor" href="#上传流程"><span>上传流程</span></a></h3><p>整个上传流程较为复杂, 详细参见<a href="#Demo">Demo</a></p><ol><li><p><code>GET</code> <code>preupload</code> 接口, <a href="#%E8%8E%B7%E5%8F%96%E4%B8%8A%E4%BC%A0%E5%85%83%E6%95%B0%E6%8D%AE-%E9%A2%84%E4%B8%8A%E4%BC%A0">获取上传元数据</a></p></li><li><p><code>POST</code> 第 1 步得到的地址, <a href="#%E4%B8%8A%E4%BC%A0%E8%A7%86%E9%A2%91%E5%85%83%E6%95%B0%E6%8D%AE">上传视频元数据</a></p></li><li><p><code>PUT</code> 第 1 步得到的地址, <a href="#%E5%88%86%E7%89%87%E4%B8%8A%E4%BC%A0%E8%A7%86%E9%A2%91%E6%96%87%E4%BB%B6">分片上传视频文件</a></p></li><li><p><code>POST</code> 第 1 步得到的地址, <a href="#%E7%BB%93%E6%9D%9F%E4%B8%8A%E4%BC%A0%E8%A7%86%E9%A2%91%E6%96%87%E4%BB%B6">结束上传视频文件</a></p></li><li><p><code>GET</code> 第 1 步得到的地址, <a href="#%E4%B8%8B%E8%BD%BD%E5%B7%B2%E4%B8%8A%E4%BC%A0%E7%9A%84%E8%A7%86%E9%A2%91%E6%96%87%E4%BB%B6">下载已上传的视频文件</a> , 确认上传成功 (可选)</p></li></ol><h3 id="上传接口" tabindex="-1"><a class="header-anchor" href="#上传接口"><span>上传接口</span></a></h3><h4 id="获取上传元数据-预上传" tabindex="-1"><a class="header-anchor" href="#获取上传元数据-预上传"><span>获取上传元数据 (预上传)</span></a></h4><blockquote><p>https://member.bilibili.com/preupload</p></blockquote><p><em>请求方式: GET</em></p><p>认证方式:Cookie(SESSDATA)</p><p><strong>URL参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>name</td><td>str</td><td>文件名</td><td>必要</td><td>会影响返回的上传地址</td></tr><tr><td>r</td><td>str</td><td>上传区域?</td><td>必要</td><td>upos</td></tr><tr><td>profile</td><td>str</td><td>上传配置?</td><td>必要</td><td>普通视频: ugcfx/bup<br>提交反馈: feedback/bup</td></tr><tr><td>probe_version</td><td>num</td><td>上传版本?</td><td>不必要</td><td>20221109</td></tr><tr><td>upcdn</td><td>str</td><td>上传 CDN?</td><td>不必要</td><td>txa</td></tr><tr><td>zone</td><td>str</td><td>上传区域?</td><td>不必要</td><td>cs</td></tr><tr><td>ssl</td><td>num</td><td>是否使用 SSL?</td><td>不必要</td><td>0</td></tr><tr><td>version</td><td>str</td><td>上传版本?</td><td>不必要</td><td>2.14.0.0</td></tr><tr><td>build</td><td>str</td><td>上传版本?</td><td>不必要</td><td>2140000</td></tr><tr><td>size</td><td>num</td><td>文件大小</td><td>不必要</td><td>视频文件大小, 单位 字节</td></tr><tr><td>webVersion</td><td>str</td><td>上传版本?</td><td>不必要</td><td>2.13.0</td></tr></tbody></table><p><strong>JSON回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>OK</td><td>num</td><td>1</td><td></td></tr><tr><td>auth</td><td>str</td><td>上传凭证</td><td>作为后面请求中请求头, 有效期 5 天</td></tr><tr><td>biz_id</td><td>num</td><td>业务 ID?</td><td></td></tr><tr><td>chunk_retry</td><td>num</td><td>重试次数?</td><td></td></tr><tr><td>chunk_retry_delay</td><td>num</td><td>重试延迟?</td><td></td></tr><tr><td>chunk_size</td><td>num</td><td>分块大小</td><td>后面要用</td></tr><tr><td>endpoint</td><td>str</td><td>上传节点</td><td>后面要用</td></tr><tr><td>endpoints</td><td>array</td><td>上传节点列表</td><td></td></tr><tr><td>expose_params</td><td>null</td><td></td><td></td></tr><tr><td>put_query</td><td>str</td><td>上传参数?</td><td></td></tr><tr><td>threads</td><td>num</td><td>上传线程数</td><td></td></tr><tr><td>timeout</td><td>num</td><td>超时时间?</td><td></td></tr><tr><td>uip</td><td>str</td><td>你的 IP</td><td></td></tr><tr><td>upos_uri</td><td>str</td><td>上传地址</td><td>后面要用</td></tr></tbody></table><p><code>endpoints</code> 数组:</p><table><thead><tr><th>项</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>0</td><td>str</td><td>上传节点1</td><td></td></tr><tr><td>……</td><td>str</td><td>……</td><td></td></tr><tr><td>n</td><td>str</td><td>上传节点n</td><td></td></tr></tbody></table><p><strong>示例:</strong></p><p>假设视频文件名为 <code>2024-07-28_15-37-50.mkv</code>, 视频大小为 <code>305333744</code> 字节</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> "https://member.bilibili.com/preupload"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">"name=2024-07-28_15-37-50.mkv"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">"r=upos"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--data-urlencode </span><span style="color:#CE9178;">"profile=ugcfx/bup"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">"SESSDATA=xxxxxxxxxxx"</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "OK"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "auth"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"ak=1494471752&cdn=%2F%2Fupos-cs-upcdntxa.bilivideo.com&os=upos&sign=b6c5cc520a281200906aea97e190b098&timestamp=1722155211.324&uid=616368979&uip=108.181.24.77&uport=52096&use_dqp=0"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "biz_id"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">500001630152509</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "chunk_retry"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">10</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "chunk_retry_delay"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "chunk_size"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">10485760</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "endpoint"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"//upos-cs-upcdntxa.bilivideo.com"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "endpoints"</span><span style="color:#D4D4D4;">: [</span></span>
|
||
<span class="line"><span style="color:#CE9178;"> "//upos-cs-upcdntxa.bilivideo.com"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#CE9178;"> "//upos-cs-upcdnalia.bilivideo.com"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> ],</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "expose_params"</span><span style="color:#D4D4D4;">: </span><span style="color:#569CD6;">null</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "put_query"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"os=upos&profile=ugcfx%2Fbup"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "threads"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">3</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "timeout"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1200</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "uip"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"108.181.24.77"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "upos_uri"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"upos://ugcfx2lf/n240728ad1p51if4g3ke4s3o95sznogy.mkv"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="上传视频元数据" tabindex="-1"><a class="header-anchor" href="#上传视频元数据"><span>上传视频元数据</span></a></h4><blockquote><p>URL 拼接格式: <code>"https"</code> + <a href="#%E8%8E%B7%E5%8F%96%E4%B8%8A%E4%BC%A0%E5%85%83%E6%95%B0%E6%8D%AE-%E9%A2%84%E4%B8%8A%E4%BC%A0">上一个接口</a>的<code>endpoint</code> + 上一个接口的<code>upos_uri</code>去掉协议名<br> JavaScript 模板字符串: <code>https:${preupload.endpoint}/${endpoint.upos_uri.replace("upos://", "")}</code></p></blockquote><p><em>请求方式: POST</em></p><p>认证方式:请求头 <code>X-Upos-Auth</code> 为上一接口得到的 <code>auth</code></p><p><strong>URL参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>uploads</td><td>str</td><td>留空</td><td>必要</td><td>留空</td></tr><tr><td>output</td><td>str</td><td>输出格式</td><td>不必要</td><td>默认为 json(推荐), 留空为 xml</td></tr><tr><td>profile</td><td>str</td><td>上传配置?</td><td>必要</td><td>与上一个接口保持相同</td></tr><tr><td>filesize</td><td>num</td><td>文件大小</td><td>必要</td><td>视频文件大小, 单位 字节<br>feedback/bup 不必要</td></tr><tr><td>partsize</td><td>num</td><td>分块大小</td><td>必要</td><td>上一个接口返回, 且后面要用<br>feedback/bup 不必要</td></tr><tr><td>biz_id</td><td>num</td><td>业务 ID?</td><td>必要</td><td>上一个接口返回, 且后面要用<br>feedback/bup 不必要</td></tr></tbody></table><p><strong>JSON回复:</strong></p><p>根对象:</p><table><thead><tr><th>字段</th><th>类型</th><th>内容</th><th>备注</th></tr></thead><tbody><tr><td>OK</td><td>num</td><td>1</td><td></td></tr><tr><td>bucket</td><td>str</td><td>空间名?</td><td></td></tr><tr><td>key</td><td>str</td><td>文件名?</td><td></td></tr><tr><td>upload_id</td><td>str</td><td>上传 ID</td><td>后面要用</td></tr></tbody></table><p><strong>示例:</strong></p><p>假设上一接口返回的 <code>auth</code> 为 <code>ak=1494471752&cdn=%2F%2Fupos-cs-upcdntxa.bilivideo.com&os=upos&sign=4004b35628e982bc90b59cec86f8c441&timestamp=1722173443.298&uid=616368979&uip=104.28.153.18&uport=44282&use_dqp=0</code>, <code>biz_id</code> 为<code>500001630454700</code>, <code>endpoint</code> 为 <code>//upos-cs-upcdntxa.bilivideo.com</code>, <code>upos_uri</code> 为 <code>upos://ugcfx2lf/n240728adhejliqv0kqyg2s5n6huv501.mkv</code>, <code>chunk_size</code> 为 <code>10485760</code>. 视频文件大小为 <code>305333744</code> 字节.</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -X</span><span style="color:#CE9178;"> POST</span><span style="color:#569CD6;"> --url</span><span style="color:#CE9178;"> "https://upos-cs-upcdntxa.bilivideo.com/ugcfx2lf/n240728adhejliqv0kqyg2s5n6huv501.mkv` </span><span style="color:#D7BA7D;">\</span></span>
|
||
<span class="line"><span style="color:#DCDCAA;">--url-query</span><span style="color:#CE9178;"> "uploads=" </span><span style="color:#D7BA7D;">\</span></span>
|
||
<span class="line"><span style="color:#CE9178;">--url-query "output=json" </span><span style="color:#D7BA7D;">\</span></span>
|
||
<span class="line"><span style="color:#CE9178;">--url-query "profile=ugcfx/bup" </span><span style="color:#D7BA7D;">\</span></span>
|
||
<span class="line"><span style="color:#CE9178;">--url-query "filesize=305333744" </span><span style="color:#D7BA7D;">\</span></span>
|
||
<span class="line"><span style="color:#CE9178;">--url-query "partsize=10485760" </span><span style="color:#D7BA7D;">\</span></span>
|
||
<span class="line"><span style="color:#CE9178;">--url-query "biz_id=500001630454700" </span><span style="color:#D7BA7D;">\</span></span>
|
||
<span class="line"><span style="color:#CE9178;">-H "X-Upos-Auth: ak=1494471752&cdn=%2F%2Fupos-cs-upcdntxa.bilivideo.com&os=upos&sign=4004b35628e982bc90b59cec86f8c441&timestamp=1722173443.298&uid=616368979&uip=104.28.153.18&uport=44282&use_dqp=0" </span><span style="color:#D7BA7D;">\</span></span>
|
||
<span class="line"><span style="color:#CE9178;">-b "SESSDATA=xxxxxxxxx"</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "OK"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "bucket"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"ugcfx2lf"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "key"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"/n240728adhejliqv0kqyg2s5n6huv501.mkv"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "upload_id"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"26c674b4-0dce-45f5-a9cd-a199d9c982bf"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="分片上传视频文件" tabindex="-1"><a class="header-anchor" href="#分片上传视频文件"><span>分片上传视频文件</span></a></h4><blockquote><p>URL 同 <a href="#%E4%B8%8A%E4%BC%A0%E8%A7%86%E9%A2%91%E5%85%83%E6%95%B0%E6%8D%AE">上一个接口</a></p></blockquote><p><em>请求方式: PUT</em></p><p>认证方式:请求头 <code>X-Upos-Auth</code> 为上上一接口得到的 <code>auth</code></p><p><strong>URL参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>partNumber</td><td>num</td><td>分块序号</td><td>必要</td><td>从 1 开始</td></tr><tr><td>uploadId</td><td>str</td><td>上传 ID</td><td>必要</td><td>上一个接口返回</td></tr><tr><td>chunk</td><td>num</td><td>分块序号</td><td>必要</td><td>从 0 开始</td></tr><tr><td>chunks</td><td>num</td><td>分块总数</td><td>必要</td><td>自行计算: 文件大小除以分块大小并向上取整</td></tr><tr><td>size</td><td>num</td><td>该分块大小</td><td>必要</td><td>该实际上传字节数</td></tr><tr><td>start</td><td>num</td><td>该分块开始位置</td><td>必要</td><td>已实际上传字节数</td></tr><tr><td>end</td><td>num</td><td>该分块结束位置</td><td>必要</td><td>该分块上传结束后实际上传总字节数</td></tr><tr><td>total</td><td>num</td><td>总大小</td><td>必要</td><td>视频文件大小, 单位 字节</td></tr></tbody></table><p><strong>正文参数(application/octet-stream):</strong></p><p>视频文件在该分块的字节流</p><p><strong>纯文本回复:</strong></p><div class="language-text line-numbers-mode" data-highlighter="shiki" data-ext="text" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-text"><span class="line"><span>MULTIPART_PUT_SUCCESS</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p><strong>示例:</strong></p><p>假设上上一接口返回的 <code>auth</code> 为 <code>ak=1494471752&cdn=%2F%2Fupos-cs-upcdntxa.bilivideo.com&os=upos&sign=911dd5b995895805d785aa607b4153b6&timestamp=1722212776.333&uid=616368979&uip=108.181.24.77&uport=36044&use_dqp=0</code>, <code>endpoint</code> 为 <code>//upos-cs-upcdntxa.bilivideo.com</code>, <code>upos_uri</code> 为 <code>upos://ugcfx2lf/n240729ad7gxi43yaoml312h2nbt2pnf.xz</code>, <code>chunk_size</code> 为 <code>10485760</code>.</p><p>上一接口返回的 <code>upload_id</code> 为 <code>8130090a-16f7-4fe6-8a29-198f5abce913</code>.</p><p>视频文件名为 <code>20240724-remove-linux-then-install.tar.xz</code>, 文件大小为 <code>278255704</code> 字节.</p><p>假设您要上传的分块序号为 <code>1</code>, 该分块大小为 <code>10485760</code>, 该分块开始位置为 <code>0</code>, 该分块结束位置为 <code>10485760</code>, 该分块实际上传字节数为 <code>10485760</code>, 您已将文件分块存放至 <code>part01.tar.xz</code>, <code>part02.tar.xz</code>, ..., <code>part27.tar.xz</code>.</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -X</span><span style="color:#CE9178;"> PUT</span><span style="color:#569CD6;"> --url</span><span style="color:#CE9178;"> "https://upos-cs-upcdntxa.bilivideo.com/ugcfx2lf/n240729ad7gxi43yaoml312h2nbt2pnf.xz"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--url-query </span><span style="color:#CE9178;">"partNumber=1"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--url-query </span><span style="color:#CE9178;">"uploadId=8130090a-16f7-4fe6-8a29-198f5abce913"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--url-query </span><span style="color:#CE9178;">"chunk=0"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--url-query </span><span style="color:#CE9178;">"chunks=27"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--url-query </span><span style="color:#CE9178;">"size=10485760"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--url-query </span><span style="color:#CE9178;">"start=0"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--url-query </span><span style="color:#CE9178;">"end=10485760"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--url-query </span><span style="color:#CE9178;">"total=278255704"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">-H </span><span style="color:#CE9178;">"X-Upos-Auth: ak=1494471752&cdn=%2F%2Fupos-cs-upcdntxa.bilivideo.com&os=upos&sign=911dd5b995895805d785aa607b4153b6&timestamp=1722212776.333&uid=616368979&uip=108.181.24.77&uport=36044&use_dqp=0"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">-H </span><span style="color:#CE9178;">"Content-Type: application/octet-stream"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--data-binary </span><span style="color:#CE9178;">@part01.tar.xz</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">"SESSDATA=xxxxxxxxx"</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-text line-numbers-mode" data-highlighter="shiki" data-ext="text" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-text"><span class="line"><span>MULTIPART_PUT_SUCCESS</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div></details><h4 id="结束上传视频文件" tabindex="-1"><a class="header-anchor" href="#结束上传视频文件"><span>结束上传视频文件</span></a></h4><blockquote><p>URL 同 <a href="#%E5%88%86%E7%89%87%E4%B8%8A%E4%BC%A0%E8%A7%86%E9%A2%91%E6%96%87%E4%BB%B6">上一个接口</a></p></blockquote><p><em>请求方式: POST</em></p><p>认证方式:请求头 <code>X-Upos-Auth</code> 为上上上一接口得到的 <code>auth</code></p><p><strong>URL参数:</strong></p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>output</td><td>str</td><td>输出格式</td><td>不必要</td><td>默认为 json(推荐), 留空为 xml</td></tr><tr><td>name</td><td>str</td><td>文件名</td><td>必要</td><td>视频文件名</td></tr><tr><td>profile</td><td>str</td><td>上传配置?</td><td>必要</td><td>与上一个接口相同, 普通视频: ugcfx/bup</td></tr><tr><td>uploadId</td><td>str</td><td>上传 ID</td><td>必要</td><td>与上一个接口相同</td></tr><tr><td>biz_id</td><td>num</td><td>业务 ID?</td><td>必要</td><td>与上上一个接口相同</td></tr></tbody></table><p><strong>正文参数(application/json):</strong></p><p>根对象:</p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>parts</td><td>array</td><td>各分块信息</td><td>必要</td><td>按实际上传顺序而不是分块序号顺序</td></tr></tbody></table><p><code>parts</code> 数组:</p><table><thead><tr><th>项</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>0</td><td>obj</td><td>分块信息1</td><td>必要</td><td>按实际上传顺序而不是分块序号顺序</td></tr><tr><td>1</td><td>obj</td><td>分块信息2</td><td>必要</td><td></td></tr><tr><td>……</td><td>obj</td><td>……</td><td></td><td></td></tr><tr><td>n</td><td>obj</td><td>分块信息n</td><td>必要</td><td></td></tr></tbody></table><p><code>parts</code> 数组中的对象:</p><table><thead><tr><th>参数名</th><th>类型</th><th>内容</th><th>必要性</th><th>备注</th></tr></thead><tbody><tr><td>partNumber</td><td>num</td><td>分块序号</td><td>必要</td><td>从 1 开始</td></tr><tr><td>eTag</td><td>str</td><td><code>etag</code></td><td>必要</td><td></td></tr></tbody></table><p><strong>JSON回复:</strong></p><p>与 <a href="#%E4%B8%8A%E4%BC%A0%E8%A7%86%E9%A2%91%E5%85%83%E6%95%B0%E6%8D%AE">上上一个接口</a> 相同</p><p><strong>示例:</strong></p><p>假设上上上一接口返回的 <code>auth</code> 为 <code>ak=1494471752&cdn=%2F%2Fupos-cs-upcdntxa.bilivideo.com&os=upos&sign=911dd5b995895805d785aa607b4153b6&timestamp=1722212776.333&uid=616368979&uip=108.181.24.77&uport=36044&use_dqp=0</code>, <code>endpoint</code> 为 <code>//upos-cs-upcdntxa.bilivideo.com</code>, <code>upos_uri</code> 为 <code>upos://ugcfx2lf/n240729ad7gxi43yaoml312h2nbt2pnf.xz</code>, <code>biz_id</code> 为 <code>500001630826789</code>.</p><p>上上一接口返回的 <code>upload_id</code> 为 <code>8130090a-16f7-4fe6-8a29-198f5abce913</code>.</p><p>视频文件名为 <code>20240724-remove-linux-then-install.tar.xz</code>, 文件大小为 <code>278255704</code> 字节.</p><p>假设您已经全部上传完毕, 共上传 <code>27</code> 个分块, 本次请求上传的的内容存放在 <code>body.json</code> 文件中.</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -X</span><span style="color:#CE9178;"> PUT</span><span style="color:#569CD6;"> --url</span><span style="color:#CE9178;"> "https://upos-cs-upcdntxa.bilivideo.com/ugcfx2lf/n240729ad7gxi43yaoml312h2nbt2pnf.xz"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--url-query </span><span style="color:#CE9178;">"output=json"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--url-query </span><span style="color:#CE9178;">"name=20240724-remove-linux-then-install.tar.xz"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--url-query </span><span style="color:#CE9178;">"profile=ugcfx%2Fbup"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--url-query </span><span style="color:#CE9178;">"uploadId=8130090a-16f7-4fe6-8a29-198f5abce913"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--url-query </span><span style="color:#CE9178;">"biz_id=500001630826789"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">-H </span><span style="color:#CE9178;">"X-Upos-Auth: ak=1494471752&cdn=%2F%2Fupos-cs-upcdntxa.bilivideo.com&os=upos&sign=911dd5b995895805d785aa607b4153b6&timestamp=1722212776.333&uid=616368979&uip=108.181.24.77&uport=36044&use_dqp=0"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">-H </span><span style="color:#CE9178;">"Content-Type: application/json"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--data-binary </span><span style="color:#CE9178;">@body.json</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">-b </span><span style="color:#CE9178;">"SESSDATA=xxxxxxxxx"</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看响应示例:</summary><div class="language-json line-numbers-mode" data-highlighter="shiki" data-ext="json" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-json"><span class="line"><span style="color:#D4D4D4;">{</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "OK"</span><span style="color:#D4D4D4;">: </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "location"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"ugcfx2lf/n240729ad7gxi43yaoml312h2nbt2pnf.xz"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "bucket"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"ugcfx2lf"</span><span style="color:#D4D4D4;">,</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> "key"</span><span style="color:#D4D4D4;">: </span><span style="color:#CE9178;">"/n240729ad7gxi43yaoml312h2nbt2pnf.xz"</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h4 id="下载已上传的视频文件" tabindex="-1"><a class="header-anchor" href="#下载已上传的视频文件"><span>下载已上传的视频文件</span></a></h4><blockquote><p>URL 同 <a href="#%E7%BB%93%E6%9D%9F%E4%B8%8A%E4%BC%A0%E8%A7%86%E9%A2%91%E6%96%87%E4%BB%B6">上一个接口</a></p></blockquote><p><em>请求方式: GET</em></p><p>认证方式:请求头 <code>X-Upos-Auth</code> 为上上上上一接口得到的 <code>auth</code></p><p>注: 由于 <code>X-Upos-Auth</code> 有效期只有 5 天, 过期请求将返回 HTTP 403 如下</p><div class="language-http line-numbers-mode" data-highlighter="shiki" data-ext="http" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-http"><span class="line"><span style="color:#569CD6;">HTTP</span><span style="color:#D4D4D4;">/</span><span style="color:#B5CEA8;">1.1</span><span style="color:#B5CEA8;"> 403</span><span style="color:#CE9178;"> Forbidden</span></span>
|
||
<span class="line"><span style="color:#569CD6;">Bili-Trace-Id:</span><span style="color:#CE9178;"> 3e3f2db61366adbf</span></span>
|
||
<span class="line"><span style="color:#569CD6;">Server:</span><span style="color:#CE9178;"> upos@hcsgw@jscs-bvc-hcsgw-public-02</span></span>
|
||
<span class="line"><span style="color:#569CD6;">X-Bili-Trace-Id:</span><span style="color:#CE9178;"> 0d8ca1af6d3510253e3f2db61366adbf</span></span>
|
||
<span class="line"><span style="color:#569CD6;">X-Upos-Auth:</span><span style="color:#CE9178;"> AUTH_TS_GT_5DAY AUTH=ak=1494471752&cdn=%2F%2Fupos-cs-upcdntxa.bilivideo.com&os=upos&sign=911dd5b995895805d785aa607b4153b6&timestamp=1722212776.333&uid=616368979&uip=108.181.24.77&uport=36044&use_dqp=0 Now=1722662669 DURATION=449893</span></span>
|
||
<span class="line"><span style="color:#569CD6;">Content-Length:</span><span style="color:#CE9178;"> 0</span></span>
|
||
<span class="line"><span style="color:#569CD6;">Connection:</span><span style="color:#CE9178;"> keep-alive</span></span>
|
||
<span class="line"><span style="color:#569CD6;">Date:</span><span style="color:#CE9178;"> Sat, 03 Aug 2024 05:24:29 GMT</span></span>
|
||
<span class="line"><span style="color:#569CD6;">EO-LOG-UUID:</span><span style="color:#CE9178;"> 4296647794590631154</span></span>
|
||
<span class="line"><span style="color:#569CD6;">EO-Cache-Status:</span><span style="color:#CE9178;"> MISS</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p><strong>字节流回复:</strong></p><p>视频文件字节流</p><p><strong>示例:</strong></p><p>假设请求上一接口时的 URL 为 <code>https://upos-cs-upcdntxa.bilivideo.com/ugcfx2lf/n240729ad7gxi43yaoml312h2nbt2pnf.xz</code>, 请求头的 <code>X-Upos-Auth</code> 为 <code>ak=1494471752&cdn=%2F%2Fupos-cs-upcdntxa.bilivideo.com&os=upos&sign=911dd5b995895805d785aa607b4153b6&timestamp=1722212776.333&uid=616368979&uip=108.181.24.77&uport=36044&use_dqp=0</code>, 您想要下载到运行目录下的 <code>file.tar.xz</code> 文件</p><div class="language-shell line-numbers-mode" data-highlighter="shiki" data-ext="shell" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-shell"><span class="line"><span style="color:#DCDCAA;">curl</span><span style="color:#569CD6;"> -G</span><span style="color:#CE9178;"> "https://upos-cs-upcdntxa.bilivideo.com/ugcfx2lf/n240729ad7gxi43yaoml312h2nbt2pnf.xz"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">-H </span><span style="color:#CE9178;">"X-Upos-Auth: ak=1494471752&cdn=%2F%2Fupos-cs-upcdntxa.bilivideo.com&os=upos&sign=911dd5b995895805d785aa607b4153b6&timestamp=1722212776.333&uid=616368979&uip=108.181.24.77&uport=36044&use_dqp=0"</span><span style="color:#D7BA7D;"> \</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;">--output </span><span style="color:#CE9178;">file.tar.xz</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><details><summary>查看检查示例:</summary><div class="language-text line-numbers-mode" data-highlighter="shiki" data-ext="text" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-text"><span class="line"><span> % Total % Received % Xferd Average Speed Time Time Time Current</span></span>
|
||
<span class="line"><span> Dload Upload Total Spent Left Speed</span></span>
|
||
<span class="line"><span>100 265M 100 265M 0 0 9493k 0 0:00:28 0:00:28 --:--:-- 10.3M</span></span>
|
||
<span class="line"><span>$ sha512sum file.tar.xz</span></span>
|
||
<span class="line"><span>abfbedf1ac4f251c81103beb4d5406af1e0b64b9d54e99bfc77d2a8a9c4913a9fd2f1751828ace8aac036f6385609d99e251437b07a0491caca2ad7069a57003 file.tar.xz</span></span>
|
||
<span class="line"><span>$ sha512sum ~/Documents/video-proj/20240724-remove-linux-then-install.tar.xz</span></span>
|
||
<span class="line"><span>abfbedf1ac4f251c81103beb4d5406af1e0b64b9d54e99bfc77d2a8a9c4913a9fd2f1751828ace8aac036f6385609d99e251437b07a0491caca2ad7069a57003 /home/sess/Documents/video-proj/20240724-remove-linux-then-install.tar.xz</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></details><h3 id="demo" tabindex="-1"><a class="header-anchor" href="#demo"><span>Demo</span></a></h3><h4 id="java" tabindex="-1"><a class="header-anchor" href="#java"><span>Java</span></a></h4><p>注: 需要 Gson 依赖, Java 8+, 单线程上传, 无异常处理, 仅供参考</p><div class="language-java line-numbers-mode" data-highlighter="shiki" data-ext="java" style="background-color:#1E1E1E;color:#D4D4D4;"><pre class="shiki dark-plus vp-code"><code class="language-java"><span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> java.io.ByteArrayOutputStream;</span></span>
|
||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> java.io.File;</span></span>
|
||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> java.io.FileInputStream;</span></span>
|
||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> java.io.IOException;</span></span>
|
||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> java.io.InputStream;</span></span>
|
||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> java.net.HttpURLConnection;</span></span>
|
||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> java.net.URI;</span></span>
|
||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> java.net.URLEncoder;</span></span>
|
||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> java.nio.charset.StandardCharsets;</span></span>
|
||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> java.util.StringJoiner;</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> com.google.gson.Gson;</span></span>
|
||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> com.google.gson.GsonBuilder;</span></span>
|
||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> com.google.gson.JsonArray;</span></span>
|
||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> com.google.gson.JsonObject;</span></span>
|
||
<span class="line"><span style="color:#569CD6;">import</span><span style="color:#D4D4D4;"> com.google.gson.JsonSyntaxException;</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="color:#6A9955;">/**</span></span>
|
||
<span class="line"><span style="color:#6A9955;"> * A demo class for uploading videos to Bilibili.</span></span>
|
||
<span class="line"><span style="color:#6A9955;"> * </span></span>
|
||
<span class="line"><span style="color:#6A9955;"> * </span><span style="color:#569CD6;">@author</span><span style="color:#6A9955;"> SessX6cf</span></span>
|
||
<span class="line"><span style="color:#6A9955;"> */</span></span>
|
||
<span class="line"><span style="color:#569CD6;">public</span><span style="color:#569CD6;"> class</span><span style="color:#4EC9B0;"> BiliVideoUploader</span><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#569CD6;"> static</span><span style="color:#4EC9B0;"> String</span><span style="color:#9CDCFE;"> SESSDATA</span><span style="color:#D4D4D4;">;</span></span>
|
||
<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#569CD6;"> static</span><span style="color:#4EC9B0;"> File</span><span style="color:#9CDCFE;"> VIDEO_FILE</span><span style="color:#D4D4D4;">;</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="color:#569CD6;"> public</span><span style="color:#569CD6;"> static</span><span style="color:#4EC9B0;"> void</span><span style="color:#DCDCAA;"> main</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">String</span><span style="color:#D4D4D4;">[] </span><span style="color:#9CDCFE;">args</span><span style="color:#D4D4D4;">) </span><span style="color:#569CD6;">throws</span><span style="color:#4EC9B0;"> IOException</span><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> long</span><span style="color:#9CDCFE;"> ts</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">System</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">currentTimeMillis</span><span style="color:#D4D4D4;">();</span></span>
|
||
<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">args</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">length</span><span style="color:#D4D4D4;"> < </span><span style="color:#B5CEA8;">2</span><span style="color:#D4D4D4;">) {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> System</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">out</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">println</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"Usage: java BiliVideoUploader <video_file> <sessdata>"</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#D4D4D4;">;</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">else</span><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> VIDEO_FILE = </span><span style="color:#C586C0;">new</span><span style="color:#DCDCAA;"> File</span><span style="color:#D4D4D4;">(args[</span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">]);</span></span>
|
||
<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#D4D4D4;"> (!</span><span style="color:#9CDCFE;">VIDEO_FILE</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">isFile</span><span style="color:#D4D4D4;">()) {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> System</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">out</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">println</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"It is not a file!"</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#D4D4D4;">;</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">else</span><span style="color:#C586C0;"> if</span><span style="color:#D4D4D4;"> (!</span><span style="color:#9CDCFE;">VIDEO_FILE</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">canRead</span><span style="color:#D4D4D4;">()) {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> System</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">out</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">println</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"Cannot read the file!"</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#D4D4D4;">;</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">else</span><span style="color:#C586C0;"> if</span><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">VIDEO_FILE</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">isDirectory</span><span style="color:#D4D4D4;">()) {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> System</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">out</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">println</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"You can play a directory?!"</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#D4D4D4;">;</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> SESSDATA = args[</span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">];</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"><span style="color:#6A9955;"> // step 1: preupload video</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> System</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">out</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">println</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"step 1: preupload video"</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> JsonObject</span><span style="color:#9CDCFE;"> preuploadVideo</span><span style="color:#D4D4D4;"> = </span><span style="color:#DCDCAA;">preuploadVideo</span><span style="color:#D4D4D4;">();</span></span>
|
||
<span class="line"><span style="color:#6A9955;"> // step 2: post video meta</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> System</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">out</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">println</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"step 2: post video meta"</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> JsonObject</span><span style="color:#9CDCFE;"> postVideoMeta</span><span style="color:#D4D4D4;"> = </span><span style="color:#DCDCAA;">postVideoMeta</span><span style="color:#D4D4D4;">(preuploadVideo);</span></span>
|
||
<span class="line"><span style="color:#6A9955;"> // step 3: upload video</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> System</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">out</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">println</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"step 3: upload video"</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> int</span><span style="color:#9CDCFE;"> chunks</span><span style="color:#D4D4D4;"> = </span><span style="color:#DCDCAA;">uploadVideo</span><span style="color:#D4D4D4;">(preuploadVideo, postVideoMeta);</span></span>
|
||
<span class="line"><span style="color:#6A9955;"> // step 4: end upload</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> System</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">out</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">println</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"step 4: end upload"</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#DCDCAA;"> endupload</span><span style="color:#D4D4D4;">(preuploadVideo, postVideoMeta, chunks);</span></span>
|
||
<span class="line"><span style="color:#6A9955;"> // finished</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> System</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">out</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">println</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"finished ("</span><span style="color:#D4D4D4;"> + (</span><span style="color:#9CDCFE;">System</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">currentTimeMillis</span><span style="color:#D4D4D4;">() - ts) + </span><span style="color:#CE9178;">"ms)"</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#569CD6;"> static</span><span style="color:#4EC9B0;"> String</span><span style="color:#DCDCAA;"> querypart</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">String</span><span style="color:#9CDCFE;"> key</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">String</span><span style="color:#9CDCFE;"> value</span><span style="color:#D4D4D4;">) </span><span style="color:#569CD6;">throws</span><span style="color:#4EC9B0;"> IOException</span><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#D4D4D4;"> key + </span><span style="color:#CE9178;">"="</span><span style="color:#D4D4D4;"> + </span><span style="color:#9CDCFE;">URLEncoder</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">encode</span><span style="color:#D4D4D4;">(value, </span><span style="color:#CE9178;">"UTF-8"</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#569CD6;"> static</span><span style="color:#4EC9B0;"> HttpURLConnection</span><span style="color:#DCDCAA;"> conn</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">String</span><span style="color:#9CDCFE;"> url</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">String</span><span style="color:#9CDCFE;"> method</span><span style="color:#D4D4D4;">) </span><span style="color:#569CD6;">throws</span><span style="color:#4EC9B0;"> IOException</span><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> HttpURLConnection</span><span style="color:#9CDCFE;"> conn</span><span style="color:#D4D4D4;">;</span></span>
|
||
<span class="line"><span style="color:#C586C0;"> try</span><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> conn = (HttpURLConnection) </span><span style="color:#C586C0;">new</span><span style="color:#DCDCAA;"> URI</span><span style="color:#D4D4D4;">(url).</span><span style="color:#DCDCAA;">toURL</span><span style="color:#D4D4D4;">().</span><span style="color:#DCDCAA;">openConnection</span><span style="color:#D4D4D4;">();</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">catch</span><span style="color:#D4D4D4;"> (</span><span style="color:#4EC9B0;">java.net.URISyntaxException</span><span style="color:#9CDCFE;"> e</span><span style="color:#D4D4D4;">) {</span></span>
|
||
<span class="line"><span style="color:#C586C0;"> throw</span><span style="color:#C586C0;"> new</span><span style="color:#DCDCAA;"> IOException</span><span style="color:#D4D4D4;">(e);</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> conn</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">setRequestMethod</span><span style="color:#D4D4D4;">(method);</span></span>
|
||
<span class="line"><span style="color:#6A9955;"> // conn.setRequestProperty("User-Agent", "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0");</span></span>
|
||
<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#D4D4D4;"> (</span><span style="color:#9CDCFE;">url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">contains</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"bilibili.com"</span><span style="color:#D4D4D4;">)) </span><span style="color:#9CDCFE;">conn</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">setRequestProperty</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"Cookie"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">"SESSDATA="</span><span style="color:#D4D4D4;"> + SESSDATA);</span></span>
|
||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#D4D4D4;"> conn;</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#569CD6;"> static</span><span style="color:#4EC9B0;"> byte</span><span style="color:#D4D4D4;">[] </span><span style="color:#DCDCAA;">inputStreamToString</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">HttpURLConnection</span><span style="color:#9CDCFE;"> conn</span><span style="color:#D4D4D4;">) </span><span style="color:#569CD6;">throws</span><span style="color:#4EC9B0;"> IOException</span><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> ByteArrayOutputStream</span><span style="color:#9CDCFE;"> baos</span><span style="color:#D4D4D4;"> = </span><span style="color:#C586C0;">new</span><span style="color:#DCDCAA;"> ByteArrayOutputStream</span><span style="color:#D4D4D4;">();</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> InputStream</span><span style="color:#9CDCFE;"> in</span><span style="color:#D4D4D4;">;</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> in = </span><span style="color:#9CDCFE;">conn</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">getInputStream</span><span style="color:#D4D4D4;">();</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> int</span><span style="color:#9CDCFE;"> b</span><span style="color:#D4D4D4;">;</span></span>
|
||
<span class="line"><span style="color:#C586C0;"> while</span><span style="color:#D4D4D4;"> ((b = </span><span style="color:#9CDCFE;">in</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">read</span><span style="color:#D4D4D4;">()) != -</span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">) {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> baos</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">write</span><span style="color:#D4D4D4;">(b);</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> in</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">close</span><span style="color:#D4D4D4;">();</span></span>
|
||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#9CDCFE;"> baos</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">toByteArray</span><span style="color:#D4D4D4;">();</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#569CD6;"> static</span><span style="color:#569CD6;"> final</span><span style="color:#4EC9B0;"> Gson</span><span style="color:#9CDCFE;"> GSON</span><span style="color:#D4D4D4;"> = </span><span style="color:#C586C0;">new</span><span style="color:#DCDCAA;"> GsonBuilder</span><span style="color:#D4D4D4;">().</span><span style="color:#DCDCAA;">setPrettyPrinting</span><span style="color:#D4D4D4;">().</span><span style="color:#DCDCAA;">create</span><span style="color:#D4D4D4;">();</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#569CD6;"> static</span><span style="color:#4EC9B0;"> JsonObject</span><span style="color:#DCDCAA;"> preuploadVideo</span><span style="color:#D4D4D4;">() </span><span style="color:#569CD6;">throws</span><span style="color:#4EC9B0;"> IOException</span><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> StringJoiner</span><span style="color:#9CDCFE;"> url</span><span style="color:#D4D4D4;"> = </span><span style="color:#C586C0;">new</span><span style="color:#DCDCAA;"> StringJoiner</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"&"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">"https://member.bilibili.com/preupload?"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">add</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">querypart</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"name"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">VIDEO_FILE</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">getName</span><span style="color:#D4D4D4;">()));</span></span>
|
||
<span class="line"><span style="color:#6A9955;"> // url.add(querypart("size", String.valueOf(VIDEO_FILE.length())));</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">add</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">querypart</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"r"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">"upos"</span><span style="color:#D4D4D4;">));</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">add</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">querypart</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"profile"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">"ugcfx/bup"</span><span style="color:#D4D4D4;">));</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> HttpURLConnection</span><span style="color:#9CDCFE;"> conn</span><span style="color:#D4D4D4;"> = </span><span style="color:#DCDCAA;">conn</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">toString</span><span style="color:#D4D4D4;">(), </span><span style="color:#CE9178;">"GET"</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> System</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">out</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">println</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"GET "</span><span style="color:#D4D4D4;"> + </span><span style="color:#9CDCFE;">url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">toString</span><span style="color:#D4D4D4;">());</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> String</span><span style="color:#9CDCFE;"> response</span><span style="color:#D4D4D4;"> = </span><span style="color:#C586C0;">new</span><span style="color:#DCDCAA;"> String</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">inputStreamToString</span><span style="color:#D4D4D4;">(conn), </span><span style="color:#9CDCFE;">StandardCharsets</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">UTF_8</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#C586C0;"> try</span><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> JsonObject</span><span style="color:#9CDCFE;"> json</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">GSON</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">fromJson</span><span style="color:#D4D4D4;">(response, </span><span style="color:#9CDCFE;">JsonObject</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">class</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> System</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">out</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">println</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">GSON</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">toJson</span><span style="color:#D4D4D4;">(json));</span></span>
|
||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#D4D4D4;"> json;</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">catch</span><span style="color:#D4D4D4;"> (</span><span style="color:#4EC9B0;">JsonSyntaxException</span><span style="color:#9CDCFE;"> e</span><span style="color:#D4D4D4;">) {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> System</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">out</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">println</span><span style="color:#D4D4D4;">(response);</span></span>
|
||
<span class="line"><span style="color:#C586C0;"> throw</span><span style="color:#D4D4D4;"> e;</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#569CD6;"> static</span><span style="color:#4EC9B0;"> JsonObject</span><span style="color:#DCDCAA;"> postVideoMeta</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">JsonObject</span><span style="color:#9CDCFE;"> preuploadVideo</span><span style="color:#D4D4D4;">) </span><span style="color:#569CD6;">throws</span><span style="color:#4EC9B0;"> IOException</span><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> String</span><span style="color:#9CDCFE;"> schemeandhost</span><span style="color:#D4D4D4;"> = </span><span style="color:#CE9178;">"https:"</span><span style="color:#D4D4D4;"> + </span><span style="color:#9CDCFE;">preuploadVideo</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">get</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"endpoint"</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">getAsString</span><span style="color:#D4D4D4;">();</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> String</span><span style="color:#9CDCFE;"> path</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">preuploadVideo</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">get</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"upos_uri"</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">getAsString</span><span style="color:#D4D4D4;">().</span><span style="color:#DCDCAA;">replaceFirst</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"upos:/"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> StringJoiner</span><span style="color:#9CDCFE;"> url</span><span style="color:#D4D4D4;"> = </span><span style="color:#C586C0;">new</span><span style="color:#DCDCAA;"> StringJoiner</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"&"</span><span style="color:#D4D4D4;">, schemeandhost + path + </span><span style="color:#CE9178;">"?"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">add</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">querypart</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"uploads"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">)); </span><span style="color:#6A9955;">// WARNING: this is not a typo, it's required, or 404</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">add</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">querypart</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"output"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">"json"</span><span style="color:#D4D4D4;">));</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">add</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">querypart</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"profile"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">"ugcfx/bup"</span><span style="color:#D4D4D4;">));</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">add</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">querypart</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"filesize"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">String</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">valueOf</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">VIDEO_FILE</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">length</span><span style="color:#D4D4D4;">())));</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">add</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">querypart</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"partsize"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">preuploadVideo</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">get</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"chunk_size"</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">getAsString</span><span style="color:#D4D4D4;">()));</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">add</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">querypart</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"biz_id"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">preuploadVideo</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">get</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"biz_id"</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">getAsString</span><span style="color:#D4D4D4;">()));</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> HttpURLConnection</span><span style="color:#9CDCFE;"> conn</span><span style="color:#D4D4D4;"> = </span><span style="color:#DCDCAA;">conn</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">toString</span><span style="color:#D4D4D4;">(), </span><span style="color:#CE9178;">"POST"</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> conn</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">setRequestProperty</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"X-Upos-Auth"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">preuploadVideo</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">get</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"auth"</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">getAsString</span><span style="color:#D4D4D4;">()); </span><span style="color:#6A9955;">// 403 without it</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> System</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">out</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">println</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"POST "</span><span style="color:#D4D4D4;"> + </span><span style="color:#9CDCFE;">url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">toString</span><span style="color:#D4D4D4;">());</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> String</span><span style="color:#9CDCFE;"> response</span><span style="color:#D4D4D4;"> = </span><span style="color:#C586C0;">new</span><span style="color:#DCDCAA;"> String</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">inputStreamToString</span><span style="color:#D4D4D4;">(conn), </span><span style="color:#9CDCFE;">StandardCharsets</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">UTF_8</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#C586C0;"> try</span><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> JsonObject</span><span style="color:#9CDCFE;"> json</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">GSON</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">fromJson</span><span style="color:#D4D4D4;">(response, </span><span style="color:#9CDCFE;">JsonObject</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">class</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> System</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">out</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">println</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">GSON</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">toJson</span><span style="color:#D4D4D4;">(json));</span></span>
|
||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#D4D4D4;"> json;</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">catch</span><span style="color:#D4D4D4;"> (</span><span style="color:#4EC9B0;">JsonSyntaxException</span><span style="color:#9CDCFE;"> e</span><span style="color:#D4D4D4;">) {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> System</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">out</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">println</span><span style="color:#D4D4D4;">(response);</span></span>
|
||
<span class="line"><span style="color:#C586C0;"> throw</span><span style="color:#D4D4D4;"> e;</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#569CD6;"> static</span><span style="color:#4EC9B0;"> int</span><span style="color:#DCDCAA;"> uploadVideo</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">JsonObject</span><span style="color:#9CDCFE;"> preuploadVideo</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">JsonObject</span><span style="color:#9CDCFE;"> postVideoMeta</span><span style="color:#D4D4D4;">) </span><span style="color:#569CD6;">throws</span><span style="color:#4EC9B0;"> IOException</span><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> long</span><span style="color:#9CDCFE;"> startts</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">System</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">currentTimeMillis</span><span style="color:#D4D4D4;">() - </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">;</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> String</span><span style="color:#9CDCFE;"> schemeandhost</span><span style="color:#D4D4D4;"> = </span><span style="color:#CE9178;">"https:"</span><span style="color:#D4D4D4;"> + </span><span style="color:#9CDCFE;">preuploadVideo</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">get</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"endpoint"</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">getAsString</span><span style="color:#D4D4D4;">();</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> String</span><span style="color:#9CDCFE;"> path</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">preuploadVideo</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">get</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"upos_uri"</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">getAsString</span><span style="color:#D4D4D4;">().</span><span style="color:#DCDCAA;">replaceFirst</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"upos:/"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> String</span><span style="color:#9CDCFE;"> urlp</span><span style="color:#D4D4D4;"> = schemeandhost + path + </span><span style="color:#CE9178;">"?"</span><span style="color:#D4D4D4;">;</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> long</span><span style="color:#9CDCFE;"> length</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">VIDEO_FILE</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">length</span><span style="color:#D4D4D4;">();</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> byte</span><span style="color:#D4D4D4;">[] </span><span style="color:#9CDCFE;">buffer</span><span style="color:#D4D4D4;"> = </span><span style="color:#C586C0;">new</span><span style="color:#4EC9B0;"> byte</span><span style="color:#D4D4D4;">[</span><span style="color:#9CDCFE;">preuploadVideo</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">get</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"chunk_size"</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">getAsInt</span><span style="color:#D4D4D4;">()];</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> int</span><span style="color:#9CDCFE;"> size</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">;</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> int</span><span style="color:#9CDCFE;"> chunks</span><span style="color:#D4D4D4;"> = (</span><span style="color:#4EC9B0;">int</span><span style="color:#D4D4D4;">) </span><span style="color:#9CDCFE;">Math</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">ceil</span><span style="color:#D4D4D4;">(length / (</span><span style="color:#4EC9B0;">double</span><span style="color:#D4D4D4;">) </span><span style="color:#9CDCFE;">buffer</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">length</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> InputStream</span><span style="color:#9CDCFE;"> in</span><span style="color:#D4D4D4;"> = </span><span style="color:#C586C0;">new</span><span style="color:#DCDCAA;"> FileInputStream</span><span style="color:#D4D4D4;">(VIDEO_FILE);</span></span>
|
||
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#D4D4D4;"> (</span><span style="color:#4EC9B0;">int</span><span style="color:#9CDCFE;"> chunk</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">; chunk < chunks; chunk++) {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> System</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">out</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">println</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"speed: "</span><span style="color:#D4D4D4;"> + (chunk * </span><span style="color:#9CDCFE;">buffer</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">length</span><span style="color:#D4D4D4;">) / (</span><span style="color:#9CDCFE;">System</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">currentTimeMillis</span><span style="color:#D4D4D4;">() - startts) + </span><span style="color:#CE9178;">"bytes/s"</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> System</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">out</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">println</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"chunk: "</span><span style="color:#D4D4D4;"> + (chunk + </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">) + </span><span style="color:#CE9178;">"/"</span><span style="color:#D4D4D4;"> + chunks);</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> size = </span><span style="color:#9CDCFE;">in</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">read</span><span style="color:#D4D4D4;">(buffer, </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">buffer</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">length</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#C586C0;"> if</span><span style="color:#D4D4D4;"> (size == -</span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">) {</span></span>
|
||
<span class="line"><span style="color:#C586C0;"> break</span><span style="color:#D4D4D4;">;</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> StringJoiner</span><span style="color:#9CDCFE;"> url</span><span style="color:#D4D4D4;"> = </span><span style="color:#C586C0;">new</span><span style="color:#DCDCAA;"> StringJoiner</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"&"</span><span style="color:#D4D4D4;">, urlp, </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">add</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">querypart</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"partNumber"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">String</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">valueOf</span><span style="color:#D4D4D4;">(chunk + </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">)));</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">add</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">querypart</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"uploadId"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">postVideoMeta</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">get</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"upload_id"</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">getAsString</span><span style="color:#D4D4D4;">()));</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">add</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">querypart</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"chunk"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">String</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">valueOf</span><span style="color:#D4D4D4;">(chunk)));</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">add</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">querypart</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"chunks"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">String</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">valueOf</span><span style="color:#D4D4D4;">(chunks)));</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">add</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">querypart</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"size"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">String</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">valueOf</span><span style="color:#D4D4D4;">(size)));</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">add</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">querypart</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"start"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">String</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">valueOf</span><span style="color:#D4D4D4;">(chunk * </span><span style="color:#9CDCFE;">buffer</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">length</span><span style="color:#D4D4D4;">)));</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">add</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">querypart</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"end"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">String</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">valueOf</span><span style="color:#D4D4D4;">((chunk) * </span><span style="color:#9CDCFE;">buffer</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">length</span><span style="color:#D4D4D4;"> + size)));</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">add</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">querypart</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"total"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">String</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">valueOf</span><span style="color:#D4D4D4;">(length)));</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> HttpURLConnection</span><span style="color:#9CDCFE;"> conn</span><span style="color:#D4D4D4;"> = </span><span style="color:#DCDCAA;">conn</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">toString</span><span style="color:#D4D4D4;">(), </span><span style="color:#CE9178;">"PUT"</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> conn</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">setRequestProperty</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"X-Upos-Auth"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">preuploadVideo</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">get</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"auth"</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">getAsString</span><span style="color:#D4D4D4;">());</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> conn</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">setRequestProperty</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"Content-Type"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">"application/octet-stream"</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> conn</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">setRequestProperty</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"Content-Length"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">String</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">valueOf</span><span style="color:#D4D4D4;">(size));</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> conn</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">setDoOutput</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">true</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> conn</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">getOutputStream</span><span style="color:#D4D4D4;">().</span><span style="color:#DCDCAA;">write</span><span style="color:#D4D4D4;">(buffer, </span><span style="color:#B5CEA8;">0</span><span style="color:#D4D4D4;">, size);</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> System</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">out</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">println</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"PUT "</span><span style="color:#D4D4D4;"> + </span><span style="color:#9CDCFE;">url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">toString</span><span style="color:#D4D4D4;">());</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> String</span><span style="color:#9CDCFE;"> response</span><span style="color:#D4D4D4;"> = </span><span style="color:#C586C0;">new</span><span style="color:#DCDCAA;"> String</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">inputStreamToString</span><span style="color:#D4D4D4;">(conn), </span><span style="color:#9CDCFE;">StandardCharsets</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">UTF_8</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> System</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">out</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">println</span><span style="color:#D4D4D4;">(response);</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> in</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">close</span><span style="color:#D4D4D4;">();</span></span>
|
||
<span class="line"><span style="color:#C586C0;"> return</span><span style="color:#D4D4D4;"> chunks;</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="color:#569CD6;"> private</span><span style="color:#569CD6;"> static</span><span style="color:#4EC9B0;"> void</span><span style="color:#DCDCAA;"> endupload</span><span style="color:#D4D4D4;">(</span><span style="color:#4EC9B0;">JsonObject</span><span style="color:#9CDCFE;"> preuploadVideo</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">JsonObject</span><span style="color:#9CDCFE;"> postVideoMeta</span><span style="color:#D4D4D4;">, </span><span style="color:#4EC9B0;">int</span><span style="color:#9CDCFE;"> chunks</span><span style="color:#D4D4D4;">) </span><span style="color:#569CD6;">throws</span><span style="color:#4EC9B0;"> IOException</span><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> String</span><span style="color:#9CDCFE;"> schemeandhost</span><span style="color:#D4D4D4;"> = </span><span style="color:#CE9178;">"https:"</span><span style="color:#D4D4D4;"> + </span><span style="color:#9CDCFE;">preuploadVideo</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">get</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"endpoint"</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">getAsString</span><span style="color:#D4D4D4;">();</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> String</span><span style="color:#9CDCFE;"> path</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">preuploadVideo</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">get</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"upos_uri"</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">getAsString</span><span style="color:#D4D4D4;">().</span><span style="color:#DCDCAA;">replaceFirst</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"upos:/"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> StringJoiner</span><span style="color:#9CDCFE;"> url</span><span style="color:#D4D4D4;"> = </span><span style="color:#C586C0;">new</span><span style="color:#DCDCAA;"> StringJoiner</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"&"</span><span style="color:#D4D4D4;">, schemeandhost + path + </span><span style="color:#CE9178;">"?"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">""</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">add</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">querypart</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"output"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">"json"</span><span style="color:#D4D4D4;">));</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">add</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">querypart</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"name"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">VIDEO_FILE</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">getName</span><span style="color:#D4D4D4;">()));</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">add</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">querypart</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"profile"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">"ugcfx/bup"</span><span style="color:#D4D4D4;">));</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">add</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">querypart</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"uploadId"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">postVideoMeta</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">get</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"upload_id"</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">getAsString</span><span style="color:#D4D4D4;">()));</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">add</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">querypart</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"biz_id"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">preuploadVideo</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">get</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"biz_id"</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">getAsString</span><span style="color:#D4D4D4;">()));</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> JsonArray</span><span style="color:#9CDCFE;"> parts</span><span style="color:#D4D4D4;"> = </span><span style="color:#C586C0;">new</span><span style="color:#DCDCAA;"> JsonArray</span><span style="color:#D4D4D4;">();</span></span>
|
||
<span class="line"><span style="color:#C586C0;"> for</span><span style="color:#D4D4D4;"> (</span><span style="color:#4EC9B0;">int</span><span style="color:#9CDCFE;"> i</span><span style="color:#D4D4D4;"> = </span><span style="color:#B5CEA8;">1</span><span style="color:#D4D4D4;">; i <= chunks; i++) {</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> JsonObject</span><span style="color:#9CDCFE;"> part</span><span style="color:#D4D4D4;"> = </span><span style="color:#C586C0;">new</span><span style="color:#DCDCAA;"> JsonObject</span><span style="color:#D4D4D4;">();</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> part</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">addProperty</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"partNumber"</span><span style="color:#D4D4D4;">, i);</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> part</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">addProperty</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"eTag"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">"etag"</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> parts</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">add</span><span style="color:#D4D4D4;">(part);</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> JsonObject</span><span style="color:#9CDCFE;"> body</span><span style="color:#D4D4D4;"> = </span><span style="color:#C586C0;">new</span><span style="color:#DCDCAA;"> JsonObject</span><span style="color:#D4D4D4;">();</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> body</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">add</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"parts"</span><span style="color:#D4D4D4;">, parts);</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> HttpURLConnection</span><span style="color:#9CDCFE;"> conn</span><span style="color:#D4D4D4;"> = </span><span style="color:#DCDCAA;">conn</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">toString</span><span style="color:#D4D4D4;">(), </span><span style="color:#CE9178;">"POST"</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> conn</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">setRequestProperty</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"X-Upos-Auth"</span><span style="color:#D4D4D4;">, </span><span style="color:#9CDCFE;">preuploadVideo</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">get</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"auth"</span><span style="color:#D4D4D4;">).</span><span style="color:#DCDCAA;">getAsString</span><span style="color:#D4D4D4;">());</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> conn</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">setRequestProperty</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"Content-Type"</span><span style="color:#D4D4D4;">, </span><span style="color:#CE9178;">"application/json; charset=UTF-8"</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> conn</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">setDoOutput</span><span style="color:#D4D4D4;">(</span><span style="color:#569CD6;">true</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> conn</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">getOutputStream</span><span style="color:#D4D4D4;">().</span><span style="color:#DCDCAA;">write</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">body</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">toString</span><span style="color:#D4D4D4;">().</span><span style="color:#DCDCAA;">getBytes</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">StandardCharsets</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">UTF_8</span><span style="color:#D4D4D4;">));</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> System</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">out</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">println</span><span style="color:#D4D4D4;">(</span><span style="color:#CE9178;">"POST "</span><span style="color:#D4D4D4;"> + </span><span style="color:#9CDCFE;">url</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">toString</span><span style="color:#D4D4D4;">());</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> String</span><span style="color:#9CDCFE;"> response</span><span style="color:#D4D4D4;"> = </span><span style="color:#C586C0;">new</span><span style="color:#DCDCAA;"> String</span><span style="color:#D4D4D4;">(</span><span style="color:#DCDCAA;">inputStreamToString</span><span style="color:#D4D4D4;">(conn), </span><span style="color:#9CDCFE;">StandardCharsets</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">UTF_8</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#C586C0;"> try</span><span style="color:#D4D4D4;"> {</span></span>
|
||
<span class="line"><span style="color:#4EC9B0;"> JsonObject</span><span style="color:#9CDCFE;"> json</span><span style="color:#D4D4D4;"> = </span><span style="color:#9CDCFE;">GSON</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">fromJson</span><span style="color:#D4D4D4;">(response, </span><span style="color:#9CDCFE;">JsonObject</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">class</span><span style="color:#D4D4D4;">);</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> System</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">out</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">println</span><span style="color:#D4D4D4;">(</span><span style="color:#9CDCFE;">GSON</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">toJson</span><span style="color:#D4D4D4;">(json));</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> } </span><span style="color:#C586C0;">catch</span><span style="color:#D4D4D4;"> (</span><span style="color:#4EC9B0;">JsonSyntaxException</span><span style="color:#9CDCFE;"> e</span><span style="color:#D4D4D4;">) {</span></span>
|
||
<span class="line"><span style="color:#9CDCFE;"> System</span><span style="color:#D4D4D4;">.</span><span style="color:#9CDCFE;">out</span><span style="color:#D4D4D4;">.</span><span style="color:#DCDCAA;">println</span><span style="color:#D4D4D4;">(response);</span></span>
|
||
<span class="line"><span style="color:#C586C0;"> throw</span><span style="color:#D4D4D4;"> e;</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"><span style="color:#D4D4D4;"> }</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="color:#D4D4D4;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div></div><!--[--><!--]--></div><footer class="vp-page-meta"><div class="vp-meta-item edit-link"><a class="auto-link external-link label" href="https://github.com/SocialSisterYi/bilibili-API-collect/edit/master/docs/creativecenter/upload.md" aria-label="在 GitHub 上编辑此页" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><svg class="edit-icon" viewbox="0 0 1024 1024"><g fill="currentColor"><path d="M430.818 653.65a60.46 60.46 0 0 1-50.96-93.281l71.69-114.012 7.773-10.365L816.038 80.138A60.46 60.46 0 0 1 859.225 62a60.46 60.46 0 0 1 43.186 18.138l43.186 43.186a60.46 60.46 0 0 1 0 86.373L588.879 565.55l-8.637 8.637-117.466 68.234a60.46 60.46 0 0 1-31.958 11.229z"></path><path d="M728.802 962H252.891A190.883 190.883 0 0 1 62.008 771.98V296.934a190.883 190.883 0 0 1 190.883-192.61h267.754a60.46 60.46 0 0 1 0 120.92H252.891a69.962 69.962 0 0 0-69.098 69.099V771.98a69.962 69.962 0 0 0 69.098 69.098h475.911A69.962 69.962 0 0 0 797.9 771.98V503.363a60.46 60.46 0 1 1 120.922 0V771.98A190.883 190.883 0 0 1 728.802 962z"></path></g></svg><!--]--><!--]-->在 GitHub 上编辑此页<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-meta-item git-info"><div class="vp-meta-item last-updated"><span class="meta-item-label">最近更新: </span><time class="meta-item-info" datetime="2025-07-13T22:57:26.000Z" data-allow-mismatch>2025/7/13 22:57</time></div><div class="vp-meta-item contributors"><span class="meta-item-label">Contributors: </span><span class="meta-item-info"><!--[--><!--[--><span class="contributor" title="email: 102411014+SessionHu@users.noreply.github.com">SessionHu</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: 45892418+SocialSisterYi@users.noreply.github.com">SocialSisterYi</span><!--[-->, <!--]--><!--]--><!--[--><span class="contributor" title="email: 1101022351@qq.com">renmu123</span><!----><!--]--><!--]--></span></div></div></footer><!----><!--[--><!--[--><footer style="text-align:center;"> Copyright © 2020-2025 <a href="https://github.com/SocialSisterYi/">SocialSisterYi</a> | <a href="https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/LICENSE">CC-BY-NC-4.0 Licensed</a></footer><!--]--><!--]--></main><!--]--></div><!--[--><!----><!--]--><!--]--></div>
|
||
<script type="module" src="/bilibili-API-collect/assets/app-Dgsdh8A6.js" defer></script>
|
||
</body>
|
||
</html>
|