🚀调整项目结构

This commit is contained in:
SocialSisterYi 2023-02-22 01:00:06 +08:00
parent b85e835ce7
commit 7d89ece2ac
No known key found for this signature in database
GPG Key ID: 4359DB0F41BEEBBA
201 changed files with 84964 additions and 0 deletions

BIN
.vuepress/public/logo2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

3
.vuepress/theme/index.js Normal file
View File

@ -0,0 +1,3 @@
module.exports = {
extend: '@vuepress/theme-default'
}

View File

@ -0,0 +1,21 @@
<template>
<ParentLayout>
<template #page-bottom>
<footer style="text-align: center;">
Copyright © 2020-2023 <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>
</template>
</ParentLayout>
</template>
<script>
import ParentLayout from '@parent-theme/layouts/Layout.vue'
export default {
name: 'Layout',
components: {
ParentLayout
}
}
</script>

BIN
assets/img/2233login.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

3
assets/img/activit.svg Normal file
View File

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%">
<path d="M518.656 475.904a223.488 223.488 0 0 1-23.296-75.52 366.08 366.08 0 0 1 81.408 14.592 623.104 623.104 0 0 1-58.112 60.928m-69.888-119.04c-11.52-58.112-8.704-55.296-25.6-156.928a265.984 265.984 0 0 0-78.336 46.592c51.2 104.448 60.928 165.376 92.928 290.304 51.2-5.632 211.968-40.704 226.56-130.56 8.704-64-142.336-64-215.04-49.408M486.4 624.128a263.424 263.424 0 0 0-107.52 69.632l43.52 153.6a47.872 47.872 0 0 1-92.928 23.296L216.576 473.088l-72.704-204.8c2.816-5.632 5.888-8.704 8.704-14.336l-14.592-51.2a46.08 46.08 0 0 1 32-57.856A47.616 47.616 0 0 1 228.096 179.2v2.816a334.848 334.848 0 0 1 98.816-43.52c177.152-46.592 203.264 55.04 429.824 23.296L890.368 588.8c-171.52 90.112-232.448-11.52-403.712 35.072" fill="#F39800">
</svg>

After

Width:  |  Height:  |  Size: 835 B

20
assets/img/add.svg Normal file
View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 24.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 838 838" enable-background="new 0 0 838 838" xml:space="preserve">
<path fill="#1497C7" d="M419,838c-118.67-3.33-217.33-44.33-296-123S3.33,537.67,0,419c3.33-118.67,44.33-217.33,123-296
S300.33,3.33,419,0c118.67,3.33,217.33,44.33,296,123s119.67,177.33,123,296c-3.33,118.67-44.33,217.33-123,296
S537.67,834.67,419,838z M372,372H233v94h139v139h94V466h139v-94H466V233h-94V372z"/>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 715 B

BIN
assets/img/akari.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

BIN
assets/img/ban.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

BIN
assets/img/battery-100.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

44
assets/img/bilibili.svg Normal file
View File

@ -0,0 +1,44 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2250 1024">
<path d="M2079.44,914.36c-10,0-19-0.33-27-1c-17.33-1.33-34.33-2-51-2c-10.67,0-10.67-0.33-12-11l-16-182l-16-151
l-11-93l-10-81l-18-126c-6-44.67-13.33-89.33-22-134c-1.33-6.67-1-7.67,7-9c31.33-6,63-9,95-9h11c5.33,0.67,8.33,4,9,10
c1.33,23.33,2.67,46.33,4,69l28,373l14,171l9,98L2079.44,914.36z M853.44,115.36c4.67,0,10.67,0,18,0c9.33,0,11,2.67,11,12l8,121
l18,251l11,131l8,101l16,174c0,8-1,9-9,9c-24-1.33-48-2.33-72-3c-5.33,0.67-8-1.67-8-7c-1.33-11.33-2.33-23-3-35
c-3.33-30-6-60.33-8-91l-16-158l-17-143l-12-101l-13-92c-6-41.33-12.67-82.67-20-124l-5-28c-1.33-4.67,0.33-7.33,5-8
C793.44,119.03,820.11,114.03,853.44,115.36z M1859.44,518.36c25.33,0,28,1,32,25c4.67,30,8.67,60,12,90l11,97l21,206
c1.33,4.67-0.33,7-5,7l-78,9c-8,1.33-9.67,0-11-8l-45-230l-28-153l-4-21c-0.67-4,1-6.67,5-8
C1800.11,525.03,1830.11,520.36,1859.44,518.36z M722.44,518.36c26.67-1.33,30.33,1.67,33,27c6.67,40.67,12,81.33,16,122l13,120
l8,81l7,65c0,9.33-1,10.67-9,12l-74,7c-8,1.33-9.67,0-11-8l-61-314l-16-89c-1.33-4.67,0.67-7.67,6-9
C665.11,525.03,694.44,520.36,722.44,518.36z M1104.44,828.36v124v4c0.67,6-2,8.67-8,8c-8,0-16,0-24,0c-17.33,0-34.33,0.67-51,2
c-9.33,1.33-9.67,0.67-11-10l-16-180l-8-89l-12-136c-1.33-10.67,0.67-12.67,10-14c28-2.67,56-3.33,84-2c6.67,0.67,13.67,1.67,21,3
c8,2.67,9,4,9,12c1.33,18,2.33,36,3,54l1,60C1103.78,719.03,1104.44,773.7,1104.44,828.36z M2239.44,834.36v117v6
c0,5.33-2.33,7.67-7,7h-36c-14,0-27.67,0.67-41,2c-8,1.33-8.67,0.33-10-9l-21-234l-11-116l-4-59c-1.33-8,1-10,9-10
c33.33-4,66.67-5,100-1c13.33,1.33,14.67,4.67,16,18c1.33,44.67,2.33,89,3,133C2238.78,735.03,2238.11,782.36,2239.44,834.36z
M1830.44,305.36c10,0,18.67,0.67,26,2c4.67,0.67,7.33,3.33,8,8l13,139c2.67,12,1,14-11,14l-34,2c-6.67,1.33-10,1.67-10-9
c-4.67-37.33-9.33-75-14-113l-4-32c-1.33-6,1-9.33,7-10L1830.44,305.36z M697.44,305.36c8,0,15.67,0.67,23,2c4,0.67,6.33,3.33,7,8
l4,35l10,109c1.33,8,1,9-7,9c-12.67,0.67-25.67,1.33-39,2c-8,1.33-8.67,0-10-8l-9-80c-2.67-22.67-5.33-45-8-67
c-1.33-5.33,0.67-8,6-8C681.78,306.03,689.44,305.36,697.44,305.36z M1096.44,405.36c0,23.33,0,46.33,0,69c1.33,10.67-0.67,11-10,11
c-12.67,0-25-0.67-37-2c-8-1.33-9.33-1-8-9l-3-85c0-18.67-0.33-37.67-1-57c-1.33-9.33-0.33-10,9-10c14,0,28,1,42,3c8,0,8,2,8,10
V405.36z M2232.44,406.36c0,22.67,0,45.67,0,69c0,9.33-0.67,10-10,10c-12.67-0.67-25.33-1.33-38-2c-6-0.67-8.67-3.67-8-9l-3-143
c0-8,1-9,9-9c12.67,0,25,0.67,37,2c14.67,1.33,13,4.33,13,15V406.36z M666.44,460.36c1.33,12,0,13.67-12,15l-24,6
c-8,2.67-8.67,0.67-10-6l-25-141c-2.67-9.33-1.33-10.67,8-12l35-6c8-1.33,10-1,10,7c3.33,17.33,6,34.33,8,51l10,80V460.36z
M1730.44,323.36c15.33-2.67,31-5,47-7c4.67-0.67,7.33,1.67,8,7c2.67,18.67,5.33,37,8,55c4,26.67,6.67,53.67,8,81v8
c0.67,4-1,6.67-5,8l-32,7c-4.67,0.67-7.33-1.33-8-6l-26-149V323.36z M1020.44,431.36c0,16-0.67,31-2,45c0,4.67-2.33,7.33-7,8l-31,3
c-4.67,0.67-7-1.67-7-7c-2-14.67-3.33-29.33-4-44c-2-27.33-3.67-55-5-83l-2-20c-0.67-4,1-6,5-6c13.33-1.33,27-2.33,41-3
c6.67,0,9,1,9,9L1020.44,431.36z M2154.44,415.36c0.67,19.33,0.67,38.67,0,58c1.33,9.33-0.67,11-10,11l-28,3c-5.33,0.67-8-1.67-8-7
c-1.33-25.33-3-50.67-5-76l-4-70c-0.67-4.67,1-7,5-7c13.33-1.33,26.67-2.33,40-3c6.67,0,8,1,8,9
C2154.44,360.7,2155.11,388.03,2154.44,415.36z M627.44,756.36c16,18.67,18.67,40.33,12,63c-6,22-17,41-33,57
c-26,27.33-55.67,49.33-89,66c-56.67,30-116.33,50.67-179,62c-44.67,9.33-89.67,15.33-135,18c-14,0.67-28,1-42,1h-30
c-8,0-9.67-2-11-10l-7-97l-19-191l-21-182l-12-97l-13-93c-7.33-51.33-15.67-102.33-25-153c-6.67-41.33-14.33-82.33-23-123
c-1.33-5.33,0.33-8.67,5-10l139-58c8.67-4,17.33-7,26-9c6-1.33,8.67,1,8,7c0,16-0.33,32.33-1,49l-1,13c-1.33,58-1.33,116.33,0,175
c1.33,51.33,3.67,102.67,7,154c5.33,80,13,160.33,21,239c0,8,0.67,8.33,10,7c16.67-2.67,33.33-4,50-4c53.33,0,105.67,6.33,157,19
c44.67,10.67,88.33,25.67,131,45c20.67,10,40,22,58,36C617.11,745.03,622.78,750.36,627.44,756.36z M1754.44,747.36
c20.67,17.33,28,39.67,22,67c-5.33,22-15.33,41.33-30,58c-24,26.67-51.67,48.33-83,65c-60,33.33-124,56-192,68
c-36.67,7.33-73.67,12.67-111,16c-21.33,2-43.67,2.67-67,2h-27c-6,0.67-9-2-9-8c-2-28-4.33-56-7-84l-16-171l-17-149l-21-168
c-3.33-29.33-7.33-58.67-12-88l-18-112c-8-53.33-17.67-106.33-29-159l-1-7c-2-5.33-0.33-8.67,5-10c49.33-20,96.67-42.33,146-61
c13.33-5.33,29.33-11,28,1c-4,37.33-2.67,74-4,110c-1.33,30-1,59.67,1,89c0,8,0,15.67,0,23c0,36,1.33,71.67,4,107
c2,47.33,5,94.67,9,142c2.67,34,5.67,67.67,9,101c1.33,18.67,3.33,37.33,6,56c0,10.67,1.67,10.33,11,9c18-2.67,36-4,54-4
c62.67,1.33,124,10.67,184,28c40.67,10.67,80,26,118,46C1724.11,723.7,1739.78,734.7,1754.44,747.36z M308.44,923.36
c15.33-8.67,41-27.17,77-55.5s58.33-47.5,67-57.5c-54-24-110-45.33-168-64L308.44,923.36z M1585.44,815.36c2.67-2.67,2.33-5-1-7
l-24-10c-42-18-84.33-34-127-48l-6-2c-2-0.67-4.33-0.33-7,1l24,173c2.67,0,4.67-0.67,6-2c39.33-28,78.33-57.33,117-88
C1573.44,827.03,1579.44,821.36,1585.44,815.36z" fill="#FB7299"/>
</svg>

After

Width:  |  Height:  |  Size: 4.8 KiB

1
assets/img/blackroom.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%"><path d="M139.264 529.152a27.136 27.136 0 0 1-14.592-2.816A32 32 0 0 1 113.152 486.4l130.816-236.032a28.416 28.416 0 1 1 49.152 28.928l-130.56 235.52a25.6 25.6 0 0 1-23.296 14.336" fill="#F99E4A"></path><path d="M380.416 529.152a34.56 34.56 0 0 1-25.6-14.592l-131.328-235.264a30.208 30.208 0 0 1 11.52-37.632 25.6 25.6 0 0 1 37.888 11.52l130.816 235.264a25.6 25.6 0 0 1-11.776 37.888c-2.816 0-8.704 2.816-11.52 2.816m261.376 0a25.6 25.6 0 0 1-14.336-2.816 29.44 29.44 0 0 1-11.776-37.888l130.816-235.264a28.928 28.928 0 0 1 37.632-11.52 29.44 29.44 0 0 1 11.776 37.632L665.6 514.56a25.6 25.6 0 0 1-23.296 14.592" fill="#F99E4A"></path><path d="M883.968 529.152a34.56 34.56 0 0 1-25.6-14.336l-130.56-235.52a27.392 27.392 0 0 1 11.52-37.632 25.6 25.6 0 0 1 37.888 11.52l130.56 235.52a25.6 25.6 0 0 1-11.776 37.632c-2.816 0-8.704 2.816-11.776 2.816" fill="#F99E4A"></path><path d="M801.536 241.664l-130.56-51.2A129.536 129.536 0 0 0 640 183.552H380.416a153.6 153.6 0 0 0-32 5.632L217.6 241.664A21.248 21.248 0 0 0 226.304 281.6h569.6a21.248 21.248 0 0 0 5.632-40.704M458.752 281.6v520.704a51.2 51.2 0 0 0 104.704 0V281.6z" fill="#FFD043"></path><path d="M561.152 183.296A51.2 51.2 0 0 0 512 139.776a52.992 52.992 0 0 0-51.2 46.336h102.4z" fill="#FFD043"></path><path d="M755.2 877.824H267.008A41.472 41.472 0 0 1 230.4 816.896l55.04-122.112a44.8 44.8 0 0 1 37.888-25.6h373.76a37.12 37.12 0 0 1 37.632 25.6L790.016 819.2a37.888 37.888 0 0 1-34.816 58.112" fill="#F99E4A"></path><path d="M900.352 494.336a9.216 9.216 0 0 1 8.704 8.704 148.48 148.48 0 0 1-296.192 0 7.68 7.68 0 0 1 8.704-8.704z m-502.528 0a9.216 9.216 0 0 1 8.704 8.704 151.808 151.808 0 0 1-148.224 142.336 150.016 150.016 0 0 1-148.224-142.336 7.68 7.68 0 0 1 8.704-8.704z" fill="#FFD043"></path></svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

6
assets/img/channel.svg Normal file
View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
<path fill="#23c9ed" d="M837,192c1.3-8,10-14,18-10c46.7,24,75,70.7,75,124v299c-1.3,78.7-60.3,137.7-139,139H352
c-53.3,0-100-28-124-76c-4-6.7,2-15.7,10-17h506c53.3-1.3,91.7-39.7,93-93V192z M93,0h605c50.7,0,91.7,41,93,93v419
c-1.3,50.7-42.3,91.7-93,93H93c-52-1.3-93-42.3-93-93V93C0,41,41,0,93,0z M508,321c12-9.3,12-28.7,0-38L339,165
c-16-10.7-35.7,0.3-37,19v236c1.3,18.7,21,29.7,37,19L508,321z"/>
</svg>

After

Width:  |  Height:  |  Size: 470 B

7
assets/img/class.svg Normal file
View File

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
<path fill="#0BA395" d="M107.7,3.2C45,16.5,1,68.8-0.3,134.2v582c1.3,65.3,45.3,117.7,108,131V3.2z M625.7,0.2h-452v850h452
c76-2.7,132.7-58,134-134v-582C758.4,58.2,701.7,2.8,625.7,0.2z M385.7,117.2c0-18.7,14.3-33,33-33h213c18.7,0,31.7,14.3,33,33v237
c-0.7,13.3-6.7,23.3-18,30c-10.7,4-23.3,4.7-34-2l-92-63l-82,62c-22.7,14.7-51.7-0.3-53-27V117.2z M670.7,704.2
c0,18.7-14.3,33-33,33h-354c-42.1,0-41.2-63.1,0-66h354C656.4,672.5,670.7,685.5,670.7,704.2z M670.7,555.2c0,18.7-14.3,33-33,33
h-354c-42.1,0-41.2-63.1,0-66h354C656.4,523.5,670.7,536.5,670.7,555.2z"/>
</svg>

After

Width:  |  Height:  |  Size: 630 B

7
assets/img/coin.svg Normal file
View File

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
<path d="M472,244h119c47.06,0,47.06-65,0-65H281c-45.49,0-45.49,65,0,65h125v60c-112,8-192,93-196,205v44
c3.12,40.52,62.97,42.37,66,0v-44c1.33-74.67,55.33-133.33,130-140v305c2.98,41.69,63.02,41.69,66,0V369
c74.67,6.67,128.67,65.33,130,140v44c0,41.73,65,41.73,65,0v-44c-2.67-112-82.67-197-196-205v-60H472z M439,878
c-124-3.33-227.33-46.33-310-129S3.33,563,0,439c3.33-124,46.33-227.33,129-310S315,3.33,439,0c124,3.33,227.33,46.33,310,129
s125.67,186,129,310c-3.33,124-46.33,227.33-129,310S563,874.67,439,878z" fill="#FB7299"/>
</svg>

After

Width:  |  Height:  |  Size: 599 B

9
assets/img/collect.svg Normal file
View File

@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
<path fill="#F3A034" d="M646.6,837.1c-50.8,0-119.6-23.4-204.4-69.5l-0.2-0.1l-0.2,0.1c-84.7,45.8-153.4,69.1-204.2,69.1
c-36,0-63.8-11.7-82.8-34.6c-17.8-21.5-28.2-53.6-31.1-95.4c-2.9-41.8,1.7-94.5,13.8-156.5l0.1-0.3l-0.2-0.2
c-53.4-49.2-91.6-94.1-113.6-133.2c-21.9-39.1-28.3-73.6-19-102.7c9.4-29.2,35-53.7,76.1-72.8c41.2-19.1,99.1-33.4,172.1-42.4
l0.3,0l0.1-0.2c31.3-65.6,63.1-115.6,94.4-148.4C379,17.1,410.7,0.5,441.9,0.5c31.2,0,62.9,16.6,94.1,49.3
c31.3,32.8,63.1,82.7,94.4,148.4l0.1,0.2l0.3,0c73.2,9,131.2,23.3,172.5,42.4c41.2,19.1,66.9,43.6,76.2,72.9
c9.3,29,2.9,63.6-19.1,102.6c-22.1,39.2-60.4,84-113.9,133.2l-0.2,0.2l0.1,0.3c12,62.2,16.7,115,13.8,156.9
c-2.9,41.8-13.4,74-31.2,95.5C710.1,825.4,682.4,837.1,646.6,837.1z"/>
</svg>

After

Width:  |  Height:  |  Size: 810 B

7
assets/img/comment.svg Normal file
View File

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 960 823">
<path fill="#1497C7" d="M892,329c-2-74-28.8-135.8-80.5-185.5C759.8,93.8,695,68,617,66H343c-78,2-142.8,27.8-194.5,77.5
S70.3,255,69,329c1.3,74.7,27.8,136.8,79.5,186.5S265,591,343,593h79l32,107l117-107h46c78-2,142.8-27.8,194.5-77.5
C863.2,465.8,890,403.7,892,329z M343,0h274c96.7,2.7,177.3,35,242,97s98.3,139.3,101,232c-2.7,93.3-36.3,171-101,233
s-145.3,94.3-242,97h-19L419,823l-49-164h-27c-96.7-2.7-177.3-35-242-97S2.7,422.3,0,329c2.7-92.7,36.3-170,101-232S246.3,2.7,343,0
z"/>
</svg>

After

Width:  |  Height:  |  Size: 550 B

9
assets/img/delete.svg Normal file
View File

@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 844 844">
<path fill="#A0A0A0" d="M269,697V286c0-12,9.67-22,23-22c13.33,0,30,10,30,22v411c0,13.33-16.67,23-30,23
C278.67,720,269,710.33,269,697z M391,697V286c0-27.72,50.75-29.26,54,0v411c-1.33,13.33-16.67,23-30,23
C401.67,720,392.33,710.33,391,697z M522,697V286c0-12,9.67-22,23-22s30,10,30,22v411c0,13.33-16.67,23-30,23S522,710.33,522,697z
M644,759l40-565H164l36,549c0,20,7.33,44.33,46,47h375C634.33,790,641.33,781.67,644,759z M622,844H230
c-54.67-2.67-82.67-39.33-84-70l-36-580H23c-12,0-23-10.67-23-24c0-13.33,9.67-30,23-30h215V55c1.33-38.67,30.33-55,61-55h246
c13.33,0,27.33,1.33,46,24c14.67,17.33,15,27.33,15,38v78h215c13.33,0,23,16.67,23,30c0,13.33-11,24-23,24h-86l-39,597
C694.67,807,672.67,841.33,622,844z M530,55H318c-18.67,0-27.33,11.67-26,29v56h260V84C552,65.33,539.33,55,530,55z"/>
</svg>

After

Width:  |  Height:  |  Size: 858 B

7
assets/img/download.svg Normal file
View File

@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
<path fill="#1497C7" d="M512,0C366.7,3.3,245.8,53.2,149.5,149.5S3.3,366.7,0,512c3.3,145.3,53.2,266.2,149.5,362.5
S366.7,1020.7,512,1024c145.3-3.3,266.2-53.2,362.5-149.5S1020.7,657.3,1024,512c-3.3-145.3-53.2-266.2-149.5-362.5S657.3,3.3,512,0
z M326,463c4-4,8.7-6,14-6h81V311c0-10.7,7.3-18,18-18h146c10.7,0,18,7.3,18,18v146h81c17.3,1.3,23.7,20,13,32L524,647
c-6.7,6.7-17.3,6.7-24,0L327,489C320.3,482.3,319.3,471,326,463z M713,731c0,10.7-8.7,19-18,19H329c-9.3,0-18-8.3-18-19v-36
c0-10.7,7.3-18,18-18h366c10.7,0,18,7.3,18,18V731z"/>
</svg>

After

Width:  |  Height:  |  Size: 605 B

6
assets/img/fav.svg Normal file
View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
<path d="M661.53,260c-42.67-6.67-77.67-33.33-95-72l-72-151c-25.33-49.33-86.67-49.33-116,0l-68,151
c-20,38.67-53.67,65.33-95,72l-162,25c-52,10.67-71,65.67-35,107l122,126c29.33,28,40.33,68.67,35,110l-28,175
c-6.67,56,43.33,90,94,66l137-75c38.67-22.67,84.33-22.67,123,0l138,75c49.33,24,96.67-10,94-66l-32-175c-5.33-41.33,5.67-82,35-110
l122-126c36-41.33,17-96.33-35-107L661.53,260z" fill="#FB7299"/>
</svg>

After

Width:  |  Height:  |  Size: 472 B

23
assets/img/follow.svg Normal file
View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 24.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 244.04 55.01" enable-background="new 0 0 244.04 55.01" xml:space="preserve">
<path fill="#19AAD5" d="M5.39,55.01h233.26c2.98,0,5.39-2.41,5.39-5.39V5.39c0-2.98-2.41-5.39-5.39-5.39L5.39,0
C2.41,0,0,2.41,0,5.39l0,44.22C0,52.6,2.41,55.01,5.39,55.01z"/>
<path fill="#FFFFFF" d="M79.26,24.77V8.37c0.08-1.52,1.22-2.68,2.73-2.68s2.66,1.16,2.73,2.68v16.4h16.4
c1.52,0.08,2.68,1.22,2.68,2.73c0,1.52-1.16,2.66-2.68,2.73h-16.4v16.4c-0.08,1.52-1.22,2.68-2.73,2.68s-2.66-1.16-2.73-2.68v-16.4
h-16.4c-1.52-0.08-2.68-1.22-2.68-2.73c0-1.52,1.16-2.66,2.68-2.73H79.26z"/>
<g>
<path fill="#FFFFFF" d="M105.14,44.25c9.46-3.33,15.11-8.12,16.93-14.37h-16.13V26.9h16.71c0.05-0.56,0.08-3.05,0.08-7.48h-14.45
v-2.98h9.5c-2.27-2.47-4.21-4.45-5.82-5.95l2.3-2.04c2.27,2.01,4.34,3.93,6.22,5.76l-2.53,2.23h9.44c2.05-2.86,3.85-5.53,5.4-8.03
l3.29,1.8c-1.82,2.3-3.5,4.37-5.03,6.23h10.02v2.98h-14.97c0,3.84-0.02,6.33-0.06,7.48h17.36v2.98h-16.81
c3.1,6.57,8.94,11.07,17.52,13.51c-1.08,1.1-2.06,2.15-2.93,3.17c-8.13-3.13-13.65-7.84-16.57-14.13
c-2.15,6.11-7.87,10.99-17.16,14.64C106.75,46.18,105.99,45.24,105.14,44.25z"/>
<path fill="#FFFFFF" d="M147.35,19.11c1.9,1.31,4.24,3.08,7.01,5.33c-0.98,1.1-1.76,1.94-2.34,2.54c-2.77-2.51-4.99-4.39-6.65-5.64
L147.35,19.11z M150.92,30.39c1.08,0.47,2.13,0.9,3.13,1.29c-1.45,4.59-2.97,9.61-4.55,15.04l-3.41-1.17
C147.75,41.08,149.36,36.03,150.92,30.39z M148.86,8.97c2.56,1.91,4.84,3.81,6.85,5.72c-0.9,0.89-1.69,1.68-2.38,2.39
c-1.42-1.49-3.59-3.47-6.49-5.95L148.86,8.97z M155.15,41.67h13.3V30.55h-10.29v-2.98h10.29v-9.48h-11.4v-2.98h12.63
c-1.24-1.94-2.51-3.72-3.8-5.33l2.61-1.64c1.77,2.04,3.17,3.84,4.2,5.4l-2.47,1.57h13.29v2.98h-11.72v9.48h10.29v2.98h-10.29v11.12
h12.83v2.98h-29.46V41.67z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
assets/img/history.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

6
assets/img/home.svg Normal file
View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
<path fill="#29B28A" d="M632.4,855h35c60.4,0,112-51,112-112V518c1.3-32,24-54.7,56-56h4
c21.3,0,37.3-13,44-33c4-17.3-1-33.7-13-47l-349-349c-46.7-44-112.3-44-159,0l-349,349c-14.7,14.7-17.3,35.3-8,54
c9.3,14.7,23.7,23,41,23h3c32,1.3,54.7,25.3,56,56v225c1.3,64,48,110.3,112,113h35c12-1.3,21.7-9,23-21c12-86.7,79-147.7,167-149
c88,1.3,156,62.3,168,149C610.4,845.3,620.4,855,632.4,855z"/>
</svg>

After

Width:  |  Height:  |  Size: 457 B

5
assets/img/like.svg Normal file
View File

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
<path d="M250,767.13v-551h4l154-189c33.33-33.33,86-36.67,122-6c18.67,18.67,30.67,43,28,71l-6,124h235
c29.33,0,56.33,13,75,37c16,22.67,19.67,52.67,13,78l-100,328c-17.33,62.67-68.33,104-135,108H250z M193,767.13h-80
c-61.82,4.12-110.87-48.32-113-108v-331c0-41.33,21-77.33,57-96c18.67-9.33,37.33-13.33,56-16h80V767.13z" fill="#FB7299"/>
</svg>

After

Width:  |  Height:  |  Size: 407 B

1
assets/img/live.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%"><path d="M392.448 275.911111a92.416 92.416 0 1 1-184.832 0 92.416 92.416 0 0 1 184.832 0" fill="#23ADE5"></path><path d="M826.624 464.583111l-63.744 36.864v-48.64a72.206222 72.206222 0 0 0-71.68-71.936H190.72a72.192 72.192 0 0 0-71.936 71.936V748.231111a71.936 71.936 0 0 0 71.936 71.936H691.2a71.936 71.936 0 0 0 71.936-71.936v-23.808l63.488 37.888a51.2 51.2 0 0 0 76.8-44.544V508.871111a51.2 51.2 0 0 0-76.8-44.288M572.928 369.351111c79.459556 0.142222 143.985778-64.156444 144.128-143.616 0.142222-79.459556-64.156444-143.985778-143.616-144.128-79.260444-0.142222-143.701333 63.857778-144.128 143.104-0.426667 79.459556 63.644444 144.213333 143.104 144.64h0.512" fill="#48CFE5"></path><path d="M425.216 512.967111l124.16 71.936a25.6 25.6 0 0 1 0 42.496l-124.16 71.68a25.6 25.6 0 0 1-37.12-21.248V534.471111a25.6 25.6 0 0 1 37.12-21.504" fill="#FDDE80"></path></svg>

After

Width:  |  Height:  |  Size: 959 B

BIN
assets/img/loadTV.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

BIN
assets/img/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 KiB

BIN
assets/img/logo2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

1
assets/img/musicplus.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%"><path d="M128 256m25.6 0l716.8 0q25.6 0 25.6 25.6l0 512q0 25.6-25.6 25.6l-716.8 0q-25.6 0-25.6-25.6l0-512q0-25.6 25.6-25.6Z" fill="#3DA9D3"></path><path d="M153.6 256h153.6v563.2H153.6a25.6 25.6 0 0 1-25.6-25.6V281.6a25.6 25.6 0 0 1 25.6-25.6zM870.4 256h-153.6v563.2h153.6a25.6 25.6 0 0 0 25.6-25.6V281.6a25.6 25.6 0 0 0-25.6-25.6z" fill="#7DD3E0"></path><path d="M768 320m15.36 0l46.08 0q15.36 0 15.36 15.36l0 20.48q0 15.36-15.36 15.36l-46.08 0q-15.36 0-15.36-15.36l0-20.48q0-15.36 15.36-15.36Z" fill="#3DA9D3"></path><path d="M768 448m15.36 0l46.08 0q15.36 0 15.36 15.36l0 20.48q0 15.36-15.36 15.36l-46.08 0q-15.36 0-15.36-15.36l0-20.48q0-15.36 15.36-15.36Z" fill="#3DA9D3"></path><path d="M768 576m15.36 0l46.08 0q15.36 0 15.36 15.36l0 20.48q0 15.36-15.36 15.36l-46.08 0q-15.36 0-15.36-15.36l0-20.48q0-15.36 15.36-15.36Z" fill="#3DA9D3"></path><path d="M768 704m15.36 0l46.08 0q15.36 0 15.36 15.36l0 20.48q0 15.36-15.36 15.36l-46.08 0q-15.36 0-15.36-15.36l0-20.48q0-15.36 15.36-15.36Z" fill="#3DA9D3"></path><path d="M576 180.736c8.7808-2.6112 15.8976-1.92 21.3504 2.0736 5.4784 3.9936 11.008 9.8304 16.64 17.4592 5.6064 7.6544 12.544 16.256 20.7616 25.856 8.2432 9.5744 19.456 18.5088 33.6896 26.7776 12.2368 7.68 22.9632 12.9536 32.2048 15.7696l25.9584 7.8592c8.2176 2.432 16.128 5.5296 23.6544 9.2672 0 0 17.7408 9.984 25.5232 20.48 8.1152 10.9056 14.8736 19.6608 16.6144 30.976 1.7152 11.3408 1.6128 21.9136-0.4608 31.6928a72.7296 72.7296 0 0 1-9.5744 24.576c-4.2752 6.5792-7.8592 9.9328-10.752 9.9328-2.8672 0.0256-5.4016-1.6128-7.6032-5.0432-2.2272-3.3792-3.84-9.984-4.864-19.7632-1.6896-15.872-6.656-27.0336-14.976-33.4592-8.32-6.4256-21.3504-9.984-39.1424-10.7264a96.0512 96.0512 0 0 1-48.9216-15.616c-12.3648-8.0384-24.064-16.9984-34.9696-26.8032-8.8832-7.3728-15.7952-9.5488-20.8896-6.2976-4.992 3.2256-7.5776 8.1152-7.7312 14.7456l-0.5632 26.752-6.7072 273.792-0.7936 35.4048c0.1536 9.856-1.664 21.1968-5.4272 33.9968-3.7888 12.8-10.6752 25.2928-20.6592 37.4528-9.9328 12.16-23.0912 23.2192-39.4752 33.2288s-36.5824 17.3568-60.5952 22.0672c-24.448 4.7616-46.4128 3.584-65.8944-3.5072-19.456-7.0912-34.3808-17.4336-44.7744-31.0272-10.24-12.928-15.4368-29.5936-14.7712-47.5136 0.6912-18.048 8.8576-36.0448 24.4736-53.9648 15.616-17.92 32.4352-31.2832 50.432-40.1152a198.8096 198.8096 0 0 1 51.8144-17.7152 178.8416 178.8416 0 0 1 44.3136-3.0208c13.0048 1.0496 22.5792 2.3808 28.7488 3.9424 0 0 6.4512-280.1664 8.2944-341.6064 0.2304-12.1088 3.584-22.3232 9.9328-30.976 6.4-8.5504 14.7712-14.208 25.1392-16.9472z m160.9216 288.1792a12.8 12.8 0 0 1 0.3584 2.9696v40.96l41.728-6.912a12.8 12.8 0 0 1 14.8992 12.5952v15.0016a12.8 12.8 0 0 1-10.7008 12.6464l-45.952 7.6288 0.0256 45.3632a12.8 12.8 0 0 1-9.8304 12.4416l-15.36 3.6608a12.8 12.8 0 0 1-15.7696-12.4416V560.64l-41.1136 6.8608a12.8 12.8 0 0 1-14.8992-12.6208v-15.0016a12.8 12.8 0 0 1 10.7008-12.6464l45.312-7.552v-44.1344a12.8 12.8 0 0 1 9.8304-12.4672l15.36-3.6352a12.8 12.8 0 0 1 15.4112 9.472z" fill="#FFD469"></path><path d="M179.2 320m15.36 0l46.08 0q15.36 0 15.36 15.36l0 20.48q0 15.36-15.36 15.36l-46.08 0q-15.36 0-15.36-15.36l0-20.48q0-15.36 15.36-15.36Z" fill="#3DA9D3"></path><path d="M179.2 448m15.36 0l46.08 0q15.36 0 15.36 15.36l0 20.48q0 15.36-15.36 15.36l-46.08 0q-15.36 0-15.36-15.36l0-20.48q0-15.36 15.36-15.36Z" fill="#3DA9D3"></path><path d="M179.2 576m15.36 0l46.08 0q15.36 0 15.36 15.36l0 20.48q0 15.36-15.36 15.36l-46.08 0q-15.36 0-15.36-15.36l0-20.48q0-15.36 15.36-15.36Z" fill="#3DA9D3"></path><path d="M179.2 704m15.36 0l46.08 0q15.36 0 15.36 15.36l0 20.48q0 15.36-15.36 15.36l-46.08 0q-15.36 0-15.36-15.36l0-20.48q0-15.36 15.36-15.36Z" fill="#3DA9D3"></path></svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

BIN
assets/img/ploading.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

4
assets/img/ranking.svg Normal file
View File

@ -0,0 +1,4 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 770">
<path d="M352,0h192c36,1.33,62.67,28,64,64v704H288V64C289.33,28,316,1.33,352,0z M64,256h160v512H0V320
C1.33,284,28,257.33,64,256z M672,320h160c36,1.33,62.67,28,64,64v384H672V320z" fill="#00a1d6"/>
</svg>

After

Width:  |  Height:  |  Size: 268 B

1
assets/img/read.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%"><path d="M778.496 142.08h-537.6a56.832 56.832 0 0 0-60.16 54.016v630.528a56.832 56.832 0 0 0 59.136 54.016h537.6a56.832 56.832 0 0 0 59.136-54.016V196.096a56.832 56.832 0 0 0-59.136-54.016z" fill="#54E2E2"></path><path d="M298.496 679.168h421.376a25.6 25.6 0 0 0 0-52.736H298.496a25.6 25.6 0 1 0 0 52.736zM719.872 732.928H298.496a25.6 25.6 0 1 0 0 52.736h421.376a25.6 25.6 0 0 0 0-52.736z" fill="#23ADE5"></path><path d="M272.128 237.056m80.128 0l314.112 0q80.128 0 80.128 80.128l0 154.368q0 80.128-80.128 80.128l-314.112 0q-80.128 0-80.128-80.128l0-154.368q0-80.128 80.128-80.128Z" fill="#23ADE5"></path><path d="M404.992 361.472m-49.408 0a49.408 49.408 0 1 0 98.816 0 49.408 49.408 0 1 0-98.816 0Z" fill="#2EC3E5"></path><path d="M375.552 551.936l120.832-144.384a44.544 44.544 0 0 1 68.352 0l120.832 144.384z" fill="#2EC3E5"></path></svg>

After

Width:  |  Height:  |  Size: 931 B

10
assets/img/relation.svg Normal file
View File

@ -0,0 +1,10 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 953.46 738.35">
<path fill="#9FA0A0" d="M675.64,504c106.67-2.67,186.33-78.33,189-181c-1.33-77.33-49-143.33-125-170
c-38.96-14.98-18.21-73.06,21-61c101.33,37.33,166.67,124.33,168,231c0,88-45.33,162-116,206c49.33,18.67,93,46,131,82
c29.48,29.48-13.97,73.03-44,46c-61.33-57.33-140-89-224-89C633.92,568,633.92,504,675.64,504z M193.64,572
c-97.33-53.33-159.67-150-161-266c2-86.67,32.83-158.83,92.5-216.5S259.64,2,349.64,0c89.33,2,163.83,31.83,223.5,89.5
c59.67,57.67,90.83,129.83,93.5,216.5c-1.33,116-63.33,212.67-162,266c69.33,23.33,130.67,60,184,110c27.73,30.81-14.42,74.52-45,47
c-80-76-183.33-118-294-118s-215,42-295,118c-29.5,29.5-75.63-17.63-44-47C63.31,632,124.31,595.33,193.64,572z M349.64,548
c72-2,131.67-25.83,179-71.5c47.33-45.67,72-102.5,74-170.5c-2-68.67-26.67-125.67-74-171c-47.33-45.33-107-69-179-71
c-72,2-131.83,25.67-179.5,71s-72.17,102.33-73.5,171c1.33,68,25.83,124.83,73.5,170.5S277.64,546,349.64,548z"/>
</svg>

After

Width:  |  Height:  |  Size: 987 B

5
assets/img/share.svg Normal file
View File

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
<path d="M388.29,243V55c1.33-30.67,23.33-55,54-55c13.33,0,25,4.33,35,13l378,322c29.33,25.33,29.33,71.33,0,98
l-378,322c-22.67,18.67-57.33,15.67-76-7c-8.67-10.67-13-22.67-13-36V539c-89.33,0-160.67,17.67-214,53s-104.33,87.67-153,157
c-5.33,6.67-19.67,9.33-21-12c-3.33-138,21.67-253.83,75-347.5S232.96,247,388.29,243z" fill="#FB7299"/>
</svg>

After

Width:  |  Height:  |  Size: 407 B

BIN
assets/img/sponsorQR.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 690 KiB

5
assets/img/sub.svg Normal file
View File

@ -0,0 +1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
<path fill="#EB5D47" d="M490,783.7c-58-1.3-150.3-48.3-277-141S15.3,417.4,0,244.7C2.7,127.4,77.7,32.4,191,5.7
c114.7-24,223,28.7,275,134c52-105.3,160.3-158,275-134c113.3,26.7,188.7,121.7,190,239c-12.7,168-75.3,299.3-188,394
S546,781.7,490,783.7z"/>
</svg>

After

Width:  |  Height:  |  Size: 321 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%"><path d="M215.04 153.6h593.92c33.93024 0 61.44 27.50976 61.44 61.44v643.3792a30.72 30.72 0 0 1-45.96224 26.6752L512 706.56l-312.43776 178.5344A30.72 30.72 0 0 1 153.6 858.4192V215.04c0-33.93024 27.50976-61.44 61.44-61.44z" fill="#9696ED"></path><path d="M512 555.392l-90.05056 46.60736a19.27168 19.27168 0 0 1-27.84256-20.41856l17.12128-98.2784-72.2432-69.32992a19.27168 19.27168 0 0 1 10.61376-32.98304l100.1216-14.32064 45.05088-89.8816a19.27168 19.27168 0 0 1 34.4576 0l45.05088 89.8816 100.11648 14.32064a19.27168 19.27168 0 0 1 10.61888 32.98304l-72.2432 69.32992 17.12128 98.2784a19.27168 19.27168 0 0 1-27.84768 20.41856L512 555.392z" fill="#FFD778"></path></svg>

After

Width:  |  Height:  |  Size: 761 B

1
assets/img/topic.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%"><path d="M880.64 520.448C880.64 642.56 768 742.4 627.712 742.4H409.6l-165.632 74.496-92.928-258.56a146.688 146.688 0 0 1-3.072-37.888v-37.888c0-122.112 110.592-226.56 250.112-226.56h232.704c136.448 0 249.856 104.448 249.856 226.56v37.888zM642.304 209.408h-256a280.064 280.064 0 0 0-279.04 273.152v43.776a250.88 250.88 0 0 0 3.072 46.336L215.04 878.08l183.04-90.112h244.224c153.6 0 279.04-116.48 279.04-261.632v-43.776a279.808 279.808 0 0 0-279.04-273.152z m58.112 351.744a51.2 51.2 0 0 1-51.2-51.2 55.552 55.552 0 0 1 58.112-52.48 54.528 54.528 0 0 1 51.2 55.296 57.088 57.088 0 0 1-58.112 49.408m-179.2 0a51.2 51.2 0 0 1-51.2-51.2 55.552 55.552 0 0 1 58.112-52.48 54.528 54.528 0 0 1 51.2 55.296A59.392 59.392 0 0 1 521.216 563.2m-179.2 0a51.2 51.2 0 0 1-51.2-51.2 55.552 55.552 0 0 1 58.112-52.48 54.528 54.528 0 0 1 51.2 55.296 59.648 59.648 0 0 1-58.112 49.408m279.04-270.336h-208.384c-122.112 0-224 87.296-224 188.928V512a111.36 111.36 0 0 0 3.072 31.744L267.264 768l110.592-58.112H645.12A194.048 194.048 0 0 0 842.752 512v-29.44c-2.816-104.448-102.4-191.744-223.744-191.744" fill="#8FC31F"></path></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
assets/img/toview.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 724 B

1
assets/img/tuiguang.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%"><path d="M324.5568 660.31616v56.832c0 30.19264 24.4736 54.67136 54.67136 54.67136 30.19264 0 54.67136-24.4736 54.67136-54.67136v-14.04928l-109.34272-42.78272z m186.4704 72.96512C503.0656 799.0016 447.09376 849.92 379.22816 849.92c-73.32864 0-132.77184-59.4432-132.77184-132.77184v-87.3984l-117.15584-45.83936v0.06656a39.05024 39.05024 0 1 1-78.10048 0V411.71968a39.05024 39.05024 0 0 1 78.10048 0v0.06656l499.85024-195.59424v-23.54176a39.05024 39.05024 0 1 1 78.1056 0v610.39616a39.05024 39.05024 0 1 1-78.1056 0v-23.54176l-118.1184-46.22336z" fill="#FFD778"></path><path d="M808.78592 458.73152h124.96384A39.05024 39.05024 0 0 1 972.8 497.78176v0.13312a39.05024 39.05024 0 0 1-39.05024 39.05024h-124.96384a39.05024 39.05024 0 0 1-39.05024-39.05024v-0.13312a39.05024 39.05024 0 0 1 39.05024-39.05024z m-3.31264 130.43712l108.25728 62.61248a39.05024 39.05024 0 0 1 14.2848 53.2992l-0.05632 0.1024a39.04512 39.04512 0 0 1-53.376 14.30016l-108.25728-62.6176a39.05024 39.05024 0 0 1-14.2848-53.2992l0.05632-0.09728a39.04512 39.04512 0 0 1 53.376-14.30016z m-39.14752-250.3424l108.25728-62.61248a39.04512 39.04512 0 0 1 53.376 14.30528l0.0512 0.09216a39.05024 39.05024 0 0 1-14.2848 53.30432L805.4784 406.528a39.04512 39.04512 0 0 1-53.376-14.30016l-0.0512-0.09728a39.05024 39.05024 0 0 1 14.27968-53.2992z" fill="#FB813A"></path></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

6
assets/img/video_up.svg Normal file
View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024">
<path fill="#17AACC" d="M618,131.5l47-47c41.7-47.6-25-112.2-72-71l-107,106c-3.3,3.3-6,7-8,11H361c-1.3-2.7-3.3-5-6-7l-112-111
c-21.3-17.3-51-17-71,3s-20.3,49.7-3,71l45,44H105c-56.7,0-105,48.3-105,105v417c0,56.7,48.3,105,105,105h57
c-17.9,49.6,19.9,105,73.5,105c55.4,0,90.4-55.3,74.5-105h218c-15.9,49.7,19.1,105,74.5,105c53.6,0,91.4-55.4,73.5-105h57
c56.7,0,105-48.3,105-105v-417c0-57.6-48.3-104-105-104L618,131.5L618,131.5z"/>
</svg>

After

Width:  |  Height:  |  Size: 501 B

14
assets/zone_icon/ad.svg Normal file
View File

@ -0,0 +1,14 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%">
<path
d="M576.768 153.6c32.768-32.512 132.096 13.824 221.952 103.68s136.448 189.184 103.68 221.952a27.648 27.648 0 0 1-6.144 4.608c-37.632 22.784-640 377.6-640 377.6a110.592 110.592 0 0 1-48.384-30.976 140.288 140.288 0 0 1-34.56-49.152s381.184-588.8 399.36-620.8a34.56 34.56 0 0 1 4.096-6.912z"
fill="#9796ED"></path>
<path
d="M172.288 780.032c-4.864 3.328-35.328 19.968-51.2 28.928a18.688 18.688 0 0 0-9.728 19.456 104.192 104.192 0 0 0 31.488 58.368 117.504 117.504 0 0 0 59.392 33.024 19.2 19.2 0 0 0 19.968-8.448c10.752-17.152 32-51.2 33.024-51.2a110.592 110.592 0 0 1-48.384-30.976 140.288 140.288 0 0 1-34.56-49.152z"
fill="#9289F0"></path>
<path
d="M576.768 153.6c32.768-32.512 132.096 13.824 221.952 103.68s136.448 189.184 103.68 221.952a27.648 27.648 0 0 1-6.144 4.608c-37.632 22.784-102.4 60.16-102.4 60.16s-64-4.096-173.312-113.664c-102.4-102.4-112.128-171.008-112.128-171.008s39.936-61.696 62.464-98.816a34.56 34.56 0 0 1 5.888-6.912z"
fill="#F7DF88"></path>
<path
d="M680.45816 374.49224a230.144 83.712 45 1 0 118.386645-118.386645 230.144 83.712 45 1 0-118.386645 118.386645Z"
fill="#8683EA"></path>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -0,0 +1,11 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%">
<path
d="M517.376 465.152a144.924444 144.924444 0 0 1 137.528889 99.214222c1.28 3.925333 2.275556 7.850667 2.901333 11.804445a132.266667 132.266667 0 0 1-14.279111 263.765333h-263.054222a132.266667 132.266667 0 0 1-14.250667-263.793778c0.625778-3.982222 1.592889-7.907556 2.872889-11.776a144.924444 144.924444 0 0 1 137.528889-99.214222h10.752zM420.693333 418.104889c50.261333-3.783111 85.617778-59.164444 79.047111-123.733333-6.599111-64.568889-52.650667-113.891556-102.912-110.108445-50.232889 3.754667-85.617778 59.164444-79.018666 123.733333 6.599111 64.568889 52.650667 113.863111 102.912 110.08zM603.306667 418.104889c50.232889 3.754667 96.284444-45.511111 102.883555-110.108445 6.599111-64.568889-28.785778-119.978667-79.018666-123.733333-50.261333-3.783111-96.312889 45.511111-102.912 110.08-6.599111 64.568889 28.785778 119.978667 79.018666 123.733333zM717.425778 551.139556c39.082667 21.816889 96.910222-4.266667 129.137778-58.225778 32.256-53.959111 26.709333-115.370667-12.373334-137.187556-39.111111-21.816889-96.938667 4.266667-129.166222 58.225778-32.256 53.959111-26.709333 115.370667 12.401778 137.187556zM306.574222 551.139556c39.111111-21.816889 44.657778-83.228444 12.401778-137.187556-32.227556-53.959111-90.055111-80.042667-129.137778-58.225778-39.111111 21.816889-44.657778 83.228444-12.430222 137.187556 32.256 53.959111 90.083556 80.042667 129.166222 58.225778z"
fill="#FB7299"></path>
<path
d="M621.511111 113.777778c76.231111-0.938667 138.467556 74.012444 149.504 173.340444 37.745778-13.312 75.861333-12.913778 107.292445 4.323556 70.712889 38.769778 80.753778 147.968 22.442666 243.911111a272.327111 272.327111 0 0 1-71.111111 78.336c9.159111 22.869333 14.222222 47.843556 14.222222 73.984V711.111111a199.111111 199.111111 0 0 1-199.111111 199.111111h-265.500444a199.111111 199.111111 0 0 1-199.111111-199.111111v-23.438222c0-26.168889 5.063111-51.114667 14.222222-74.012445a272.099556 272.099556 0 0 1-71.111111-78.307555c-58.311111-95.943111-48.270222-205.141333 22.442666-243.911111 31.431111-17.237333 69.546667-17.635556 107.320889-4.352C264.021333 187.790222 326.257778 112.839111 402.488889 113.777778c42.410667 0.540444 81.152 24.462222 109.511111 62.776889 28.359111-38.286222 67.100444-62.236444 109.511111-62.776889z"
fill="#FFD7E7"></path>
<path
d="M512 465.152a141.198222 141.198222 0 0 1 134.741333 98.958222l0.085334 0.256c1.905778 6.087111 3.015111 12.231111 3.356444 18.289778a132.266667 132.266667 0 0 1-9.728 264.163556h-256.910222a132.266667 132.266667 0 0 1-9.671111-264.192l-0.199111 4.579555c0-7.736889 1.194667-15.445333 3.498666-22.840889l0.085334-0.284444A141.198222 141.198222 0 0 1 512 465.180444zM420.693333 418.104889c50.261333-3.783111 85.617778-59.164444 79.047111-123.733333-6.599111-64.568889-52.650667-113.891556-102.912-110.108445-50.232889 3.754667-85.617778 59.164444-79.018666 123.733333 6.599111 64.568889 52.650667 113.863111 102.912 110.08zM603.306667 418.104889c50.232889 3.754667 96.284444-45.511111 102.883555-110.108445 6.599111-64.568889-28.785778-119.978667-79.018666-123.733333-50.261333-3.783111-96.312889 45.511111-102.912 110.08-6.599111 64.568889 28.785778 119.978667 79.018666 123.733333zM717.425778 551.139556c39.082667 21.816889 96.910222-4.266667 129.137778-58.225778 32.256-53.959111 26.709333-115.370667-12.373334-137.187556-39.111111-21.816889-96.938667 4.266667-129.166222 58.225778-32.256 53.959111-26.709333 115.370667 12.401778 137.187556zM306.574222 551.139556c39.111111-21.816889 44.657778-83.228444 12.401778-137.187556-32.227556-53.959111-90.055111-80.042667-129.137778-58.225778-39.111111 21.816889-44.657778 83.228444-12.430222 137.187556 32.256 53.959111 90.083556 80.042667 129.166222 58.225778z"
fill="#FB7299"></path>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@ -0,0 +1,16 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%">
<path
d="M588.8 359.68l-12.032-7.424 150.272-206.592a30.976 30.976 0 0 0-51.2-36.352l-153.6 210.176L281.6 170.24a30.976 30.976 0 1 0-33.024 52.736L486.4 369.92l-22.784 31.488a30.976 30.976 0 1 0 51.2 36.352l25.6-35.072 16.128 9.728A30.976 30.976 0 1 0 588.8 359.68z"
fill="#FB813A"></path>
<path d="M763.648 850.688m-53.248 0a53.248 53.248 0 1 0 106.496 0 53.248 53.248 0 1 0-106.496 0Z" fill="#FB813A">
</path>
<path d="M261.12 797.44a53.248 53.248 0 1 0 53.504 53.248 53.248 53.248 0 0 0-53.504-53.248z" fill="#FB813A"></path>
<path
d="M141.312 314.368m92.928 0l556.288 0q92.928 0 92.928 92.928l0 360.704q0 92.928-92.928 92.928l-556.288 0q-92.928 0-92.928-92.928l0-360.704q0-92.928 92.928-92.928Z"
fill="#FDDE80"></path>
<path d="M520.448 575.232m-128.256 0a128.256 128.256 0 1 0 256.512 0 128.256 128.256 0 1 0-256.512 0Z"
fill="#FFFFFF"></path>
<path
d="M476.928 546.56c0-26.88 19.2-37.632 42.24-25.6l49.664 28.672a25.6 25.6 0 0 1 0 48.64l-49.664 28.672c-23.04 13.568-42.24 2.56-42.24-24.32z"
fill="#FB813A"></path>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

20
assets/zone_icon/car.svg Normal file
View File

@ -0,0 +1,20 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%">
<path
d="M210.688 588.8h25.6a51.2 51.2 0 0 1 51.2 45.568l14.08 128A51.2 51.2 0 0 1 256 819.2H225.024a51.2 51.2 0 0 1-51.2-45.568l-14.08-128A51.2 51.2 0 0 1 204.8 588.8zM788.224 588.8h25.6a51.2 51.2 0 0 1 51.2 51.2 41.984 41.984 0 0 1 0 5.632l-14.08 128a51.2 51.2 0 0 1-51.2 45.568h-25.6a51.2 51.2 0 0 1-51.2-51.2 41.984 41.984 0 0 1 0-5.632l14.08-128a51.2 51.2 0 0 1 51.2-45.568zM906.496 392.96a38.656 38.656 0 0 1-25.6 48.128l-25.6 7.424a38.4 38.4 0 0 1-22.528-73.472l25.6-7.424a38.144 38.144 0 0 1 48.128 25.344zM215.296 422.912a38.4 38.4 0 0 1-47.872 25.6l-25.6-7.424a38.656 38.656 0 0 1-25.6-48.128 38.144 38.144 0 0 1 47.872-25.6l25.6 7.424a38.4 38.4 0 0 1 25.6 48.128z"
fill="#23ADE5"></path>
<path
d="M292.608 201.216A1109.76 1109.76 0 0 1 512 179.2a1165.568 1165.568 0 0 1 224 22.016 51.2 51.2 0 0 1 38.144 32L870.4 486.4v230.4a25.6 25.6 0 0 1-25.6 25.6H179.2a25.6 25.6 0 0 1-25.6-25.6v-230.4l102.4-253.696a51.2 51.2 0 0 1 36.608-31.488z"
fill="#48CFE5"></path>
<path
d="M204.8 512m25.6 0l102.4 0q25.6 0 25.6 25.6l0 25.6q0 25.6-25.6 25.6l-102.4 0q-25.6 0-25.6-25.6l0-25.6q0-25.6 25.6-25.6Z"
fill="#FFFFFF"></path>
<path
d="M665.6 512m25.6 0l102.4 0q25.6 0 25.6 25.6l0 25.6q0 25.6-25.6 25.6l-102.4 0q-25.6 0-25.6-25.6l0-25.6q0-25.6 25.6-25.6Z"
fill="#FFFFFF"></path>
<path
d="M327.68 270.848a1000.96 1000.96 0 0 1 172.032-14.848 1429.248 1429.248 0 0 1 196.864 15.36 25.6 25.6 0 0 1 20.992 18.176l39.68 134.656a25.6 25.6 0 0 1-17.408 31.744 24.064 24.064 0 0 1-9.472 0q-125.184-12.032-230.4-12.032a1894.4 1894.4 0 0 0-204.8 11.264 25.6 25.6 0 0 1-28.16-22.784 25.6 25.6 0 0 1 0-9.984L307.2 288.768a25.6 25.6 0 0 1 20.48-17.92z"
fill="#FDDE80"></path>
<path
d="M614.4 358.4a102.4 102.4 0 0 0-100.864 86.784h51.2a51.2 51.2 0 0 1 99.072 5.12l51.2 4.352A102.4 102.4 0 0 0 614.4 358.4z"
fill="#23ADE5"></path>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,14 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%">
<path
d="M147.2 201.728m79.616 0l571.136 0q79.616 0 79.616 79.616l0 458.24q0 79.616-79.616 79.616l-571.136 0q-79.616 0-79.616-79.616l0-458.24q0-79.616 79.616-79.616Z"
fill="#9796ED"></path>
<path
d="M222.976 269.312h77.056v57.856H222.976zM390.144 269.312h77.056v57.856h-77.056zM557.312 269.312h77.056v57.856h-77.056zM724.48 269.312h77.056v57.856H724.48zM222.976 693.76h77.056v57.856H222.976zM390.144 693.76h77.056v57.856h-77.056zM557.312 693.76h77.056v57.856h-77.056zM147.2 375.296h730.368v270.08H147.2z"
fill="#7B78EA"></path>
<path
d="M521.369822 529.707066m23.351494-23.351495l2.534271-2.53427q23.351494-23.351494 46.702989 0l199.664327 199.664327q23.351494 23.351494 0 46.702989l-2.534271 2.534271q-23.351494 23.351494-46.702988 0l-199.664328-199.664328q-23.351494-23.351494 0-46.702989Z"
fill="#FFD043"></path>
<path
d="M708.352 418.816h-25.6v-24.32a13.568 13.568 0 0 0-13.568-13.568H665.6a13.312 13.312 0 0 0-13.312 13.568v24.32h-25.6a13.568 13.568 0 0 0-13.568 13.568v5.632a13.568 13.568 0 0 0 13.568 13.568h25.6v24.32a13.312 13.312 0 0 0 13.312 13.568h5.632a13.568 13.568 0 0 0 13.568-13.568v-24.32h25.6a13.312 13.312 0 0 0 13.312-13.568v-5.632a13.312 13.312 0 0 0-15.36-13.568zM517.888 418.816h-25.6v-24.32a13.312 13.312 0 0 0-13.312-13.568h-5.632a13.568 13.568 0 0 0-13.568 13.568v24.32H435.2a13.312 13.312 0 0 0-13.312 13.568v5.632a13.312 13.312 0 0 0 13.312 13.568h25.6v24.32a13.568 13.568 0 0 0 13.568 13.568h5.632a13.312 13.312 0 0 0 13.312-13.568v-24.32h25.6a13.312 13.312 0 0 0 13.312-13.568v-5.632a13.312 13.312 0 0 0-14.336-13.568zM493.568 572.16h-18.432v-18.432a10.24 10.24 0 0 0-10.24-10.24H460.8a10.24 10.24 0 0 0-10.24 10.24v18.432h-18.432a10.24 10.24 0 0 0-10.24 10.24v4.352a10.24 10.24 0 0 0 10.24 10.24h18.432V614.4a10.24 10.24 0 0 0 10.24 10.24h4.352a10.24 10.24 0 0 0 10.24-10.24v-18.432h18.432a10.24 10.24 0 0 0 10.24-10.24v-4.352a10.24 10.24 0 0 0-10.496-9.216z"
fill="#FFD778"></path>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,20 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%">
<path
d="M722.204444 843.491556H170.524444a70.144 70.144 0 0 1-69.973333-69.916445V400.896a70.144 70.144 0 0 1 69.973333-69.944889H722.204444a70.144 70.144 0 0 1 69.916445 69.973333v372.622223a70.144 70.144 0 0 1-69.916445 69.944889"
fill="#FDDE80"></path>
<path
d="M710.314667 341.703111c22.613333-7.338667 38.200889-29.098667 36.067555-52.792889a143.616 143.616 0 0 0-6.542222-32.142222c-39.480889-121.628444-229.12-169.045333-423.566222-105.898667C121.799111 214.016-3.783111 363.804444 35.697778 485.461333c3.413333 10.524444 7.992889 20.451556 13.596444 29.809778 12.231111 20.423111 37.603556 28.871111 60.216889 21.532445l600.803556-195.100445z"
fill="#9796ED"></path>
<path
d="M281.031111 123.676444l11.235556 34.616889c4.977778 15.331556 21.617778 23.779556 36.920889 18.801778 15.331556-4.977778 23.808-21.589333 18.830222-36.920889l-11.235556-34.588444a29.383111 29.383111 0 0 0-36.920889-18.801778c-15.36 4.949333-23.808 21.589333-18.830222 36.892444"
fill="#7B78EB"></path>
<path
d="M444.16 714.069333a139.747556 139.747556 0 0 0 138.296889-119.552 17.493333 17.493333 0 0 0-17.123556-20.195555h-242.346666a17.493333 17.493333 0 0 0-17.123556 20.195555 139.776 139.776 0 0 0 138.296889 119.552"
fill="#FFAF66"></path>
<path
d="M704.796444 680.903111L618.951111 640.284444s12.288 55.751111 71.395556 92.672c-0.085333 0.739556-0.284444 1.422222-0.369778 2.190223-12.714667 94.549333 38.200889 179.399111 113.692444 189.553777 75.491556 10.126222 146.972444-58.311111 159.687111-152.860444 12.686222-94.520889-38.200889-179.399111-113.720888-189.525333-60.017778-8.078222-117.418667 33.649778-144.839112 98.588444z"
fill="#9796ED"></path>
<path
d="M856.064 682.012444l-19.797333 99.157334a6.570667 6.570667 0 0 1-6.456889 5.290666h-17.777778a6.599111 6.599111 0 0 1-6.542222-7.537777l14.478222-99.128889a6.542222 6.542222 0 0 1 6.485333-5.660445h23.153778c4.181333 0 7.281778 3.811556 6.456889 7.879111m-22.897778 136.078223l-2.986666 16.298666a6.570667 6.570667 0 0 1-6.456889 5.404445h-20.963556a6.599111 6.599111 0 0 1-6.485333-7.651556l2.645333-16.270222a6.599111 6.599111 0 0 1 6.485333-5.546667h21.276445c4.124444 0 7.253333 3.726222 6.485333 7.765334"
fill="#C5C2FF"></path>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@ -0,0 +1,10 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%">
<path
d="M956.672 513.792a476.416 476.416 0 0 0-890.368 0L512 727.296l-95.232 45.568a117.76 117.76 0 0 0 192.256 0L512 727.04z"
fill="#FC6B8A"></path>
<path d="M512 727.296l208.64-99.84a222.976 222.976 0 0 0-416.768 0z" fill="#FFFFFF"></path>
<path d="M405.4528 751.5392l541.184-258.5856 14.0288 29.312-541.184 258.6112z" fill="#FF5C7A"></path>
<path
d="M666.624 545.792l-18.688-15.36-112.64 135.424 40.192-173.056-23.552-5.632-40.192 172.544-40.448-172.544-23.808 5.632 40.704 173.056-112.896-135.424-18.688 15.36 111.616 134.144-391.68-186.88-13.824 29.184 541.184 258.56 14.08-29.44-87.552-41.728 136.192-163.84z"
fill="#F14767"></path>
</svg>

After

Width:  |  Height:  |  Size: 786 B

View File

@ -0,0 +1,13 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%">
<path
d="M298.496 284.928l17.664-51.2a36.608 36.608 0 0 1 33.28-22.016h325.376a37.12 37.12 0 0 1 34.304 22.016l17.408 51.2h88.576a69.376 69.376 0 0 1 66.56 70.656v377.344a69.12 69.12 0 0 1-67.84 70.144H209.92a69.12 69.12 0 0 1-68.352-70.144V355.584a69.376 69.376 0 0 1 68.352-70.656z"
fill="#FFBA7B"></path>
<path d="M141.568 457.728h740.096v271.36a69.632 69.632 0 0 1-73.728 73.984H210.688a69.12 69.12 0 0 1-69.12-69.376z"
fill="#FB952C"></path>
<path d="M512 358.4a197.376 197.376 0 1 1-197.376 197.376A197.632 197.632 0 0 1 512 358.4z" fill="#FB952C"></path>
<path d="M512 409.6a148.224 148.224 0 1 1-147.968 147.968A147.968 147.968 0 0 1 512 409.6z" fill="#FFFFFF"></path>
<path d="M512 457.728a98.816 98.816 0 1 1-98.56 98.56A98.56 98.56 0 0 1 512 457.728z" fill="#FB952C"></path>
<path
d="M733.696 358.4h73.984a25.6 25.6 0 0 1 25.6 25.6 25.6 25.6 0 0 1-25.6 25.6h-73.984a25.6 25.6 0 0 1-25.6-25.6 25.6 25.6 0 0 1 25.6-25.6z"
fill="#FFFFFF"></path>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,31 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%">
<path
d="M404.9 386.765c-70.8975-2.565-143.3475 12.06-196.65 38.1825-48.8475 23.9625-117.63 89.46-121.9275 135.5625h735.3225c-3.2175 0-12.015-9.4275-14.7375-11.52-5.0175-3.825-9.7425-7.8075-14.76-11.5425-11.9025-8.91-24.66-16.8975-37.1475-24.975a1040.175 1040.175 0 0 0-77.0625-45.585c-52.47-27.945-107.865-50.805-165.69-65.0025a533.88 533.88 0 0 0-107.3475-15.12"
fill="#47CFE5"></path>
<path
d="M744.605 489.1625c-12.7125 32.31-136.71 36.765-181.395 36.765H137.8025c-15.2325 0-29.7675 5.1975-39.7575 14.265-9.9 8.9775-14.1075 20.7675-11.7 32.355 0 0.1125 0 0.27 0.09 0.3375 9.2925 43.6725 35.73 83.34 76.365 114.6825 1.62 1.26 3.2625 2.52 4.9275 3.735 106.74 78.4575 292.5225 81.1575 423.45 43.875 41.445-11.79 80.865-28.17 115.1775-49.635 38.9925-24.39 78.795-57.3075 102.3075-91.7325 3.465-5.0625 41.22-61.1775 41.9625-60.885l-106.02-43.7625z"
fill="#47CFE5"></path>
<path
d="M918.0575 505.3175l-29.88-17.0775a75.0825 75.0825 0 0 0-70.11-2.1375 75.375 75.375 0 0 0-37.4175-59.355l-29.925-17.0775a11.4525 11.4525 0 0 0-15.66 4.275l-7.83 13.7025a59.0625 59.0625 0 0 0 21.96 80.5725l15.795 9.045a0.045 0.045 0 0 1-0.045 0.045l51.48 29.43 0.045-0.045 17.46 9.99a59.085 59.085 0 0 0 80.5725-21.9375l7.83-13.725a11.5425 11.5425 0 0 0-4.275-15.705"
fill="#2BBAE4"></path>
<path
d="M654.515 712.4975C351.3275 720.8675 266.3 564.425 266.3 564.425H85.7825a31.995 31.995 0 0 0 0.63 8.46c9.2925 43.6725 35.73 83.34 76.365 114.6825 1.62 1.2825 3.2625 2.52 4.9275 3.735 106.7175 78.4575 292.5 81.18 423.4275 43.875a509.6925 509.6925 0 0 0 63.3825-22.68"
fill="#E5E6E6"></path>
<path
d="M654.515 712.4975c-65.16 1.8-120.15-4.41-166.5675-14.2425-49.005-10.3725-26.1675 59.31-3.2175 56.79 37.485-4.0725 73.665-10.5975 106.4025-19.9125a502.3575 502.3575 0 0 0 63.3825-22.635"
fill="#E4E5E4"></path>
<path
d="M407.1275 674.9225c21.5775 69.84 69.705 117.6525 116.775 113.6475 3.735-0.3375 6.2325-4.0725 5.5125-7.74l-24.435-125.6175a5.715 5.715 0 0 0-6.6825-4.5l-86.715 16.8975a5.7825 5.7825 0 0 0-4.455 7.3125"
fill="#47CFE5"></path>
<path d="M441.2375 614.7125a29.295 29.295 0 1 1-58.6125 0.0225 29.295 29.295 0 0 1 58.6125-0.0225" fill="#0099BC">
</path>
<path
d="M252.5975 310.4675a64.2825 64.2825 0 0 1 64.305-64.1025c18.81 0 35.73 8.1225 47.52 21.1275a64.17 64.17 0 0 1 111.7125 42.975 16.56 16.56 0 0 1-16.5825 16.5825 16.56 16.56 0 0 1-16.605-16.5825 31.05 31.05 0 0 0-61.9875-2.16h-0.18l0.1125 77.4675a16.5825 16.5825 0 1 1-33.1875 0v-75.3975c0-17.0325-13.9275-30.9375-30.96-30.9375a31.05 31.05 0 0 0-31.0275 31.0275 16.56 16.56 0 1 1-33.12 0"
fill="#47CFE5"></path>
<path
d="M364.3325 408.0275a22.2525 22.2525 0 0 1-22.2075-22.23V310.4a25.3575 25.3575 0 1 0-50.715 0.09 22.23 22.23 0 0 1-44.415 0c0-38.4525 31.365-69.75 69.9075-69.75a69.75 69.75 0 0 1 47.52 18.765 70.2 70.2 0 0 1 47.61-18.765c38.4525 0 69.75 31.2975 69.75 69.75a22.23 22.23 0 0 1-44.4375 0 25.425 25.425 0 0 0-50.7375-1.7775l-0.1575 2.385 0.09 74.7a22.2525 22.2525 0 0 1-22.2075 22.23z m-47.5425-134.19c20.16 0 36.5625 16.4025 36.5625 36.5625v75.42a10.98 10.98 0 1 0 21.915 0l-0.09-83.0925h0.9225a36.7425 36.7425 0 0 1 35.82-28.8675c20.205 0 36.6525 16.4475 36.6525 36.6525a10.98 10.98 0 0 0 21.9375 0c0-32.265-26.235-58.5-58.5-58.5-16.4475 0-32.2875 7.02-43.4475 19.305l-4.1625 4.545-4.1625-4.6125a58.635 58.635 0 0 0-43.335-19.2825 58.635 58.635 0 0 0-58.6575 58.5 10.9575 10.9575 0 0 0 21.915 0 36.675 36.675 0 0 1 36.63-36.63z"
fill="#47CFE5"></path>
<path
d="M389.87 621.2825h-66.33a47.79 47.79 0 0 1-35.0325-15.5925l-23.715-25.695a28.575 28.575 0 0 0-20.88-9.2925H91.0475a6.525 6.525 0 1 1 0-13.095h152.8875c11.4525 0 22.5675 4.9275 30.4875 13.5225l23.715 25.7175c6.66 7.2 15.93 11.34 25.425 11.34h66.33a6.525 6.525 0 1 1-0.0225 13.095"
fill="#0099BC"></path>
</svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@ -0,0 +1,14 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%">
<path
d="M273.408 166.912h477.696c58.368 0 105.984 47.616 105.984 105.984v477.696c0 58.368-47.616 105.984-105.984 105.984H273.408c-58.368 0-105.984-47.616-105.984-105.984V273.408C166.912 215.04 215.04 166.912 273.408 166.912z"
fill="#7B78EB"></path>
<path
d="M512 525.312v98.816c33.28-14.848 72.704 0.512 87.552 33.792 14.848 33.28-0.512 72.704-33.792 87.552-16.896 7.68-35.84 7.68-53.248 0v111.616H273.408c-58.368 0-105.984-47.616-105.984-105.984V512h137.216c-21.504 19.456-24.064 53.248-4.608 74.752 19.456 21.504 53.248 24.064 74.752 4.608 21.504-18.944 24.064-53.248 4.608-74.752l-4.608-4.608H512v-40.96c-4.096 0.512-9.216 0.512-13.312 0-51.2 0-86.016-47.616-86.016-105.984s20.992-108.032 86.016-108.032h13.312V166.912h238.592c58.368 0 105.984 47.616 105.984 105.984v251.904h-120.832c20.992-23.552 19.456-59.392-3.584-80.896-23.552-20.992-59.392-19.456-80.896 3.584-19.968 21.504-19.968 55.296 0 76.8H512z"
fill="#9796ED"></path>
<path
d="M512 525.312v98.816l13.312-4.096c35.84-7.68 72.704 15.872 79.872 52.224 7.68 35.84-18.432 72.192-54.272 78.848-4.096 1.024-8.704 1.024-13.312 1.024-9.216 0-16.384-3.072-25.088-6.144v111.616h-14.336v-132.608l18.432 8.192c27.136 11.776 58.368-0.512 70.144-27.648 11.776-27.136-0.512-58.368-27.648-70.144-13.312-5.632-28.672-5.632-42.496 0l-18.432 8.192v-117.76H399.872c14.848 33.28-0.512 72.704-33.792 87.552-33.28 14.848-72.704-0.512-87.552-33.792-7.68-16.896-7.68-35.84 0-53.248H166.912V512h137.216c-21.504 19.456-24.064 53.248-4.608 74.752 19.456 21.504 53.248 24.064 74.752 4.608 21.504-19.456 24.064-53.248 4.608-74.752l-4.608-4.608H512v-39.936h-13.312c-51.2 0-86.016-47.104-86.016-105.984s20.992-109.568 86.016-109.568h13.312V166.912h13.312v105.984h-26.624c-49.664 0-73.216 33.28-73.216 94.208 0 53.248 30.72 92.672 73.216 92.672 3.584 0.512 7.68 0.512 11.264 0l15.36-2.048V512h102.912c-13.824-35.84 4.096-76.8 40.448-90.624 35.84-13.824 76.8 4.096 90.624 40.448 6.144 15.872 6.144 33.792 0 50.176h97.792v13.312h-120.832c20.992-23.552 19.456-59.392-3.584-80.896-23.552-20.992-59.392-19.456-80.896 3.584-19.968 21.504-19.968 55.296 0 76.8H512z"
fill="#6A68C6"></path>
<path
d="M444.928 693.248c-23.04 13.312-52.224 5.12-65.024-17.408-4.096-7.68-6.144-15.36-6.144-24.064V392.192c0-26.624 20.992-47.616 47.616-47.616 8.704 0 16.896 2.048 24.576 6.656l221.696 132.608c23.04 13.312 30.208 42.496 16.896 65.024-4.096 6.656-10.24 12.8-16.896 16.896"
fill="#FDDE80"></path>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

17
assets/zone_icon/ent.svg Normal file
View File

@ -0,0 +1,17 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%">
<path
d="M534.442796 378.982175m36.203867 36.203867l30.592268 30.592268q36.203867 36.203867 0 72.407734l-360.590518 360.590518q-36.203867 36.203867-72.407734 0l-30.592268-30.592268q-36.203867-36.203867 0-72.407735l360.590518-360.590517q36.203867-36.203867 72.407734 0Z"
fill="#FF8693"></path>
<path
d="M369.92 543.744l137.472-137.472a38.912 38.912 0 0 1 54.528 0l48.384 48.64a38.4 38.4 0 0 1 0 54.528l-137.984 137.984z"
fill="#FC6376"></path>
<path
d="M286.133941 631.021801m12.854616 12.85013l72.601422 72.576083q12.854616 12.850129 0.004486 25.704746l-1.62889 1.629458q-12.850129 12.854616-25.704745 0.004486l-72.601422-72.576083q-12.854616-12.850129-0.004486-25.704745l1.62889-1.629459q12.850129-12.854616 25.704745-0.004486Z"
fill="#FFA9B1"></path>
<path
d="M737.024 547.584a99.328 99.328 0 0 1 62.72-62.72l51.2-13.568a27.136 27.136 0 0 0 13.056-49.664L826.624 384a98.816 98.816 0 0 1-22.784-85.76l16.896-63.232c7.168-27.136-8.96-43.52-36.096-36.096l-63.232 16.896a98.816 98.816 0 0 1-85.76-23.04l-37.376-36.864a27.136 27.136 0 0 0-49.408 13.312l-13.824 51.2a97.792 97.792 0 0 1-62.464 62.72l-51.2 13.824a27.136 27.136 0 0 0-13.312 49.408L445.44 384a97.536 97.536 0 0 1 23.04 85.504l-16.896 63.232c-7.424 27.392 8.96 43.52 36.096 36.352l63.232-16.896a97.792 97.792 0 0 1 85.76 22.784l37.376 37.376a26.88 26.88 0 0 0 49.408-13.312z"
fill="#FDDE80"></path>
<path
d="M886.272 417.536l-74.752-75.008 30.464-114.432a41.216 41.216 0 0 0-8.704-41.472A41.728 41.728 0 0 0 791.808 179.2l-114.432 30.72-74.752-76.032A41.728 41.728 0 0 0 563.2 120.576a41.216 41.216 0 0 0-28.416 31.488l-27.392 102.4L404.48 281.6a42.24 42.24 0 0 0-31.744 28.16 42.24 42.24 0 0 0 13.312 40.448L460.8 425.216l-30.72 114.432a41.728 41.728 0 0 0 8.96 41.472 37.888 37.888 0 0 0 27.392 10.752 56.832 56.832 0 0 0 14.08-2.048l114.432-30.72 74.752 75.008a45.824 45.824 0 0 0 31.232 14.336 34.304 34.304 0 0 0 8.96 0 41.216 41.216 0 0 0 28.416-31.488l27.392-102.4 102.4-27.392a41.984 41.984 0 0 0 31.488-28.416 40.96 40.96 0 0 0-13.312-41.216z m-84.736-203.52h5.12a16.896 16.896 0 0 1 0 5.12l-25.6 93.696-72.96-73.728z m-32 139.776l-34.56 128-128 34.56-102.4-102.4 34.56-128 128-34.56z m-199.424-192c0-2.56 1.792-4.096 1.792-4.608a9.984 9.984 0 0 1 4.096 3.072l59.648 59.648-87.296 23.296z m-157.696 162.048L409.6 320a12.8 12.8 0 0 1 4.864-2.048l81.152-21.76-23.552 87.808z m58.368 230.4a18.944 18.944 0 0 1-5.12 0 17.92 17.92 0 0 1 0-5.12l25.6-93.696L563.2 528.64z m230.4 51.2c0 2.816-1.536 4.096-1.536 4.864a20.992 20.992 0 0 1-4.352-3.328l-59.392-59.392 87.296-23.552z m156.16-156.16l-81.152 21.76 23.296-87.04 59.392 59.392a40.96 40.96 0 0 1 3.328 3.84 12.8 12.8 0 0 1-4.096 2.56z"
fill="#FCC029"></path>
</svg>

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -0,0 +1,11 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%">
<path
d="M691.2 204.8a44.032 44.032 0 0 1 29.952 34.048 117.76 117.76 0 0 1-13.056 76.8s-19.2 29.952-24.32 39.936a235.008 235.008 0 0 0-25.6 107.008v40.704H365.312v-39.424a235.008 235.008 0 0 0-25.6-107.008c-5.12-9.984-24.32-39.936-24.32-39.936a117.76 117.76 0 0 1-13.056-76.8A44.544 44.544 0 0 1 336.896 204.8V147.712a29.952 29.952 0 0 1 27.136-31.744 29.952 29.952 0 0 1 27.648 31.744v73.728A237.056 237.056 0 0 0 512 253.952a241.408 241.408 0 0 0 125.184-35.072V147.712a27.136 27.136 0 1 1 53.76 0z"
fill="#FF6A9B"></path>
<path
d="M658.432 487.936H365.312L204.8 780.288a36.352 36.352 0 0 0 10.24 46.592 492.288 492.288 0 0 0 595.456 0 36.608 36.608 0 0 0 8.704-47.36z"
fill="#FF9DC6"></path>
<path
d="M409.6 537.6a9.984 9.984 0 0 0-13.568 4.608l-124.16 250.624a10.496 10.496 0 0 0 4.608 13.568 14.848 14.848 0 0 0 4.608 0 9.984 9.984 0 0 0 8.96-5.632l124.16-250.88A10.24 10.24 0 0 0 409.6 537.6zM455.936 643.072a9.984 9.984 0 0 0-12.032 7.424l-40.448 170.752a10.24 10.24 0 0 0 7.424 12.288h2.304a9.728 9.728 0 0 0 9.728-7.936l40.448-170.752a9.984 9.984 0 0 0-7.424-11.776zM750.848 791.808l-124.16-250.624A9.984 9.984 0 0 0 614.4 537.6a10.24 10.24 0 0 0-4.608 13.312l124.16 250.88a9.984 9.984 0 0 0 8.96 5.632 14.848 14.848 0 0 0 4.608 0 10.496 10.496 0 0 0 3.328-15.616zM579.84 650.496a9.984 9.984 0 0 0-19.456 4.608l40.448 170.752a9.728 9.728 0 0 0 9.728 7.936h2.304a10.24 10.24 0 0 0 7.424-12.288z"
fill="#FF6A9B"></path>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

32
assets/zone_icon/food.svg Normal file
View File

@ -0,0 +1,32 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%">
<path
d="M192.075294 503.883294m-75.294118 0a75.294118 75.294118 0 1 0 150.588236 0 75.294118 75.294118 0 1 0-150.588236 0Z"
fill="#FA942D"></path>
<path
d="M342.663529 411.211294m-75.294117 0a75.294118 75.294118 0 1 0 150.588235 0 75.294118 75.294118 0 1 0-150.588235 0Z"
fill="#FA942D"></path>
<path
d="M284.747294 480.722824m-75.294118 0a75.294118 75.294118 0 1 0 150.588236 0 75.294118 75.294118 0 1 0-150.588236 0Z"
fill="#FE5D79"></path>
<path
d="M765.470118 532.841412m-127.427765 0a127.427765 127.427765 0 1 0 254.855529 0 127.427765 127.427765 0 1 0-254.855529 0Z"
fill="#FA942D"></path>
<path
d="M632.259765 457.547294m-133.210353 0a133.210353 133.210353 0 1 0 266.420706 0 133.210353 133.210353 0 1 0-266.420706 0Z"
fill="#FA942D"></path>
<path
d="M672.798118 556.016941m-150.588236 0a150.588235 150.588235 0 1 0 301.176471 0 150.588235 150.588235 0 1 0-301.176471 0Z"
fill="#FE5D79"></path>
<path
d="M932.291765 474.925176a28.762353 28.762353 0 0 1 28.747294 28.762353l-0.045177 1.355295-0.090353 1.355294c-14.305882 150.919529-130.605176 272.865882-280.741647 299.188706l20.178824 80.745411a23.160471 23.160471 0 0 1-22.467765 28.777412H343.371294a23.160471 23.160471 0 0 1-22.467765-28.777412l20.178824-80.745411C192.813176 779.595294 77.552941 660.329412 60.928 512.015059l-0.557176-5.376a28.958118 28.958118 0 0 1 28.822588-31.713883h843.083294z"
fill="#FDDC7A"></path>
<path
d="M442.548706 196.924235h136.146823c21.263059 0 39.800471 14.456471 44.950589 35.087059l60.732235 242.913882H336.865882l60.732236-242.898823a46.336 46.336 0 0 1 44.950588-35.102118z"
fill="#F6C338"></path>
<path
d="M688.037647 192.903529c9.441882-30.177882 28.385882-29.409882 34.680471-47.585882 7.062588-20.449882 9.366588-45.718588 6.927058-75.821176 16.850824 17.935059 25.976471 37.014588 30.945883 62.283294 4.894118 24.937412-9.125647 44.182588-29.06353 74.480941-19.922824 30.313412-8.809412 67.614118 0 94.915765-16.850824-17.92-59.904-55.777882-43.474823-108.272942zM283.361882 154.247529c11.324235-37.707294 34.063059-36.773647 41.60753-59.482353 8.493176-25.554824 11.264-57.133176 8.31247-94.765176 20.239059 22.407529 31.201882 46.260706 37.165177 77.854118 5.872941 31.171765-10.947765 55.220706-34.876235 93.108706-23.943529 37.872941-10.601412 84.48 0 118.633411-20.239059-22.422588-71.936-69.722353-52.208942-135.348706z"
fill="#C6D2E1"></path>
<path
d="M510.629647 706.605176a92.672 92.672 0 0 1 92.672 92.672v115.832471H417.957647v-115.832471a92.672 92.672 0 0 1 92.672-92.672z"
fill="#F5BC20"></path>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

@ -0,0 +1,9 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%">
<path
d="M166.4 166.144m90.112 0l510.976 0q90.112 0 90.112 90.112l0 510.976q0 90.112-90.112 90.112l-510.976 0q-90.112 0-90.112-90.112l0-510.976q0-90.112 90.112-90.112Z"
fill="#58D598"></path>
<path d="M307.2 325.632h136.448v136.448H307.2zM580.096 325.632h136.448v136.448h-136.448z" fill="#17AD8A"></path>
<path
d="M443.648 462.336v75.776h-64.256v204.544h59.392v-68.096H585.216v68.096h59.136v-204.544h-64.256v-75.776h-136.448z"
fill="#17AD8A"></path>
</svg>

After

Width:  |  Height:  |  Size: 592 B

View File

@ -0,0 +1,11 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%">
<path
d="M873.472 321.792c-46.08-46.592-102.4-73.472-161.536-40.192a177.152 177.152 0 0 0-51.2-161.536s-83.456 107.52-15.104 219.648c-12.288 13.568-24.32 27.136-36.352 39.424-26.88 27.136 14.592 69.12 41.216 41.984l68.608-69.632c40.704-40.96 76.8-23.808 112.896 12.288 26.624 26.88 68.096-15.104 41.472-41.984z"
fill="#58D598"></path>
<path
d="M705.024 344.576a189.696 189.696 0 0 0-270.848 0 195.072 195.072 0 0 0-41.216 62.464 249.088 249.088 0 0 0-177.664 74.496 256 256 0 0 0 0 359.68 248.576 248.576 0 0 0 354.816 0 256 256 0 0 0 73.472-179.2 190.976 190.976 0 0 0 61.44-41.728 195.84 195.84 0 0 0 0-275.712z"
fill="#FF5C7A"></path>
<path
d="M514.304 808.704a187.136 187.136 0 0 1-267.264-5.12 193.536 193.536 0 0 1 5.12-271.104s-45.056 120.832 43.776 214.272a210.176 210.176 0 0 0 218.368 61.952"
fill="#F14767"></path>
</svg>

After

Width:  |  Height:  |  Size: 984 B

View File

@ -0,0 +1,17 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%">
<path
d="M760.685714 768a21.942857 21.942857 0 0 0 19.836343 21.840457L782.628571 789.942857a21.942857 21.942857 0 0 0 21.840458-19.836343L804.571429 768V321.828571h29.257142a58.514286 58.514286 0 0 1 58.514286 58.514286v438.857143a58.514286 58.514286 0 0 1-58.514286 58.514286H190.171429a58.514286 58.514286 0 0 1-58.514286-58.514286V204.8a58.514286 58.514286 0 0 1 58.514286-58.514286h512a58.514286 58.514286 0 0 1 58.514285 58.514286v563.2z"
fill="#7DD3E0"></path>
<path
d="M219.428571 234.057143m29.257143 0l394.971429 0q29.257143 0 29.257143 29.257143l0 263.314285q0 29.257143-29.257143 29.257143l-394.971429 0q-29.257143 0-29.257143-29.257143l0-263.314285q0-29.257143 29.257143-29.257143Z"
fill="#3DA9D3"></path>
<path
d="M404.772571 300.514743l129.462858 80.925257a15.945143 15.945143 0 0 1 0 27.062857l-129.462858 80.925257a15.945143 15.945143 0 0 1-24.429714-13.531428V314.046171a15.945143 15.945143 0 0 1 24.429714-13.531428z"
fill="#FFD469"></path>
<path
d="M219.428571 614.4m29.257143 0l394.971429 0q29.257143 0 29.257143 29.257143l0 0q0 29.257143-29.257143 29.257143l-394.971429 0q-29.257143 0-29.257143-29.257143l0 0q0-29.257143 29.257143-29.257143Z"
fill="#3DA9D3"></path>
<path
d="M219.428571 731.428571m29.257143 0l219.428572 0q29.257143 0 29.257143 29.257143l0 0q0 29.257143-29.257143 29.257143l-219.428572 0q-29.257143 0-29.257143-29.257143l0 0q0-29.257143 29.257143-29.257143Z"
fill="#3DA9D3"></path>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -0,0 +1,16 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%">
<path
d="M918.784 510.208a187.904 187.904 0 0 0-88.832-159.488 156.416 156.416 0 0 0 1.792-22.016 150.784 150.784 0 0 0-210.944-138.496 151.04 151.04 0 0 0-216.32 0 150.784 150.784 0 0 0-210.944 138.496 156.416 156.416 0 0 0 1.792 22.016 187.648 187.648 0 0 0-13.824 309.504v1.536a215.296 215.296 0 0 0 332.8 179.2 215.04 215.04 0 0 0 332.8-179.2v-2.56a187.904 187.904 0 0 0 71.68-148.992z"
fill="#FC6B8A"></path>
<path
d="M680.704 479.744A150.528 150.528 0 0 1 572.672 435.2a150.016 150.016 0 0 1-120.064 0 150.528 150.528 0 0 1-108.032 45.824h-11.264v167.168a166.4 166.4 0 0 0 165.888 165.888h33.536a166.4 166.4 0 0 0 165.888-165.888v-169.728a137.216 137.216 0 0 1-17.92 1.28z"
fill="#FFFFFF"></path>
<path d="M510.464 651.264m-33.536 0a33.536 33.536 0 1 0 67.072 0 33.536 33.536 0 1 0-67.072 0Z" fill="#E2006C">
</path>
<path
d="M635.904 554.496H614.4v-21.504a12.032 12.032 0 0 0-11.776-11.776h-4.864a12.032 12.032 0 0 0-11.776 11.776v21.504h-21.248a11.776 11.776 0 0 0-11.776 11.52v5.12a11.776 11.776 0 0 0 11.776 11.52h21.248v21.504a12.032 12.032 0 0 0 11.776 11.776h4.864a12.032 12.032 0 0 0 11.776-11.776v-21.504h21.248a11.776 11.776 0 0 0 11.776-11.52v-5.12a11.776 11.776 0 0 0-11.52-11.52zM455.936 554.496H435.2v-21.504a12.032 12.032 0 0 0-11.776-11.776h-4.864a12.032 12.032 0 0 0-11.776 11.776v21.504H384a11.776 11.776 0 0 0-11.776 11.52v5.12a11.776 11.776 0 0 0 11.776 11.52h21.248v21.504a12.032 12.032 0 0 0 11.776 11.776h4.864a12.032 12.032 0 0 0 13.312-11.776v-21.504h21.248a11.52 11.52 0 0 0 11.776-11.52v-5.12a11.52 11.52 0 0 0-12.288-11.52z"
fill="#FF5C7A"></path>
<path
d="M600.32 651.008a12.288 12.288 0 0 0-12.288 12.544c0 34.048-34.816 61.696-76.8 61.696s-76.8-27.648-76.8-61.696a12.544 12.544 0 1 0-25.6 0c0 47.616 45.824 86.528 102.4 86.528s102.4-38.912 102.4-86.528a12.544 12.544 0 0 0-13.312-12.544z"
fill="#EB53A8"></path>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,18 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%">
<path
d="M492.270933 147.729067A255.342933 255.342933 0 0 1 627.2 620.2624v51.2a37.546667 37.546667 0 0 1-25.6 34.133333h-221.866667a44.654933 44.654933 0 0 1-25.6-34.133333v-51.2a256.648533 256.648533 0 0 1 138.1376-472.533333z"
fill="#FFA200"></path>
<path
d="M550.4 534.929067v-76.8h51.2c46.609067 0 51.2-26.786133 51.2-42.666667v-128c0-23.1168-17.2032-42.666667-51.2-42.666667h-213.333333c-42.103467 0-59.733333 21.111467-59.733334 42.666667v76.8h102.4v-68.266667h119.466667v119.466667h-51.2c-60.501333-0.5632-76.8 24.405333-76.8 42.666667v76.8h128z m-62.6688 24.533333a59.733333 59.733333 0 1 1-59.733333 59.733333 59.733333 59.733333 0 0 1 59.733333-59.733333z"
fill="#FFF0D3"></path>
<path d="M354.133333 739.7376h273.066667v8.533333a128 128 0 0 1-128 128h-17.066667a128 128 0 0 1-128-128v-8.533333z"
fill="#5FB5EC"></path>
<path
d="M746.666667 210.6624h119.466666a17.066667 17.066667 0 0 1 0 34.133333h-119.466666a17.066667 17.066667 0 0 1 0-34.133333z m59.733333-59.733333a17.066667 17.066667 0 0 1 17.066667 17.066666v119.466667a17.066667 17.066667 0 0 1-34.133334 0v-119.466667a17.066667 17.066667 0 0 1 17.066667-17.066666z"
fill="#FFE074"></path>
<path
d="M157.866667 662.929067h119.466666a17.066667 17.066667 0 0 1 0 34.133333h-119.466666a17.066667 17.066667 0 0 1 0-34.133333z m59.733333-59.733334a17.066667 17.066667 0 0 1 17.066667 17.066667v119.466667a17.066667 17.066667 0 0 1-34.133334 0v-119.466667a17.066667 17.066667 0 0 1 17.066667-17.066667z"
fill="#FFE074"></path>
<path d="M200.533333 662.9376h34.133334v34.133333h-34.133334z" fill="#FFE074"></path>
<path d="M789.333333 210.670933h34.133334v34.133334h-34.133334z" fill="#FFE074"></path>
</svg>

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%">
<path
d="M881.408 664.064V504.32a168.192 168.192 0 0 0-128-162.56l-7.936-1.792v144.896a12.288 12.288 0 0 1-14.592 11.776 170.752 170.752 0 0 0-30.464-2.816h-138.752v-27.648a37.632 37.632 0 0 1 11.776-27.648 175.872 175.872 0 0 0 57.856-135.68A179.2 179.2 0 0 0 460.8 132.352a175.872 175.872 0 0 0-180.992 176.128V409.6h32.256a225.536 225.536 0 0 0 15.872 19.2 36.608 36.608 0 0 1 9.472 25.6v42.496A193.792 193.792 0 0 0 179.2 712.96a197.12 197.12 0 0 0 197.12 166.656h325.12a148.48 148.48 0 0 0 45.568-6.144 217.088 217.088 0 0 0 64.256-31.744 176.896 176.896 0 0 0 18.176-15.616l4.608-4.352a156.16 156.16 0 0 0 47.36-111.872v-35.84c0.512-3.072 0.256-6.656 0-9.984z"
fill="#FFD778"></path>
<path
d="M468.736 238.592a40.192 40.192 0 1 0 40.192 40.192 40.192 40.192 0 0 0-40.192-40.192zM323.584 362.752H217.6a34.816 34.816 0 1 0 0 69.376h106.24a34.816 34.816 0 1 0 0-69.376z"
fill="#FB813A"></path>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -0,0 +1,11 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%">
<path
d="M954.624 452.864H919.04v-168.96a37.376 37.376 0 0 0-25.6-36.608A36.608 36.608 0 0 0 846.848 281.6v170.24H199.936v-168.96a37.632 37.632 0 0 0-25.6-36.608A36.352 36.352 0 0 0 128 281.6v170.24H92.16a15.616 15.616 0 0 0-15.36 15.872v82.688a15.36 15.36 0 0 0 15.36 15.616h26.88v85.248a135.68 135.68 0 0 0 134.4 136.192h114.432a135.68 135.68 0 0 0 134.4-136.192v-20.992a7.936 7.936 0 0 1 7.68-7.936h25.6a7.68 7.68 0 0 1 7.68 7.936v20.992a135.936 135.936 0 0 0 134.4 136.192H793.6a135.68 135.68 0 0 0 134.4-136.192v-85.248h25.6a15.36 15.36 0 0 0 15.36-15.616v-81.664a15.616 15.616 0 0 0-15.36-15.872"
fill="#E5E6E6"></path>
<path
d="M361.216 727.552h-102.4A87.296 87.296 0 0 1 172.8 640v-79.872a61.184 61.184 0 0 1 60.416-61.44h153.6a61.184 61.184 0 0 1 60.416 61.44V640a87.296 87.296 0 0 1-86.528 87.552"
fill="#FF5C7A"></path>
<path
d="M685.568 727.552h102.4A87.296 87.296 0 0 0 873.984 640v-79.872a61.184 61.184 0 0 0-60.416-61.44h-153.6a61.184 61.184 0 0 0-60.416 61.44V640a87.296 87.296 0 0 0 86.528 87.552"
fill="#2CBAE5"></path>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,11 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%">
<path
d="M881.92 460.8A335.36 335.36 0 0 0 547.584 125.696h-73.216A335.616 335.616 0 0 0 139.776 460.8v313.6a18.688 18.688 0 0 0 18.432 18.688h41.984c13.568 46.336 37.888 80.384 88.576 80.384h98.304a37.376 37.376 0 0 0 37.376-36.864l1.28-284.672a36.864 36.864 0 0 0-37.12-37.12h-99.84a111.616 111.616 0 0 0-51.2 12.8v-73.216a242.432 242.432 0 0 1 241.664-241.664h67.328a242.176 242.176 0 0 1 241.408 241.664v74.496a110.592 110.592 0 0 0-54.272-14.08h-99.84a36.864 36.864 0 0 0-37.12 37.12v284.672a37.376 37.376 0 0 0 37.376 36.864h98.304c51.2 0 75.008-34.048 88.576-80.384h41.984a18.688 18.688 0 0 0 18.432-18.688z"
fill="#45C7DD"></path>
<path
d="M646.141043 825.220963m0.045396-32.511969l0.273801-196.095809q0.045395-32.511968 32.557364-32.466573l1.023999 0.00143q32.511968 0.045395 32.466573 32.557364l-0.273802 196.095809q-0.045395 32.511968-32.557363 32.466573l-1.023999-0.00143q-32.511968-0.045395-32.466573-32.557364Z"
fill="#FF5C7A"></path>
<path
d="M307.222608 825.246563m0.045395-32.511969l0.273801-196.095809q0.045395-32.511968 32.557364-32.466573l1.023999 0.00143q32.511968 0.045395 32.466573 32.557364l-0.273801 196.095809q-0.045395 32.511968-32.557364 32.466573l-1.023999-0.00143q-32.511968-0.045395-32.466573-32.557364Z"
fill="#FF5C7A"></path>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%">
<path
d="M497.8944 517.8624l23.8848 29.2608a58.5728 58.5728 0 0 1-5.6064 80.0512L241.9456 880.7424a47.7184 47.7184 0 0 1-65.6128-0.768 49.8176 49.8176 0 0 1-4.3008-66.816l108.5696-136.3712 126.1056-158.3616a58.5728 58.5728 0 0 1 91.1872-0.5632z"
fill="#1BAD8B"></path>
<path
d="M698.9312 153.6a117.1456 117.1456 0 0 1 11.4176 233.728l60.416 45.9008c4.352 3.328 10.1632 3.9168 15.104 1.5872l73.6256-34.6368a46.2848 46.2848 0 0 1 59.1104 17.5872 44.3392 44.3392 0 0 1-11.9296 59.3152l-125.952 90.2656a58.5728 58.5728 0 0 1-65.9456 1.5616l-66.048-42.752-44.1344 47.7696 70.6048 83.328c1.664 1.9456 3.2 4.0192 4.608 6.1952l1.9456 3.3024a58.5728 58.5728 0 0 1-22.8608 79.616l-192.1024 106.3424a49.3824 49.3824 0 0 1-65.7408-16.9984 52.096 52.096 0 0 1 11.904-68.5824l105.5488-83.1744-106.2912-68.3008-1.536-1.024a59.7504 59.7504 0 0 1-0.896-0.6144l-13.824-7.168a58.5728 58.5728 0 0 1-23.296-82.2784l71.68-118.8864-30.72-13.824a14.6432 14.6432 0 0 0-14.336 1.3312l-80.4864 55.6032a48.8704 48.8704 0 0 1-62.6688-5.9648 39.3472 39.3472 0 0 1 1.792-56.8576l128.2816-115.1488a58.5728 58.5728 0 0 1 57.4464-12.032l143.5392 47.2576A117.1456 117.1456 0 0 1 698.9312 153.6z"
fill="#57D59A"></path>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

12
assets/zone_icon/tech.svg Normal file
View File

@ -0,0 +1,12 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%">
<path d="M510.208 683.264h-114.176l-50.688 209.408H674.816l-50.688-209.408h-113.92z" fill="#FFD778"></path>
<path
d="M535.552 150.528v-28.16a25.6 25.6 0 1 0-51.2 0v28.16a271.872 271.872 0 0 0-244.992 269.568v97.28a25.6 25.6 0 0 0 26.88 26.88h487.936a25.6 25.6 0 0 0 25.6-26.88v-97.28a271.616 271.616 0 0 0-244.224-269.568z"
fill="#48CFE5"></path>
<path
d="M125.696 464.64m103.168 0l562.432 0q103.168 0 103.168 103.168l0 15.36q0 103.168-103.168 103.168l-562.432 0q-103.168 0-103.168-103.168l0-15.36q0-103.168 103.168-103.168Z"
fill="#2CBAE5"></path>
<path
d="M742.4 537.6a37.632 37.632 0 1 0 37.632 37.632A37.376 37.376 0 0 0 742.4 537.6zM276.736 537.6a37.632 37.632 0 1 0 37.632 37.632A37.632 37.632 0 0 0 276.736 537.6z"
fill="#FFD778"></path>
</svg>

After

Width:  |  Height:  |  Size: 907 B

View File

@ -0,0 +1,11 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" width="100%" height="100%">
<path
d="M271.616 247.808a212.224 212.224 0 0 0-49.664 172.8l25.6 126.72c56.832 21.76 60.16 87.552 67.328 149.248a1167.872 1167.872 0 0 1 190.208-14.08 1247.488 1247.488 0 0 1 196.096 14.08c7.68-61.696 4.352-126.72 59.904-148.736l25.6-128a211.712 211.712 0 0 0-49.92-172.288 218.624 218.624 0 0 0-165.12-74.752h-134.912a218.624 218.624 0 0 0-165.12 74.752"
fill="#FFB161"></path>
<path
d="M505.088 412.672l-34.816-34.56a19.456 19.456 0 0 0-27.392 27.392l25.6 25.6-25.6 25.6a19.456 19.456 0 0 0 27.392 27.392l34.816-34.56 35.072 34.56a18.688 18.688 0 0 0 13.568 5.632 19.456 19.456 0 0 0 13.824-33.024l-25.6-25.6 25.6-25.6a19.456 19.456 0 0 0-13.824-33.024 18.688 18.688 0 0 0-13.568 5.632z"
fill="#FFE494"></path>
<path
d="M822.016 482.56a130.816 130.816 0 0 0-133.888 128v68.864l-368.128 1.536v-69.376a130.304 130.304 0 0 0-120.32-128h-13.568A81.92 81.92 0 0 0 102.4 563.2a76.8 76.8 0 0 0 0 13.312 79.104 79.104 0 0 0 38.912 54.784l8.96 4.352h2.304a25.6 25.6 0 0 1 15.36 22.016v63.744a112.384 112.384 0 0 0 80.896 105.472 51.2 51.2 0 0 0 98.816 5.888h313.088a51.2 51.2 0 0 0 98.816-5.888 112.384 112.384 0 0 0 79.104-105.472V650.752a25.6 25.6 0 0 1 8.192-11.52h1.536l4.608-2.816a80.384 80.384 0 0 0 51.2-61.44v-12.032a81.92 81.92 0 0 0-83.712-79.616"
fill="#FB952C"></path>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

572
docs/APP_widget/splash.md Normal file
View File

@ -0,0 +1,572 @@
# APP端开屏图片
- [获取APP端开屏图片列表](#获取APP端开屏图片列表)
- [获取APP端开屏幕广告信息](#获取APP端开屏幕广告信息)
---
## 获取APP端开屏图片列表
> https://app.bilibili.com/x/v2/splash/brand/list
*请求方式GET*
鉴权方式APP
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|--------|-----|-------|---------|-----|
| appkey | str | APP密钥 | APP方式必要 | |
| ts | num | 当前时间戳 | APP方式必要 | |
| sign | str | APP签名 | APP方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
|---------|-----|------|---------------------------------------|
| code | num | 返回值 | 0成功<br />-3API校验密匙错误<br />-400请求错误 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
|---------------|-------|--------|--------|
| pull_interval | num | 1800 | 作用尚不明确 |
| forcibly | bool | false | 作用尚不明确 |
| rule | str | order | 作用尚不明确 |
| list | array | 开屏图片列表 | |
| show | array | 默认显示项 | |
`data`中的`list`数组:
| 项 | 类型 | 内容 | 备注 |
|-----|-----|-----------|-----|
| 0 | obj | 开屏图片1 | |
| n | obj | 开屏图片(n+1) | |
| …… | obj | …… | …… |
`list`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
|----------|-----|---------------------|-----|
| id | num | 开屏图片id | |
| thumb | str | 开屏图片url | |
| logo_url | str | “bilibili”logo图片url | |
`data`中的`show`数组:
| 项 | 类型 | 内容 | 备注 |
|-----|-----|-------|-----|
| 0 | obj | 套了个娃? | |
`show`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
|-------------|-----|--------|--------|
| id | num | 开屏图片id | |
| begin_time | num | 起始时间? | 时间戳 |
| end_time | num | 结束时间? | 时间戳 |
| probability | num | 0 | 作用尚不明确 |
| duration | num | 显示时间? | 单位为毫秒 |
**示例:**
```shell
curl -G 'https://app.bilibili.com/x/v2/splash/brand/list' \
--data-urlencode 'appkey=1d8b6e7d45233436' \
--data-urlencode 'ts=0' \
--data-urlencode 'sign=78a89e153cd6231a4a4d55013aa063ce'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"pull_interval": 1800,
"forcibly": false,
"rule": "order",
"list": [
{
"id": 10,
"thumb": "http://i0.hdslb.com/bfs/archive/e2d2f57e08b511d1a47203859f7bddb4ef9d4e16.png",
"logo_url": "http://i0.hdslb.com/bfs/archive/ecc9b29bb4b803daf2a46fe5ef71bf530300162c.png"
},
{
"id": 11,
"thumb": "http://i0.hdslb.com/bfs/archive/fe737da5cdedf9dad038e5fd30e957be8a063bc2.png",
"logo_url": "http://i0.hdslb.com/bfs/archive/ecc9b29bb4b803daf2a46fe5ef71bf530300162c.png"
},
{
"id": 12,
"thumb": "http://i0.hdslb.com/bfs/archive/574469a4a20f41ba4dc9ecd41d15f94eea875ed9.png",
"logo_url": "http://i0.hdslb.com/bfs/archive/ecc9b29bb4b803daf2a46fe5ef71bf530300162c.png"
},
{
"id": 13,
"thumb": "http://i0.hdslb.com/bfs/archive/af0f4f611faa34340bd4f91def1973ccbfb8fbb3.png",
"logo_url": "http://i0.hdslb.com/bfs/archive/ecc9b29bb4b803daf2a46fe5ef71bf530300162c.png"
},
{
"id": 14,
"thumb": "http://i0.hdslb.com/bfs/archive/1d40e975b09d5c87b11b3ae0c9ce6c6b82f63d9e.png",
"logo_url": "http://i0.hdslb.com/bfs/archive/ecc9b29bb4b803daf2a46fe5ef71bf530300162c.png"
}
],
"show": [
{
"id": 12,
"begin_time": 1597564800,
"end_time": 1630753108,
"probability": 0,
"duration": 700
}
]
}
}
```
</details>
如id=11的图片为
![]( https://i0.hdslb.com/bfs/archive/fe737da5cdedf9dad038e5fd30e957be8a063bc2.png )
## 获取APP端开屏幕广告信息
> https://app.bilibili.com/x/v2/splash/list
*请求方式: GET*
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|----------|-----|-----------------------|-----|-----|
| build | int | 客户端内部版本号 | 必要 | |
| mobi_app | str | android, iphone, ipad | 必要 | |
| platform | str | android, ios | 必要 | |
| height | int | 屏幕高度 | 必要 | |
| width | int | 屏幕宽度 | 必要 | |
| birth | str | 生日日期(四位数,例 0101) | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
|---------|-----|------|---------------------------------------|
| code | num | 返回值 | 0成功<br />-3API校验密匙错误<br />-400请求错误 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
|-------------------|--------|---------------------|---------|
| splash_request_id | 当前请求id | 长度为33, 前13位是当前秒级时间戳 | |
| max_time | int | 最长显示时间? | |
| min_interval | int | 最少显示时间? | 千分之一秒单位 |
| pull_interval | int | 显示时间? | |
| keep_ids | int | 显示时间? | |
| list | list | 广告 list | |
`list`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
|----------------------------|-------|---------------|--------|
| id | int | 广告id | |
| type | int | 1 | |
| card_type | int | 39 | |
| duration | int | 持续时间? | |
| begin_time | int | 开始展示时间 | 秒级时间戳 |
| end_time | int | 停止展示时间 | 毫秒级时间戳 |
| thumb | url | 广告图片 | |
| hash | str | 作用尚不明确 | |
| logo_url | str | 空值 | |
| logo_hash | str | 空值 | |
| skip | int | 是否跳转? | |
| uri | str | 跳转的url | |
| video_url | str | 视频url | |
| video_hash | str | 视频hash | |
| video_width | num | 视频宽度 | |
| video_height | num | 视频高度 | |
| uri_title | str | 空值 | |
| source | int | 929 | |
| cm_mark | int | 1 | |
| ad_cb | str | 作用尚不明确 | |
| resource_id | int | 926 | |
| request_id | str | 作用尚不明确 | |
| client_ip | str | 客户端IP | |
| is_ad | bool | 作用尚不明确 | |
| is_ad_loc | bool | 作用尚不明确 | |
| schema_title | str | 滑动进入第三方应用 | |
| schema_callup_white_list | array | 跳转的 APP 的白名单 | |
| extra | obj | 显示信息? | |
| enable_pre_download | bool | 是否可以当场下载 APP? | |
| enable_background_download | bool | 是否可以静默下载 APP? | |
| interact_type | int | 是否可以跳转(互动) | |
| interact_url | str | 跳转(互动) url | |
| interact_distance | int | 作用尚不明确 | |
| guide_button_list | array | 所有的按钮 | |
| mark_with_skip_style | num | 作用尚不明确 | |
| skip_button_height | num | 作用尚不明确 | |
`extra`对象:
| 字段 | 类型 | 内容 | 备注 |
|----------------------------|-------|-----|-----|
| use_ad_web_v2 | bool | | |
| show_urls | array | | |
| click_urls | array | | |
| show_1s_urls | array | | |
| download_whitelist | array | | |
| open_whitelist | array | | |
| card | obj | | |
| report_time | num | | |
| sales_type | num | | |
| special_industry | bool | | |
| preload_landingpage | num | | |
| share_info | obj | | |
| upzone_entrance_type | num | | |
| upzone_entrance_report_id | num | | |
| topview_pic_url | str | | |
| topview_video_url | str | | |
| click_area | num | | |
| shop_id | num | | |
| up_mid | num | | |
| track_id | str | | |
| enable_store_direct_launch | int | | |
| enable_double_jump | bool | | |
| store_callup_card | bool | | |
| enable_h5_alert | bool | | |
| special_industry_style | num | | |
| macro_replace_priority | num | | |
| feedback_panel_style | num | | |
| ad_content_type | num | | |
| enable_h5_pre_load | num | | |
| hot_activity_id | num | | |
| product_id | num | | |
| landingpage_download_style | num | | |
`guide_button_list` 中的对象:
| 字段 | 类型 | 内容 | 备注 |
|------------------------------|-------|-----|-------|
| id | int | | |
| x | int | | |
| y | int | | |
| bg_color | str | | |
| bg_color_night | str | | |
| text_color | str | | |
| text_color_night | str | | |
| guide_instructions | str | | |
| guide_instructions_new | str | 空值 | |
| width | str | | |
| jump_url | str | | |
| schema_package_name | str | | |
| schema_title | str | | |
| schema_title_new | str | 空值 | |
| height | str | | |
| slide_threshold_value | str | | |
| slide_border_color | str | | |
| guide_image_url | str | | |
| guide_image_md5 | str | | |
| interact_style | str | | |
| jump_image_url | str | | |
| jump_image_md5 | str | | |
| schema_image_url | str | | |
| schema_image_md5 | str | | |
| click_expand_ratio | str | | |
| logo_image_url | str | | |
| logo_image_md5 | str | | |
| related_ids | array | 空 | |
| schema_list | array | 空 | |
| font_ratio | num | | |
| seq | num | | |
| degrade_type | num | | |
| twist_angle | num | | |
| twist_speed | num | | |
| secondary_guide_instructions | str | | |
| secondary_font_ratio | num | | |
| secondary_text_color | str | | |
| secondary_text_color_night | str | | |
| activity_time | num | | 秒级时间戳 |
| time_show_type | num | | |
**示例:**
```shell
curl -X GET 'https://app.bilibili.com/x/v2/splash/list' \
--data-urlencode 'build=999999999' \
--data-urlencode 'mobi_app=android' \
--data-urlencode 'platform=android' \
--data-urlencode 'height=1920' \
--data-urlencode 'width=1080' \
--data-urlencode 'birth=0101'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"max_time": 4,
"min_interval": 14400,
"pull_interval": 900,
"keep_ids": null,
"list": [
{
"id": 9460,
"type": 1,
"card_type": 39,
"duration": 5,
"begin_time": 1663689600,
"end_time": 1663775999,
"thumb": "https://i0.hdslb.com/bfs/sycp/creative_img/202208/cb001c291c6011940e29531dcce6b1e8.webp",
"hash": "712d3df973f99fdcd30c2419d19630dc",
"logo_url": "",
"logo_hash": "",
"skip": 1,
"uri": "https://market.m.taobao.com/app/mwdk-industry/mwdk-shopping-base/pages/peppa.html?disableNav=YES&merchantCode=HM&pageId=105240&path=%2Fact%2Frax%2Fmanual1455861656935693595&renderChannelCode=HM&siteCode=HM_8_7dd8299642994fa196f9a9aae4fd4391_3&spma=a225z&usePayment=alipayMiniApp&utm_campaign=dwlx&utm_source=1234&targetShopId=199273419",
"video_url": "http://upos-sz-static.bilivideo.com/ssaxcode/89/jl/n220831a21uql976d44zun4y0ykmjl89-1-SPLASH.mp4",
"video_hash": "ae10333c160452cc2755d079db10b597",
"video_width": 1080,
"video_height": 1920,
"uri_title": "",
"source": 929,
"cm_mark": 1,
"ad_cb": "COfrARC7jxUY9EkgADDWwCE4oQdCIDE2NjM2NDY2MzY1ODhxMTcyYTI2YTE5MmE5NnE1NDE0SKy0xMi1MFIG5aSp5rSlaP///////////wFw////////////AYABS4gB5+sBsgEg8mQFw0bBxGOGYE8OBhMOd3DE8OGFZXhookrFX4s3UrrwAruPFdgD9Ek=",
"resource_id": 926,
"request_id": "1663646636588q172a26a192a96q5414",
"client_ip": "117.14.146.37",
"is_ad": true,
"is_ad_loc": true,
"schema_title": "滑动进入第三方应用",
"schema_callup_white_list": [
"tmall",
"taobao",
"openapp.jdmobile",
"weixin",
"alipays",
"tbopen",
"eleme",
"qqmusic",
"pddopen",
"upwallet",
"yocial://plaza/?tab=0",
"hiapplink",
"meiju",
"midea-meiju",
"uclink",
"qklink",
"taobaolite",
"lazyaudio",
"meituanwaimai",
"baiduboxapp://",
"baiduboxapp",
"fleamarket",
"dewuapp",
"duappmoblink",
"cmblife",
"imeituan",
"vmall",
"music",
"pinduoduo"
],
"extra": {
"use_ad_web_v2": true,
"show_urls": [
"https://g.cn.miaozhen.com/x/k=2315612&p=8EUuC&dx=__IPDX__&rt=2&pro=s&ns=__IP__&ni=__IESID__&v=__LOC__&xa=__ADPLATFORM__&tr=__REQUESTID__&vg=__AUTOPLAY__&nh=__AUTOREFRESH__&mo=__OS__&m0=__OPENUDID__&m0a=__DUID__&m1=__ANDROIDID1__&m1a=__ANDROIDID__&m2=__IMEI__&m4=__AAID__&m5=__IDFA__&m6=__MAC1__&m6a=__MAC__&m11=__OAID__&m14=__CAID__&m5a=__IDFV__&mn=__ANAME__&m5b=__IDFA1__&m11a=__OAID1__&m14a=__CAID1__&o="
],
"click_urls": [
"https://e.cn.miaozhen.com/r/k=2315612&p=8EUuC&dx=__IPDX__&rt=2&pro=s&ns=__IP__&ni=__IESID__&v=__LOC__&xa=__ADPLATFORM__&tr=__REQUESTID__&mo=__OS__&m0=__OPENUDID__&m0a=__DUID__&m1=__ANDROIDID1__&m1a=__ANDROIDID__&m2=__IMEI__&m4=__AAID__&m5=__IDFA__&m6=__MAC1__&m6a=__MAC__&m11=__OAID__&m14=__CAID__&m5a=__IDFV__&mn=__ANAME__&m5b=__IDFA1__&m11a=__OAID1__&m14a=__CAID1__&o="
],
"show_1s_urls": [],
"download_whitelist": [],
"open_whitelist": [
"tmall",
"taobao",
"openapp.jdmobile",
"weixin",
"alipays",
"tbopen",
"eleme",
"qqmusic",
"pddopen",
"upwallet",
"yocial://plaza/?tab=0",
"hiapplink",
"meiju",
"midea-meiju",
"uclink",
"qklink",
"taobaolite",
"lazyaudio",
"meituanwaimai",
"baiduboxapp://",
"baiduboxapp",
"fleamarket",
"dewuapp",
"duappmoblink",
"cmblife",
"imeituan",
"vmall",
"music",
"pinduoduo"
],
"card": {
"card_type": 0,
"extreme_team_status": false,
"support_transition": false,
"under_player_interaction_style": 0,
"grade_denominator": 0,
"star_level": 0,
"live_booking_population_threshold": 0,
"ori_mark_hidden": 0,
"use_multi_cover": false,
"fold_time": 0,
"live_room_popularity": 0,
"live_tag_show": false,
"grade_level": 0
},
"report_time": 0,
"sales_type": 75,
"special_industry": false,
"preload_landingpage": 0,
"share_info": {},
"upzone_entrance_type": 0,
"upzone_entrance_report_id": 0,
"topview_pic_url": "",
"topview_video_url": "",
"click_area": 0,
"shop_id": 0,
"up_mid": 0,
"track_id": "pbaes.Y5ATuPVlG6ysPF6cvl6W8B-BYexhSJzrKH3NYfC3KIHDb9W5cxPA4_FTEPWYDED5DjfRwb3tcrLppYAqQ87SSg==",
"enable_store_direct_launch": 0,
"enable_double_jump": false,
"store_callup_card": false,
"enable_h5_alert": false,
"special_industry_style": 0,
"macro_replace_priority": 1,
"feedback_panel_style": 0,
"ad_content_type": 0,
"enable_h5_pre_load": 0,
"hot_activity_id": 0,
"product_id": 0,
"landingpage_download_style": 2
},
"enable_pre_download": true,
"enable_background_download": true,
"interact_type": 1,
"interact_url": "https://market.m.taobao.com/app/mwdk-industry/mwdk-shopping-base/pages/peppa.html?disableNav=YES&merchantCode=HM&pageId=105240&path=%2Fact%2Frax%2Fmanual1455861656935693595&renderChannelCode=HM&siteCode=HM_8_7dd8299642994fa196f9a9aae4fd4391_3&spma=a225z&usePayment=alipayMiniApp&utm_campaign=dwlx&utm_source=1234&targetShopId=199273419",
"interact_distance": 60,
"guide_button_list": [
{
"id": 49037,
"x": 50,
"y": 78,
"bg_color": "#80000000",
"bg_color_night": "#80000000",
"text_color": "#FFFFFFFF",
"text_color_night": "#FFFFFFFF",
"guide_instructions": "点击进入活动页",
"guide_instructions_new": "",
"width": 70,
"jump_url": "https://market.m.taobao.com/app/mwdk-industry/mwdk-shopping-base/pages/peppa.html?disableNav=YES&merchantCode=HM&pageId=105240&path=%2Fact%2Frax%2Fmanual1455861656935693595&renderChannelCode=HM&siteCode=HM_8_7dd8299642994fa196f9a9aae4fd4391_3&spma=a225z&usePayment=alipayMiniApp&utm_campaign=dwlx&utm_source=1234&targetShopId=199273419",
"schema_package_name": "",
"schema_title": "",
"schema_title_new": "",
"height": 7,
"slide_threshold_value": 5,
"slide_border_color": "#40FFFFFF",
"guide_image_url": "",
"guide_image_md5": "",
"interact_style": 6,
"jump_image_url": "https://i0.hdslb.com/bfs/sycp/creative_img/202208/f61a66cf54bc71d9bd1b81bde79c0140.json",
"jump_image_md5": "26d8b4b516f83a3f9b15fef643464cc6",
"schema_image_url": "https://i0.hdslb.com/bfs/sycp/creative_img/202208/f61a66cf54bc71d9bd1b81bde79c0140.json",
"schema_image_md5": "26d8b4b516f83a3f9b15fef643464cc6",
"click_expand_ratio": 100,
"logo_image_url": "https://i0.hdslb.com/bfs/sycp/mgk/img/202106/17006d50ec506813727b1cb5c6fc58b1.png",
"logo_image_md5": "86bc1b68ce4708d918cd4e01a975ca17",
"related_ids": [],
"schema_list": [],
"font_ratio": 0.23,
"seq": 0,
"degrade_type": 1,
"twist_angle": 0,
"twist_speed": -1,
"secondary_guide_instructions": "",
"secondary_font_ratio": 0,
"secondary_text_color": "",
"secondary_text_color_night": "",
"activity_time": 1662532059,
"time_show_type": 0
},
{
"id": 49040,
"x": 50,
"y": 83,
"bg_color": "#80000000",
"bg_color_night": "#80000000",
"text_color": "#FFFFFFFF",
"text_color_night": "#FFFFFFFF",
"guide_instructions": "即可前往 开吃新品",
"guide_instructions_new": "",
"width": 64,
"jump_url": "https://market.m.taobao.com/app/mwdk-industry/mwdk-shopping-base/pages/peppa.html?disableNav=YES&merchantCode=HM&pageId=105240&path=%2Fact%2Frax%2Fmanual1455861656935693595&renderChannelCode=HM&siteCode=HM_8_7dd8299642994fa196f9a9aae4fd4391_3&spma=a225z&usePayment=alipayMiniApp&utm_campaign=dwlx&utm_source=1234&targetShopId=199273419",
"schema_package_name": "",
"schema_title": "滑动进入第三方应用",
"schema_title_new": "",
"height": 3,
"slide_threshold_value": 5,
"slide_border_color": "#40FFFFFF",
"guide_image_url": "",
"guide_image_md5": "",
"interact_style": 3,
"jump_image_url": "https://i0.hdslb.com/bfs/sycp/creative_img/202208/f61a66cf54bc71d9bd1b81bde79c0140.json",
"jump_image_md5": "26d8b4b516f83a3f9b15fef643464cc6",
"schema_image_url": "https://i0.hdslb.com/bfs/sycp/creative_img/202208/f61a66cf54bc71d9bd1b81bde79c0140.json",
"schema_image_md5": "26d8b4b516f83a3f9b15fef643464cc6",
"click_expand_ratio": 100,
"logo_image_url": "https://i0.hdslb.com/bfs/sycp/mgk/img/202106/17006d50ec506813727b1cb5c6fc58b1.png",
"logo_image_md5": "86bc1b68ce4708d918cd4e01a975ca17",
"related_ids": [
49037
],
"schema_list": [],
"font_ratio": 0.23,
"seq": 99,
"degrade_type": 0,
"twist_angle": 0,
"twist_speed": -1,
"secondary_guide_instructions": "",
"secondary_font_ratio": 0,
"secondary_text_color": "",
"secondary_text_color_night": "",
"activity_time": 1662532059,
"time_show_type": 0
}
],
"mark_with_skip_style": 0,
"skip_button_height": 0.0557
}
],
"splash_request_id": "1663646636605q172a24a57a232q5796"
}
}
```
</details>

176
docs/album/action.md Normal file
View File

@ -0,0 +1,176 @@
# 相簿操作
- [~~点赞相簿~~](#~~点赞相簿~~)
- [~~收藏相簿~~](#~~收藏相簿~~)
- [取消收藏相簿](#取消收藏相簿)
---
## ~~点赞相簿~~
> https://api.vc.bilibili.com/link_draw/v2/Vote/operate
*请求方式POST*
认证方式CookieSESSDATA
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------------------ | ------ | ---------------------- |
| doc_id | num | 相簿id | 必要 | |
| type | num | 操作方式 | 必要 | 1点赞<br />2取消赞 |
| csrf_token | str | CSRF Token位于cookie | 非必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />1参数错误<br />3未登录<br />110022已经操作过了 |
| msg | str | 错误信息 | 默认为success |
| message | str | 错误信息 | 默认为success |
| data | obj | 数据本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | -------- | ---------------------- |
| type | num | 操作方式 | 1点赞<br />2取消赞 |
**示例:**
点赞相簿`id=99184721`
```shell
curl 'https://api.vc.bilibili.com/link_draw/v2/Vote/operate' \
--data-urlencode 'doc_id=99184721' \
--data-urlencode 'type=1' \
--data-urlencode 'csrf_token=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "success",
"message": "success",
"data": {
"type": 1
}
}
```
</details>
## ~~收藏相簿~~
> https://api.vc.bilibili.com/user_plus/v1/Fav/add
*请求方式POST*
认证方式CookieSESSDATA
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------------------ | ------ | ------------ |
| fav_id | num | 相簿id | 必要 | |
| biz_type | num | 2 | 必要 | 作用尚不明确 |
| csrf_token | str | CSRF Token位于cookie | 非必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ----- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-400参数错误<br />-500未登录<br />-507已收藏 |
| msg | str | 错误信息 | 默认为OK |
| message | str | 错误信息 | 默认为OK |
| data | array | 空 | |
**示例:**
收藏相簿`id=99184721`
```shell
curl 'https:///api.vc.bilibili.com/user_plus/v1/Fav/add' \
--data-urlencode 'fav_id=99184721' \
--data-urlencode 'biz_type=2' \
--data-urlencode 'csrf_token=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "OK",
"message": "OK",
"data": []
}
```
</details>
## 取消收藏相簿
> https://api.vc.bilibili.com/user_plus/v1/Fav/delete
*请求方式POST*
认证方式CookieSESSDATA
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------------------ | ------ | ------------ |
| fav_id | num | 相簿id | 必要 | |
| biz_type | num | 2 | 必要 | 作用尚不明确 |
| csrf_token | str | CSRF Token位于cookie | 非必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ----- | -------- | --------------------------------------------- |
| code | num | 返回值 | 0成功<br />-400参数错误<br />-500未登录 |
| msg | str | 错误信息 | 默认为OK |
| message | str | 错误信息 | 默认为OK |
| data | array | 空 | |
**示例:**
取消收藏相簿`id=99184721`
```shell
curl 'https://api.vc.bilibili.com/user_plus/v1/Fav/delete' \
--data-urlencode 'fav_id=99184721' \
--data-urlencode 'biz_type=2' \
--data-urlencode 'csrf_token=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "OK",
"message": "OK",
"data": []
}
```
</details>

152
docs/album/activity_list.md Normal file
View File

@ -0,0 +1,152 @@
# 相簿活动列表
- [获取相簿热门活动列表](#获取相簿热门活动列表)
---
## 获取相簿热门活动列表
> https://api.vc.bilibili.com/photo_activity/v2/Activity/list
*请求方式GET*
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| --------- | ---- | -------- | ------ | --------------------------------------------- |
| type | num | 活动类型 | 非必要 | 0全部<br/>1展示类<br/>2比赛类 |
| biz | num | 分区 | 非必要 | 0全部<br />1画友<br/>2摄影<br />默认为0 |
| page_num | num | 页码 | 非必要 | 默认为4 |
| page_size | num | 每页项数 | 非必要 | 默认为0 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------ |
| code | num | 返回值 | 0成功<br />1参数错误 |
| msg | str | 错误信息 | 默认为success |
| message | str | 错误信息 | 默认为success |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------- | ----- | ---------- | ---- |
| total_count | str | 总计活动数 | |
| items | array | 活动列表 | |
`data`中的`items`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ---------- | ---- |
| 0 | obj | 活动 1 | |
| n | obj | 活动 (n+1) | |
| …… | obj | …… | …… |
`data`中的`items`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ---- | ------------- | ------------------------ |
| cover | str | 活动图片url | |
| title | str | 活动标题 | |
| link | str | 活动页面url | |
| type | num | 活动类型 | 1展示类<br/>2比赛类 |
| biz | num | 所属分区 | 1画友<br/>2摄影 |
| tag | str | 活动关联的TAG | |
| start_time | num | 开始时间 | 时间戳 |
| end_time | num | 结束时间 | 时间戳 |
| desc | str | 备注 | |
| desc_type | num | 活动状态 | 1已结束<br />2进行中 |
**示例:**
获取`画友`分区全部类型的5条活动
```shell
curl -G 'https://api.vc.bilibili.com/photo_activity/v2/Activity/list' \
--data-urlencode 'type=0' \
--data-urlencode 'biz=1' \
--data-urlencode 'page_num=0' \
--data-urlencode 'page_size=5'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "success",
"message": "success",
"data": {
"total_count": 21,
"items": [
{
"cover": "http://i0.hdslb.com/bfs/vc/344d175cf88f217ce8bd0f004a2c5e770eff2e03.png",
"title": "#月饼拟人#创作大赛!丰厚奖励等你来拿!",
"link": "https://www.bilibili.com/read/cv1102416",
"type": 1,
"biz": 1,
"tag": "",
"start_time": 1535817600,
"end_time": 1540915200,
"desc": "已结束",
"desc_type": 1
},
{
"cover": "http://i0.hdslb.com/bfs/vc/63d48fbc37f0142a9c72e06ebc950d4089f881d6.png",
"title": "「ISLAND」同人绘画大赛",
"link": "https://www.bilibili.com/blackboard/activity-rkOlNomMQ.html",
"type": 2,
"biz": 1,
"tag": "ISLAND同人绘画",
"start_time": 1530720000,
"end_time": 1534435200,
"desc": "已结束",
"desc_type": 1
},
{
"cover": "http://i0.hdslb.com/bfs/vc/08d20bc6c10e1e310946ebaaf56c2c90c921644d.jpg",
"title": "我家大师兄脑子有坑同人绘画大赛",
"link": "https://www.bilibili.com/blackboard/activity-S1lV0Ot6M.html",
"type": 2,
"biz": 1,
"tag": "兄坑同人绘画大赛",
"start_time": 1525449600,
"end_time": 1528473600,
"desc": "已结束",
"desc_type": 1
},
{
"cover": "http://i0.hdslb.com/bfs/vc/4eb48398ec0824e96fc878235536f2e0b4a8aef5.jpg",
"title": "国宝复“活”计划",
"link": "https://www.bilibili.com/blackboard/activity-SJ4hL_UFz.html",
"type": 2,
"biz": 1,
"tag": "国宝复“活”计划",
"start_time": 1521388800,
"end_time": 1525017600,
"desc": "已结束",
"desc_type": 1
},
{
"cover": "http://i0.hdslb.com/bfs/vc/9068f91f62ea5a36cbafff263d7e47af99cc9836.jpg",
"title": "画师专访——管郁生",
"link": "https://www.bilibili.com/blackboard/interview-guanyusheng.html",
"type": 1,
"biz": 1,
"tag": "",
"start_time": 1517414400,
"end_time": 0,
"desc": "进行中",
"desc_type": 2
}
]
}
}
```
</details>

249
docs/album/info.md Normal file
View File

@ -0,0 +1,249 @@
# 相簿基本信息
- [获取相簿详细信息](#获取相簿详细信息)
---
## 获取相簿详细信息
>https://api.vc.bilibili.com/link_draw/v1/doc/detail
*请求方式GET*
认证方式CookieSESSDSTA
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ---------- | ------ | ---- |
| doc_id | num | 目标相簿id | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----------------------------------- |
| code | num | 返回值 | 0成功<br />110001找不到目标相簿 |
| msg | str | 错误信息 | 默认为success |
| message | str | 错误信息 | 默认为success |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | -------- | ---- |
| user | obj | 作者信息 | |
| item | obj | 相簿信息 | |
`data`中的`user`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------ | ---- | ---------- | ---- |
| uid | num | 作者mid | |
| head_url | str | 头像url | |
| name | str | 昵称 | |
| vip | obj | 会员信息 | |
| upload_count | str | 相簿投稿数 | |
`user`中的`vip`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------- | ---- | ------------ | ------------------------------------------------- |
| vipType | num | 会员类型 | 0<br />1月度大会员<br />2年度及以上大会员 |
| vipDueDate | num | 会员到期时间 | 毫秒 时间戳 |
| dueRemark | str | 空 | 作用尚不明确 |
| accessStatus | num | 0 | 作用尚不明确 |
| vipStatus | num | 会员开通状态 | 0<br />1有 |
| vipStatusWarn | str | 空 | 作用尚不明确 |
| themeType | num | 0 | 作用尚不明确 |
| label | obj | | 作用尚不明确 |
`vip`中的`label`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ------------ |
| path | str | 空 | 作用尚不明确 |
`data`中的`item`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------------- | ----- | ------------------ | ------------------------------------------------------------ |
| biz | num | 相簿分区 | 1画友<br />2摄影<br />3日常 |
| doc_id | num | 相簿id | |
| poster_uid | num | 作者mid | |
| category | str | 子分区标识 | coscosplay<br />daily日常<br />illustration插画<br />comic漫画<br />draw其他<br />sifu私服 |
| type | num | 相簿类型 | 0原创<br />1同人 |
| title | str | 标题 | |
| tags | array | 相簿TAG | |
| pictures | array | 相簿图片 | |
| source | null | | 作用尚不明确 |
| upload_time | str | 投稿时间(时间码) | YYYY-MM-DD hh:mm:ss |
| upload_timestamp | num | 投稿时间(时间戳) | |
| upload_time_text | str | 投稿时间(文本) | |
| description | str | 简介 | |
| role | null | | 作用尚不明确 |
| settings | obj | 权限配置 | |
| already_collected | num | 是否已收藏 | 需要登录Cookie<br />否则恒为0 |
| already_liked | num | 0 | 作用尚不明确 |
| user_status | num | 0 | 作用尚不明确 |
| at_control | str | 空 | 作用尚不明确 |
| view_count | num | 观看数 | |
| like_count | num | 0 | 作用尚不明确 |
| collect_count | num | 收藏数 | |
| verify_status | num | 1 | 作用尚不明确 |
| already_voted | num | 是否已点赞 | 需要登录Cookie<br />否则恒为0 |
| vote_count | num | 点赞数 | |
| comment_count | num | 评论数 | |
`item`中的`tags`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | --------- | ---- |
| 0 | obj | TAG 1 | |
| n | obj | TAG (n+1) | |
| …… | obj | …… | …… |
`item`中的`tags`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | --------------- | --------------- |
| tag | str | TAG名 | |
| type | num | 类型? | |
| category | str | TAG所属子分区名 | |
| link | str | 活动页面url | 是活动TAG有此项 |
| text | str | TAG名 | |
| name | str | TAG名 | |
`item`中的`pictures`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ---------- | ---- |
| 0 | obj | 图片 1 | |
| n | obj | 图片 (n+1) | |
| …… | obj | …… | …… |
`item`中的`pictures`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ---- | -------- | ----------- |
| img_src | str | 图片url | |
| img_width | num | 图片宽度 | |
| img_height | num | 图片高度 | |
| img_size | num | 图片大小 | 单位为KByte |
`item`中的`settings`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------------- | ---- | ------------ | ------------------------------------------------------------ |
| copy_forbidden | num | 禁止转载标志 | 0不设置转载权限<br />1开放授权-署名-非商用转载<br />2作者授权-署名-非商用转载<br />3禁止转载 |
**示例:**
查询相簿`id=99184721`的详细信息
```shell
curl -G 'https://api.vc.bilibili.com/link_draw/v1/doc/detail' \
--data-urlencode 'doc_id=99184721' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "success",
"message": "success",
"data": {
"user": {
"uid": 813818,
"head_url": "https://i2.hdslb.com/bfs/face/26b12390399f3e82fb913922938f8a6662d28665.jpg",
"name": "QYS3",
"vip": {
"vipType": 2,
"vipDueDate": 1613750400000,
"dueRemark": "",
"accessStatus": 0,
"vipStatus": 1,
"vipStatusWarn": "",
"themeType": 0,
"label": {
"path": ""
}
},
"upload_count": "171"
},
"item": {
"biz": 1,
"doc_id": 99184721,
"poster_uid": 813818,
"category": "illustration",
"type": 1,
"title": "旅行",
"tags": [
{
"tag": "魔女之旅",
"type": 4,
"category": "illustration",
"text": "魔女之旅",
"name": "魔女之旅"
},
{
"tag": "伊蕾娜",
"type": 3,
"category": "illustration",
"text": "伊蕾娜",
"name": "伊蕾娜"
},
{
"tag": "旅行",
"type": 3,
"category": "illustration",
"text": "旅行",
"name": "旅行"
},
{
"tag": "魔女",
"type": 3,
"category": "illustration",
"text": "魔女",
"name": "魔女"
}
],
"pictures": [
{
"img_src": "https://i0.hdslb.com/bfs/album/d531e3dae34ef65b44ecdb2914d4cc4f5a4da998.jpg",
"img_width": 1236,
"img_height": 1600,
"img_size": 508
}
],
"source": null,
"upload_time": "2020-11-23 23:03:12",
"upload_timestamp": 1606143792,
"upload_time_text": "3天前",
"description": "伊蕾娜世界第一~",
"role": null,
"settings": {
"copy_forbidden": 0
},
"already_collected": 0,
"already_liked": 0,
"user_status": 0,
"at_control": "",
"view_count": 143699,
"like_count": 0,
"collect_count": 54,
"verify_status": 1,
"already_voted": 0,
"vote_count": 2258,
"comment_count": 98
}
}
}
```
</details>

2442
docs/album/list.md Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,171 @@
# 相簿推荐作者
- [获取摄影推荐作者](#获取摄影推荐作者)
- [获取画友推荐作者](#获取画友推荐作者)
---
## 获取摄影推荐作者
> https://api.vc.bilibili.com/link_draw/v2/Photo/uper
*请求方式GET*
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ------- |
| num | num | 请求数量 | 非必要 | 默认为6 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ----- | -------- | ------------- |
| code | num | 返回值 | 0成功 |
| msg | str | 错误信息 | 默认为success |
| message | str | 错误信息 | 默认为success |
| data | array | 信息本体 | |
`data`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ---------- | ---- |
| 0 | obj | 作者 1 | |
| n | obj | 作者 (n+1) | |
| …… | obj | …… | …… |
`data`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------- | ---- | ------- | ------------ |
| uid | num | 作者mid | |
| head_url | str | 头像url | |
| name | str | 昵称 | |
| is_followed | num | 0 | 作用尚不明确 |
**示例:**
请求获取摄影推荐作者数量为5
```shell
curl -G 'https://api.vc.bilibili.com/link_draw/v2/Photo/uper' \
--data-urlencode 'num=5'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "success",
"message": "success",
"data": [
{
"uid": 36974706,
"head_url": "https://i2.hdslb.com/bfs/face/fa7ef3a5124e2ebfd2094e0bc2f42c752c1abd21.jpg",
"name": "幹物小幺",
"is_followed": 0
},
{
"uid": 3223860,
"head_url": "https://i0.hdslb.com/bfs/face/c5400d25eb7700cd41d88dff5b800bd55ec27cfe.jpg",
"name": "您算哪根葱",
"is_followed": 0
},
{
"uid": 941228,
"head_url": "https://i2.hdslb.com/bfs/face/f38f000d4df21e9bea96d3573efdf81ae02f4ddf.jpg",
"name": "碳酸熊卡",
"is_followed": 0
},
{
"uid": 2624541,
"head_url": "https://i0.hdslb.com/bfs/face/86ccd746af8b1e8bfcdd432de7f0ce1e2b2cb8b0.jpg",
"name": "_一之濑光",
"is_followed": 0
},
{
"uid": 29963706,
"head_url": "https://i1.hdslb.com/bfs/face/c054f097f1b882fc6ad8a67d0f0f88e3acd3bc88.jpg",
"name": "公子温温温如",
"is_followed": 0
}
]
}
```
</details>
## 获取画友推荐作者
> https://api.vc.bilibili.com/link_draw/v2/Doc/drawer
*请求方式GET*
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ------- |
| num | num | 请求数量 | 非必要 | 默认为6 |
**json回复**
见[获取摄影推荐作者](#获取摄影推荐作者)中的响应内容
**示例:**
请求获取画友推荐作者数量为5
```shell
curl -G 'https://api.vc.bilibili.com/link_draw/v2/Doc/drawer' \
--data-urlencode 'num=5'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "success",
"message": "success",
"data": [
{
"uid": 7905675,
"head_url": "http://i1.hdslb.com/bfs/face/d4765fd020e8b96e331861cb4d6a3afde4e70d1d.jpg",
"name": "我真的是离城",
"is_followed": 0
},
{
"uid": 20356494,
"head_url": "http://i0.hdslb.com/bfs/face/0686141506894df969832d7dda91f2a0c4cdc24b.jpg",
"name": "ZM-PANDA",
"is_followed": 0
},
{
"uid": 4836885,
"head_url": "http://i1.hdslb.com/bfs/face/48822c5aa7aeae9d3dd2010388baa2b0e1c5cc0a.jpg",
"name": "六六子w",
"is_followed": 0
},
{
"uid": 2575079,
"head_url": "http://i1.hdslb.com/bfs/face/cb3d6f4fb2fbe5aa85ab8773a1a19cec6d8ff1e1.jpg",
"name": "念萦墨葵",
"is_followed": 0
},
{
"uid": 1904878,
"head_url": "http://i0.hdslb.com/bfs/face/f6de926b3905ec7bb9e36202d80eb931d12f70ac.jpg",
"name": "fedsnk",
"is_followed": 0
}
]
}
```
</details>

315
docs/article/articles.md Normal file
View File

@ -0,0 +1,315 @@
# 文集基本信息
- [获取文集基本信息](#获取文集基本信息)
---
## 获取文集基本信息
> https://api.bilibili.com/x/article/list/web/articles
*请求方式GET*
认证方式CookieSESSDATA
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| id | num | 文集rlid | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----------------------------------------------- |
| code | num | 返回值 | 0成功<br />-400请求错误<br />-404无此信息 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ----- | ---------------- | ------------------------------------------------------------ |
| list | obj | 文集概览 | |
| articles | array | 文集内的文章列表 | |
| author | obj | 文集作者信息 | |
| last | obj | - | 作用尚不明确<br />结构与data.articles[]中相似 |
| attention | bool | 是否关注文集作者 | false未关注<br />true已关注<br />需要登录(Cookie) <br />未登录为false |
`data`中的`list`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------------- | ---- | --------------- | ------------ |
| id | num | 文集rlid | |
| mid | num | 文集作者mid | |
| name | str | 文集名称 | |
| image_url | str | 文集封面图片url | |
| update_time | num | 文集更新时间 | 时间戳 |
| ctime | num | 文集创建时间 | 时间戳 |
| publish_time | num | 文集发布时间 | 时间戳 |
| summary | str | 文集简介 | |
| words | num | 文集字数 | |
| read | num | 文集阅读量 | |
| articles_count | num | 文集内文章数量 | |
| state | num | 1或3 | 作用尚不明确 |
| reason | str | 空 | 作用尚不明确 |
| apply_time | str | 空 | 作用尚不明确 |
| check_time | str | 空 | 作用尚不明确 |
`data`中的`articles`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------------- | ---- |
| 0 | obj | 文集中第1篇文章 | |
| n | obj | 文集中第(n+1)篇文章 | |
`data`中的`articles`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------ | ----- | -------------- | ------------------------------------------------------------ |
| id | num | 专栏cvid | |
| title | str | 文章标题 | |
| state | num | 0 | 作用尚不明确 |
| publish_time | num | 发布时间 | 秒时间戳 |
| words | num | 文章字数 | |
| image_urls | array | 文章封面 | |
| category | obj | 文章标签 | |
| categories | array | 文章标签列表 | |
| summary | str | 文章摘要 | |
| stats | obj | 文章状态数信息 | |
| like_state | num | 是否点赞 | 0未点赞<br />1已点赞<br />需要登录(Cookie) <br />未登录为0 |
`articles`数组中的对象中的`stats`
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | ---------- | ---- |
| view | num | 阅读数 | |
| favorite | num | 收藏数 | |
| like | num | 点赞数 | |
| dislike | num | 点踩数 | |
| reply | num | 评论数 | |
| share | num | 分享数 | |
| coin | num | 投币数 | |
| dynamic | num | 动态转发数 | |
`articles`数组中的对象中的`author`
| 字段 | 类型 | 内容 | 备注 |
| --------------- | ---- | -------------- | ---- |
| mid | num | 作者mid | |
| name | str | 作者昵称 | |
| face | str | 作者头像url | |
| official_verify | obj | 作者认证信息 | |
| nameplate | obj | 作者勋章 | |
| vip | obj | 作者大会员状态 | |
**示例:**
查询文集`rl207146`的基本信息
```shell
curl -G 'https://api.bilibili.com/x/article/list/web/articles' \
--data-urlencode 'id=207146' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"list": {
"id": 207146,
"mid": 293793435,
"name": "B站api研究笔记",
"image_url": "https://i0.hdslb.com/bfs/article/96d2b3d2a72e6497a011c885ab9245c51507ce18.png",
"update_time": 1585036952,
"ctime": 1582718126,
"publish_time": 1585045493,
"summary": "",
"words": 8697,
"read": 1654,
"articles_count": 3,
"state": 1,
"reason": "",
"apply_time": "",
"check_time": ""
},
"articles": [
{
"id": 4815593,
"title": "【B站API】api研究笔记ep1-视频基本信息",
"state": 0,
"publish_time": 1582643908,
"words": 2906,
"image_urls": [
"https://i0.hdslb.com/bfs/article/00497c8df7130f22e5b953694b8931a22d32f133.jpg"
],
"category": {
"id": 26,
"parent_id": 17,
"name": "数码"
},
"categories": [
{
"id": 17,
"parent_id": 0,
"name": "科技"
},
{
"id": 26,
"parent_id": 17,
"name": "数码"
}
],
"summary": "各位小可爱们大家好啊,终于可以结束我长达一年的咕咕了.........在这蝠想联翩的日子里也闲的没事除了上课就是睡觉还不如搞点事情哪个猿不想拥有自己的B站爬虫呢当然自制一个B站的综合信息台也是可以的比如显示粉丝数 获赞数掉粉警告于是就萌生了这个研究B站api的想法以后也会继续不定期分享我的主体思路是利用Chrome中的F12工具进行分析再用curl进行验证先从视频下手吧qwq我们以av2075941为例network检测下有各种图片、视频、网页、js。。。。。的传输记录",
"stats": {
"view": 578,
"favorite": 19,
"like": 26,
"dislike": 0,
"reply": 19,
"share": 6,
"coin": 10,
"dynamic": 0
},
"like_state": 0
},
{
"id": 4820548,
"title": "【B站API】api研究笔记ep2-视频其他信息",
"state": 0,
"publish_time": 1582688189,
"words": 4319,
"image_urls": [
"https://i0.hdslb.com/bfs/article/2416ee72759a5c2c8bba0f10d42e789fc0c0ae2b.jpg"
],
"category": {
"id": 26,
"parent_id": 17,
"name": "数码"
},
"categories": [
{
"id": 17,
"parent_id": 0,
"name": "科技"
},
{
"id": 26,
"parent_id": 17,
"name": "数码"
}
],
"summary": "大家中午好鸭昨天我们研究了B站api的获取方法和使用方法 这一期我们继续分享另一个从网页中寻找api的方法以及研究视频的其他api接口以av170001为例首先打开视频在F12的network下的监控中加载页面筛选XHR对象用搜索法的效率较低不如我们直接进行筛选&观察通过对资源路径的观察可以猜到某些有关的项比如playurl有可能是播放的地址pagelist可能是分P列表view不就是昨天研究的『视频基本信息』吗通过继续分析我总结出了以下api这个可以在只想获取简介时应用而不用处理多余",
"stats": {
"view": 737,
"favorite": 14,
"like": 18,
"dislike": 0,
"reply": 14,
"share": 1,
"coin": 1,
"dynamic": 0
},
"like_state": 0
},
{
"id": 5263184,
"title": "【B站API】api研究笔记Special-AV与BV互转",
"state": 0,
"publish_time": 1585045493,
"words": 1472,
"image_urls": [
"https://i0.hdslb.com/bfs/article/b520939046899303cfcac1511308eb87ede760d7.jpg"
],
"category": {
"id": 26,
"parent_id": 17,
"name": "数码"
},
"categories": [
{
"id": 17,
"parent_id": 0,
"name": "科技"
},
{
"id": 26,
"parent_id": 17,
"name": "数码"
}
],
"summary": "昨天视频新编号BV上线了所有视频的编号默认都变成了BVxxx不再是avxxx兼容在链接和搜索中输入av号评论区和动态av和bv都可以一键传送显然日益增长的投稿量对于编号是个问题int是有上限的但一串“乱码”缺少了灵魂还会让我们想到磁力链接或者熊掌盘的链接手动狗头看到av170001我会想到“法克儿~~”但看到BV17x411w7KC其实av号并没有消失只不过它已经隐藏于大众的视野里了av和bv本质上是可以双向转换的方法一电脑版推荐打开一个视频会发现",
"stats": {
"view": 343,
"favorite": 9,
"like": 13,
"dislike": 0,
"reply": 9,
"share": 0,
"coin": 2,
"dynamic": 0
},
"like_state": 0
}
],
"author": {
"mid": 293793435,
"name": "社会易姐QwQ",
"face": "http://i1.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg",
"pendant": {
"pid": 0,
"name": "",
"image": "",
"expire": 0
},
"official_verify": {
"type": -1,
"desc": ""
},
"nameplate": {
"nid": 4,
"name": "青铜殿堂",
"image": "http://i1.hdslb.com/bfs/face/2879cd5fb8518f7c6da75887994c1b2a7fe670bd.png",
"image_small": "http://i1.hdslb.com/bfs/face/6707c120e00a3445933308fd9b7bd9fad99e9ec4.png",
"level": "普通勋章",
"condition": "单个自制视频总播放数>=1万"
},
"vip": {
"type": 2,
"status": 1,
"due_date": 0,
"vip_pay_type": 0,
"theme_type": 0,
"label": null
}
},
"last": {
"id": 0,
"title": "",
"state": 0,
"publish_time": 0,
"words": 0,
"image_urls": [ ],
"category": {
"id": 0,
"parent_id": 0,
"name": ""
},
"categories": [ ],
"summary": ""
},
"attention": true
}
}
```
</details>

81
docs/article/category.md Normal file
View File

@ -0,0 +1,81 @@
# 专栏分类
## 游戏
| id | parent_id | name |
|-----|-----------|------|
| 1 | 0 | 游戏 |
| 6 | 1 | 单机游戏 |
| 7 | 1 | 电子竞技 |
| 8 | 1 | 手机游戏 |
| 9 | 1 | 网络游戏 |
| 10 | 1 | 桌游棋牌 |
## 动画
| id | parent_id | name |
|-----|-----------|------|
| 2 | 0 | 动画 |
| 4 | 2 | 动漫杂谈 |
| 5 | 2 | 动漫资讯 |
| 31 | 2 | 动画技术 |
## 生活
| id | parent_id | name |
|-----|-----------|------|
| 3 | 0 | 生活 |
| 13 | 3 | 美食 |
| 14 | 3 | 时尚 |
| 15 | 3 | 日常 |
| 21 | 3 | 萌宠 |
| 22 | 3 | 运动 |
## 轻小说
| id | parent_id | name |
|-----|-----------|------|
| 16 | 0 | 轻小说 |
| 18 | 16 | 原创连载 |
| 19 | 16 | 同人连载 |
| 20 | 16 | 小说杂谈 |
| 32 | 16 | 短篇小说 |
## 科技
| id | parent_id | name |
|-----|-----------|------|
| 17 | 0 | 科技 |
| 25 | 17 | 人文历史 |
| 26 | 17 | 数码 |
| 27 | 17 | 汽车 |
| 33 | 17 | 自然 |
| 34 | 17 | 学习 |
## 影视
| id | parent_id | name |
|-----|-----------|------|
| 28 | 0 | 影视 |
| 12 | 28 | 电影 |
| 35 | 28 | 电视剧 |
| 36 | 28 | 纪录片 |
| 37 | 28 | 综艺 |
## 兴趣
| id | parent_id | name |
|-----|-----------|------|
| 29 | 0 | 兴趣 |
| 11 | 29 | 模型手办 |
| 23 | 29 | 绘画 |
| 24 | 29 | 手工 |
| 38 | 29 | 摄影 |
| 39 | 29 | 音乐舞蹈 |
## 笔记
| id | parent_id | name |
|-----|-----------|------|
| 41 | 0 | 笔记 |
| 42 | 41 | 全部笔记 |

186
docs/article/info.md Normal file
View File

@ -0,0 +1,186 @@
# 专栏基本信息
- [获取专栏文章基本信息](#获取专栏文章基本信息)
---
## 获取专栏文章基本信息
> https://api.bilibili.com/x/article/viewinfo
*请求方式GET*
认证方式CookieSESSDATA
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| id | num | 专栏cvid | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----------------------------------------------- |
| code | num | 返回值 | 0成功<br />-400请求错误<br />-404无此信息 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------------- | ------ | ---------------- | ------------------------------------------------------------ |
| like | num | 是否点赞 | 0未点赞<br />1已点赞<br />需要登录(Cookie) <br />未登录为0 |
| attention | bool | 是否关注文章作者 | false未关注<br />true已关注<br />需要登录(Cookie) <br />未登录为false |
| favorite | bool | 是否收藏 | false未收藏<br />true已收藏<br />需要登录(Cookie) <br />未登录为false |
| coin | num | 为文章投币数 | |
| stats | obj | 状态数信息 | |
| title | str | 文章标题 | |
| banner_url | str | 文章头图url | |
| mid | num | 文章作者mid | |
| author_name | str | 文章作者昵称 | |
| is_author | bool | true | 作用尚不明确 |
| image_urls | array | 动态封面 | |
| origin_image_urls | array | 封面图片 | |
| shareable | bool | true | 作用尚不明确 |
| show_later_watch | bool | true | 作用尚不明确 |
| show_small_window | bool | true | 作用尚不明确 |
| in_list | bool | 是否收于文集 | false<br />true是 |
| pre | num | 上一篇文章cvid | 无为0 |
| next | num | 下一篇文章cvid | 无为0 |
| share_channels | array | 分享方式列表 | |
| type | num | 文章类别 | 0文章<br />2笔记 |
`stats`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | ---------- | ---- |
| view | num | 阅读数 | |
| favorite | num | 收藏数 | |
| like | num | 点赞数 | |
| dislike | num | 点踩数 | |
| reply | num | 评论数 | |
| share | num | 分享数 | |
| coin | num | 投币数 | |
| dynamic | num | 动态转发数 | |
`data`中的`image_urls`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | --------------- | ---- |
| 0 | str | 动态封面图片url | |
`data`中的`origin_image_urls`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | --------------- | ---- |
| 0 | str | 文章封面图片url | |
`data`中的`share_channels`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | -------------- | ---- |
| 0 | obj | 分享项qq | |
| 1 | obj | 分享项qq空间 | |
| 2 | obj | 分享项:微信 | |
| 3 | obj | 分享项:朋友圈 | |
| 4 | obj | 分享项:微博 | |
`data`中的`share_channels`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------- | ---- | ----------- | ---- |
| name | str | 分享名称 | |
| picture | str | 分享图片url | |
| share_channel | str | 分享代号 | |
**示例:**
查询文章`cv2`的基本信息
```shell
curl -G 'https://api.bilibili.com/x/article/viewinfo' \
--data-urlencode 'id=2' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"like": 0,
"attention": false,
"favorite": false,
"coin": 0,
"stats": {
"view": 1072619,
"favorite": 5481,
"like": 16465,
"dislike": 0,
"reply": 1865,
"share": 351,
"coin": 3436,
"dynamic": 37
},
"title": "专栏行为准则 ",
"banner_url": "https://i0.hdslb.com/bfs/article/131b1d41b857d5308f5bff36591d117bddc48d96.jpg@90p.webp",
"mid": 144900660,
"author_name": "专栏小天使",
"is_author": true,
"image_urls": [
"https://i0.hdslb.com/bfs/article/0a72422ce8e77d8512f010d93b1b7f9bc4e64e52.jpg"
],
"origin_image_urls": [
"https://i0.hdslb.com/bfs/article/131b1d41b857d5308f5bff36591d117bddc48d96.jpg"
],
"shareable": true,
"show_later_watch": true,
"show_small_window": true,
"in_list": false,
"pre": 115914,
"next": 38575,
"share_channels": [
{
"name": "QQ",
"picture": "https://i0.hdslb.com/bfs/album/114ccfb3a999df9c4d11f274c8c61a804c8f8803.png",
"share_channel": "QQ"
},
{
"name": "QQ空间",
"picture": "https://i0.hdslb.com/bfs/album/30e9608bbce725bca45b5910866f60ab4d5e18b3.png",
"share_channel": "QZONE"
},
{
"name": "微信",
"picture": "https://i0.hdslb.com/bfs/album/658af3c22431cd78bb7c50be3394f7c032eba12c.png",
"share_channel": "WEIXIN"
},
{
"name": "朋友圈",
"picture": "https://i0.hdslb.com/bfs/album/c1ebcec8c5302f29f792d15f04e0d6dcef53ec27.png",
"share_channel": "WEIXIN_MONMENT"
},
{
"name": "微博",
"picture": "https://i0.hdslb.com/bfs/album/3707fc23f7d3e24022712320284b0de9aa78c87d.png",
"share_channel": "SINA"
}
],
"type": 0,
"video_url": "",
"location": "",
"disable_share": false
}
}
```
</details>

View File

@ -0,0 +1,178 @@
# 专栏投币&点赞&收藏
- [点赞文章](#点赞文章)
- [投币文章](#投币文章)
- [收藏文章](#收藏文章)
---
## 点赞文章
<img src="../../assets/img/like.svg" width="100" height="100"/>
> https://api.bilibili.com/x/article/like
*请求方式POST*
认证方式CookieSESSDATA
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------------------- | ------ | ---------------------- |
| id | num | 文章cvid | 必要 | |
| type | num | 操作方式 | 必要 | 1点赞<br />2取消赞 |
| csrf | str | CSRF Token位于cookie | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功 <br />-101账号未登录<br />-111csrf校验失败<br />-400请求错误<br />10003不存在该稿件<br />65006已赞过<br />65004取消点赞失败 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
**示例:**
为文章`cv5806746`点赞
```shell
curl 'https://api.bilibili.com/x/article/like' \
--data-urlencode 'id=5806746' \
--data-urlencode 'type=1' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>
## 投币文章
<img src="../../assets/img/coin.svg" width="100" height="100"/>
> https://api.bilibili.com/x/web-interface/coin/add
*请求方式POST*
认证方式CookieSESSDATA
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| -------- | ---- | ------------------- | ------ | ------- |
| aid | num | 文章cvid | 必要 | |
| upid | num | 文章作者mid | 必要 | |
| multiply | num | 投币数量 | 必要 | 上限为2 |
| avtype | num | 2 | 必要 | 必须为2 |
| csrf | str | CSRF Token位于cookie | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-102账号被封停<br />-104硬币不足<br />-111csrf校验失败<br />-400请求错误<br />10003不存在该稿件<br />34002不能给自己投币<br />34003非法的投币数量<br />34005超过投币上限 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
data 对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------ | ----------------------------------------------------- |
| like | bool | 是否点赞成功 | true成功<br />false失败<br />已赞过则附加点赞失败 |
**示例:**
为文章`cv5806746`投币1枚
```shell
curl 'https://api.bilibili.com/x/web-interface/coin/add' \
--data-urlencode 'aid=5806746' \
--data-urlencode 'upid=486980924' \
--data-urlencode 'multiply=1' \
--data-urlencode 'avtype=2' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"like": false
}
}
```
</details>
## 收藏文章
<img src="../../assets/img/fav.svg" width="100" height="100"/>
>https://api.bilibili.com/x/article/favorites/add
*请求方式POST*
认证方式CookieSESSDATA
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------------------- | ------ | ---- |
| id | num | 文章cvid | 必要 | |
| csrf | str | CSRF Token位于cookie | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-111csrf校验失败<br />-400请求错误<br />-404无此项 |
| message | str | 错误信息 | 正确为success |
| data | obj | 信息本体 | |
**示例:**
收藏文章`cv5806746`
```shell
curl 'https://api.bilibili.com/x/article/favorites/add' \
--data-urlencode 'id=5806746' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>

677
docs/article/list.md Normal file
View File

@ -0,0 +1,677 @@
# 获取用户专栏信息
- [获取用户专栏文章列表](#获取用户专栏文章列表)
- [获取用户专栏文集列表](#获取用户专栏文集列表)
---
## 获取用户专栏文章列表
> https://api.bilibili.com/x/space/article
*请求方式GET*
认证方式CookieSESSDATA
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|------|-----|-------|--------------------------------------------------------------------------|-----|
| mid | num | 用户uid | | √ |
| pn | num | | 默认1 | |
| ps | num | | 默认30<br/>范围:[1,30] | |
| sort | str | | `publish_time`:最新发布<br/>`view`:最多阅读<br/>`fav`:最多收藏<br/>默认:`publish_time` | |
**json回复**
根对象
| 字段 | 类型 | 内容 | 备注 |
|---------|-----|------|--------------------|
| code | num | 返回值 | 0成功<br/>-400请求错误 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象
| 字段名 | 类型 | 内容 | 备注 |
|----------|-------|----------|-----|
| articles | array | 专栏文章信息列表 | |
| pn | num | 本次请求分页页数 | |
| ps | num | 本次请求分页大小 | |
| count | num | 专栏文章总数 | |
`data`对象 -> `articles`数组中的对象
| 字段名 | 类型 | 内容 | 备注 |
|-------------------|-------|----------|------|
| id | num | 专栏文章id | |
| category | obj | 分类 | |
| categories | array | 分类 | |
| title | str | 标题 | |
| summary | str | 摘要 | |
| banner_url | str | 封面图 | |
| template_id | num | | |
| state | num | | |
| author | obj | UP主信息 | |
| reprint | num | | |
| image_urls | array | | |
| publish_time | num | 发布时间戳 | 单位:秒 |
| ctime | num | 提交时间戳 | 单位:秒 |
| stats | obj | 专栏文章数据统计 | |
| tags | array | 标签 | |
| words | num | | |
| dynamic | str | 粉丝动态文案 | |
| origin_image_urls | array | | |
| list | | `null` | |
| is_like | bool | | |
| media | obj | | |
| apply_time | str | `空串` | |
| check_time | str | `空串` | |
| original | num | | |
| act_id | num | | |
| dispute | | `null` | |
| authenMark | | `null` | |
| cover_avid | num | | |
| top_video_info | | `null` | |
| type | num | | |
`data`对象 -> `articles`数组中的对象 -> `category`对象
| 字段名 | 类型 | 内容 | 备注 |
|-----------|-----|--------|-----|
| id | num | 分类id | |
| parent_id | num | 父级分类id | |
| name | str | 分类名称 | |
`data`对象 -> `articles`数组中的对象 -> `categories`数组中的对象
| 字段名 | 类型 | 内容 | 备注 |
|-----------|-----|--------|-----|
| id | num | 分类id | |
| parent_id | num | 父级分类id | |
| name | str | 分类名称 | |
`data`对象 -> `articles`数组中的对象 -> `author`对象
| 字段名 | 类型 | 内容 | 备注 |
|-----------------|-----|--------|-----|
| mid | num | 用户uid | |
| name | str | 用户名 | |
| face | str | 头像 | |
| pendant | obj | 头像框信息 | |
| official_verify | obj | 账号认证信息 | |
| nameplate | obj | 成就勋章信息 | |
| vip | obj | 大会员信息 | |
`data`对象 -> `articles`数组中的对象 -> `author`对象 -> `pendant`对象
| 字段名 | 类型 | 内容 | 备注 |
|--------|-----|----------|-----|
| pid | num | 头像框id | |
| name | str | 头像框名称 | |
| image | str | 头像框图片url | |
| expire | num | 过期时间 | |
`data`对象 -> `articles`数组中的对象 -> `author`对象 -> `official_verify`对象
| 字段名 | 类型 | 内容 | 备注 |
|------|-----|------|------------------------------|
| type | num | 是否认证 | -1<br />0个人认证<br />1机构认证 |
| desc | str | 认证备注 | |
`data`对象 -> `articles`数组中的对象 -> `author`对象 -> `nameplate`对象
| 字段名 | 类型 | 内容 | 备注 |
|-------------|-----|---------|-----|
| nid | num | 勋章id | |
| name | str | 勋章名称 | |
| image | str | 勋章图标 | |
| image_small | str | 勋章图标(小) | |
| level | str | 勋章等级 | |
| condition | str | 获取条件 | |
`data`对象 -> `articles`数组中的对象 -> `author`对象 -> `vip`对象
| 字段名 | 类型 | 内容 | 备注 |
|------------------|-----|------------|---------------------------------|
| type | num | 大会员类型 | 0<br />1月大会员<br />2年度及以上大会员 |
| status | num | 大会员状态 | 0<br />1有 |
| due_date | num | 大会员过期时间时间戳 | 单位:毫秒 |
| vip_pay_type | num | 支付类型 | |
| theme_type | num | `0` | |
| label | obj | 大会员标签 | |
| avatar_subscript | num | 是否显示大会员图标 | 0不显示<br />1显示 |
| nickname_color | str | 大会员昵称颜色 | |
`data`对象 -> `articles`数组中的对象 -> `author`对象 -> `vip`对象 -> `label`对象
| 字段名 | 类型 | 内容 | 备注 |
|-------------|-----|--------|------------------------------------------------------------------------------------------------------------------------------|
| path | str | `空串` | |
| text | str | 会员类型文案 | `大会员` `年度大会员` `十年大会员` `百年大会员` `最强绿鲤鱼` |
| label_theme | str | 会员标签 | vip大会员<br />annual_vip年度大会员<br />ten_annual_vip十年大会员<br />hundred_annual_vip百年大会员<br/>fools_day_hundred_annual_vip最强绿鲤鱼 |
`data`对象 -> `articles`数组中的对象 -> `stats`对象
| 字段名 | 类型 | 内容 | 备注 |
|----------|-----|-----|-------|
| view | num | 浏览数 | |
| favorite | num | 收藏数 | |
| like | num | 点赞数 | |
| dislike | num | 点踩数 | 恒为`0` |
| reply | num | 回复数 | |
| share | num | 转发数 | |
| coin | num | 投币数 | |
| dynamic | num | | |
`data`对象 -> `articles`数组中的对象 -> `tags`数组中的对象
| 字段名 | 类型 | 内容 | 备注 |
|------|-----|------|-----|
| tid | num | 标签id | |
| name | str | 标签名称 | |
`data`对象 -> `articles`数组中的对象 -> `media`对象
| 字段名 | 类型 | 内容 | 备注 |
|-----------|-----|------|-----|
| score | num | `0` | |
| media_id | num | `0` | |
| title | str | `空串` | |
| cover | str | `空串` | |
| area | str | `空串` | |
| type_id | num | `0` | |
| type_name | str | `空串` | |
| spoiler | num | `0` | |
**示例:**
```shell
curl -L -X GET 'https://api.bilibili.com/x/space/article?mid=300021061&pn=1&ps=2&sort=publish_time'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"articles": [
{
"id": 18989884,
"category": {
"id": 15,
"parent_id": 3,
"name": "日常"
},
"categories": [
{
"id": 3,
"parent_id": 0,
"name": "生活"
},
{
"id": 15,
"parent_id": 3,
"name": "日常"
}
],
"title": "B站UP主日报2022年10月08日23点v1.1",
"summary": "冠:罗翔说刑法(2485.45万粉,+7204) 涨:肯德基(+18.37万粉) 掉Overidea_China(-186850粉) 播:开心锤锤(+927.56万) 赞:荒草音乐(+31.02万) 赞:飞翔的丘丘人(+22.08万) 充冰糖IO(+210)",
"banner_url": "https://i0.hdslb.com/bfs/article/5e53260f58f77fff0b8ba6b20179db85b8741b76.jpg",
"template_id": 4,
"state": 0,
"author": {
"mid": 300021061,
"name": "狸工智能",
"face": "https://i1.hdslb.com/bfs/face/4cba9bc9d6cf6935a37ec156dedb8f8d26c1df95.jpg",
"pendant": {
"pid": 0,
"name": "",
"image": "",
"expire": 0
},
"official_verify": {
"type": -1,
"desc": ""
},
"nameplate": {
"nid": 3,
"name": "白银殿堂",
"image": "https://i2.hdslb.com/bfs/face/f6a31275029365ae5dc710006585ddcf1139bde1.png",
"image_small": "https://i2.hdslb.com/bfs/face/b09cdb4c119c467cf2d15db5263b4f539fa6e30b.png",
"level": "高级勋章",
"condition": "单个自制视频总播放数>=10万"
},
"vip": {
"type": 0,
"status": 0,
"due_date": 0,
"vip_pay_type": 0,
"theme_type": 0,
"label": {
"path": "",
"text": "",
"label_theme": ""
},
"avatar_subscript": 0,
"nickname_color": ""
}
},
"reprint": 0,
"image_urls": [
"https://i0.hdslb.com/bfs/article/8e5497f7854e7df3468fbc29b0dd10fcf17d1223.png"
],
"publish_time": 1665278884,
"ctime": 1665278884,
"stats": {
"view": 689,
"favorite": 2,
"like": 61,
"dislike": 0,
"reply": 18,
"share": 0,
"coin": 1,
"dynamic": 0
},
"words": 0,
"dynamic": "狸子的UP主日报📰v1.1,每天稳定更新如果咕咕咕了请艾特狸子LePtC检查狐务器 [tv_微笑] #排行榜##大数据##狸工智能#",
"origin_image_urls": [
"https://i0.hdslb.com/bfs/article/5e53260f58f77fff0b8ba6b20179db85b8741b76.jpg"
],
"list": null,
"is_like": false,
"media": {
"score": 0,
"media_id": 0,
"title": "",
"cover": "",
"area": "",
"type_id": 0,
"type_name": "",
"spoiler": 0
},
"apply_time": "",
"check_time": "",
"original": 1,
"act_id": 0,
"dispute": null,
"authenMark": null,
"cover_avid": 0,
"top_video_info": null,
"type": 0
},
{
"id": 18972446,
"category": {
"id": 15,
"parent_id": 3,
"name": "日常"
},
"categories": [
{
"id": 3,
"parent_id": 0,
"name": "生活"
},
{
"id": 15,
"parent_id": 3,
"name": "日常"
}
],
"title": "B站UP主日报2022年10月07日23点v1.1",
"summary": "冠:罗翔说刑法(2484.73万粉,+8020) 涨:靖菌命(+3.61万粉) 掉Overidea_China(-8593粉) 播:开心锤锤(+971.44万) 赞:荒草音乐(+53.14万) 赞:南方都市报(+18.05万) 充:内德维德(+190)",
"banner_url": "https://i0.hdslb.com/bfs/article/5e53260f58f77fff0b8ba6b20179db85b8741b76.jpg",
"template_id": 4,
"state": 0,
"author": {
"mid": 300021061,
"name": "狸工智能",
"face": "https://i1.hdslb.com/bfs/face/4cba9bc9d6cf6935a37ec156dedb8f8d26c1df95.jpg",
"pendant": {
"pid": 0,
"name": "",
"image": "",
"expire": 0
},
"official_verify": {
"type": -1,
"desc": ""
},
"nameplate": {
"nid": 3,
"name": "白银殿堂",
"image": "https://i2.hdslb.com/bfs/face/f6a31275029365ae5dc710006585ddcf1139bde1.png",
"image_small": "https://i2.hdslb.com/bfs/face/b09cdb4c119c467cf2d15db5263b4f539fa6e30b.png",
"level": "高级勋章",
"condition": "单个自制视频总播放数>=10万"
},
"vip": {
"type": 0,
"status": 0,
"due_date": 0,
"vip_pay_type": 0,
"theme_type": 0,
"label": {
"path": "",
"text": "",
"label_theme": ""
},
"avatar_subscript": 0,
"nickname_color": ""
}
},
"reprint": 0,
"image_urls": [
"https://i0.hdslb.com/bfs/article/8e5497f7854e7df3468fbc29b0dd10fcf17d1223.png"
],
"publish_time": 1665189149,
"ctime": 1665189149,
"stats": {
"view": 1021,
"favorite": 1,
"like": 66,
"dislike": 0,
"reply": 21,
"share": 2,
"coin": 2,
"dynamic": 0
},
"tags": [
{
"tid": 1598,
"name": "粉丝"
},
{
"tid": 422982,
"name": "狸子"
},
{
"tid": 526616,
"name": "大数据"
},
{
"tid": 14082112,
"name": "狸工智能"
},
{
"tid": 438,
"name": "排行榜"
}
],
"words": 0,
"dynamic": "狸子的UP主日报📰v1.1,每天稳定更新如果咕咕咕了请艾特狸子LePtC检查狐务器 [tv_微笑] #排行榜##大数据##狸工智能#",
"origin_image_urls": [
"https://i0.hdslb.com/bfs/article/5e53260f58f77fff0b8ba6b20179db85b8741b76.jpg"
],
"list": null,
"is_like": false,
"media": {
"score": 0,
"media_id": 0,
"title": "",
"cover": "",
"area": "",
"type_id": 0,
"type_name": "",
"spoiler": 0
},
"apply_time": "",
"check_time": "",
"original": 1,
"act_id": 0,
"dispute": null,
"authenMark": null,
"cover_avid": 0,
"top_video_info": null,
"type": 0
}
],
"pn": 1,
"ps": 2,
"count": 1563
}
}
```
</details>
## 获取用户专栏文集列表
> https://api.bilibili.com/x/article/up/lists
*请求方式GET*
认证方式CookieSESSDATA
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|----------|-----|-------|-----|-------------------|
| mid | num | 用户uid | √ | |
| sort | num | 排序方式 | | 0最近更新<br/>1最多阅读 |
| jsonp | str | | | |
| callback | str | | | |
**json回复**
根对象
| 字段名 | 类型 | 内容 | 备注 |
|---------|-----|------|--------------------|
| code | num | 响应码 | 0成功<br/>-400请求错误 |
| message | str | 0 | |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象
| 字段名 | 类型 | 内容 | 备注 |
|-------|-------|--------|-----|
| lists | array | 文集信息列表 | |
| total | num | 文集总数 | |
`data`对象 -> `lists`数组中的对象
| 字段名 | 类型 | 内容 | 备注 |
|----------------|-----|---------|------|
| id | num | 文集id | |
| mid | num | 作者uid | |
| name | str | 文集名称 | |
| image_url | str | 封面 | |
| update_time | num | 最后更新时间戳 | 单位:秒 |
| ctime | num | 创建时间戳 | 单位:秒 |
| publish_time | num | | 单位:秒 |
| summary | str | `空串` | |
| words | num | 总字数 | |
| read | num | 阅读量 | |
| articles_count | num | 包含文章数 | |
| state | num | `1` | |
| reason | str | `空串` | |
| apply_time | str | `空串` | |
| check_time | str | `空串` | |
**示例:**
```shell
curl -X GET 'https://api.bilibili.com/x/article/up/lists' \
--data-urlencode 'mid=2859372' \
--data-urlencode 'sort=0'
```
<details>
<summary>点击查看</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"lists": [
{
"id": 77163,
"mid": 2859372,
"name": "碟报",
"image_url": "https://i0.hdslb.com/bfs/article/96d2b3d2a72e6497a011c885ab9245c51507ce18.png",
"update_time": 1664854854,
"ctime": 1554785697,
"publish_time": 1664863200,
"summary": "",
"words": 71532,
"read": 478726,
"articles_count": 113,
"state": 1,
"reason": "",
"apply_time": "",
"check_time": ""
},
{
"id": 26407,
"mid": 2859372,
"name": "周榜",
"image_url": "https://i0.hdslb.com/bfs/article/96d2b3d2a72e6497a011c885ab9245c51507ce18.png",
"update_time": 1664721205,
"ctime": 1537942450,
"publish_time": 1664721307,
"summary": "",
"words": 102099,
"read": 1366280,
"articles_count": 206,
"state": 1,
"reason": "",
"apply_time": "",
"check_time": ""
},
{
"id": 107952,
"mid": 2859372,
"name": "制作委员会",
"image_url": "https://i0.hdslb.com/bfs/article/96d2b3d2a72e6497a011c885ab9245c51507ce18.png",
"update_time": 1646663919,
"ctime": 1563107348,
"publish_time": 1646910000,
"summary": "",
"words": 47564,
"read": 72911,
"articles_count": 10,
"state": 1,
"reason": "",
"apply_time": "",
"check_time": ""
},
{
"id": 26457,
"mid": 2859372,
"name": "实时榜",
"image_url": "https://i0.hdslb.com/bfs/article/96d2b3d2a72e6497a011c885ab9245c51507ce18.png",
"update_time": 1603115712,
"ctime": 1537955117,
"publish_time": 1603115719,
"summary": "",
"words": 206741,
"read": 1136352,
"articles_count": 76,
"state": 1,
"reason": "",
"apply_time": "",
"check_time": ""
},
{
"id": 49769,
"mid": 2859372,
"name": "预测",
"image_url": "https://i0.hdslb.com/bfs/article/96d2b3d2a72e6497a011c885ab9245c51507ce18.png",
"update_time": 1593933314,
"ctime": 1546153226,
"publish_time": 1593933314,
"summary": "",
"words": 2518,
"read": 55123,
"articles_count": 6,
"state": 1,
"reason": "",
"apply_time": "",
"check_time": ""
},
{
"id": 96916,
"mid": 2859372,
"name": "书籍周榜",
"image_url": "https://i0.hdslb.com/bfs/article/96d2b3d2a72e6497a011c885ab9245c51507ce18.png",
"update_time": 1559815260,
"ctime": 1559815159,
"publish_time": 1559815577,
"summary": "",
"words": 272,
"read": 2955,
"articles_count": 1,
"state": 1,
"reason": "",
"apply_time": "",
"check_time": ""
},
{
"id": 96610,
"mid": 2859372,
"name": "原始周榜存档",
"image_url": "https://i0.hdslb.com/bfs/article/96d2b3d2a72e6497a011c885ab9245c51507ce18.png",
"update_time": 1559721231,
"ctime": 1559720762,
"publish_time": 1559721271,
"summary": "",
"words": 290,
"read": 1498,
"articles_count": 1,
"state": 1,
"reason": "",
"apply_time": "",
"check_time": ""
},
{
"id": 26453,
"mid": 2859372,
"name": "杂谈",
"image_url": "https://i0.hdslb.com/bfs/article/96d2b3d2a72e6497a011c885ab9245c51507ce18.png",
"update_time": 1557303117,
"ctime": 1537954625,
"publish_time": 1557303168,
"summary": "",
"words": 10673,
"read": 38363,
"articles_count": 4,
"state": 1,
"reason": "",
"apply_time": "",
"check_time": ""
},
{
"id": 59028,
"mid": 2859372,
"name": "新春访谈",
"image_url": "https://i0.hdslb.com/bfs/article/96d2b3d2a72e6497a011c885ab9245c51507ce18.png",
"update_time": 1549878596,
"ctime": 1549343048,
"publish_time": 1549884125,
"summary": "",
"words": 33472,
"read": 34597,
"articles_count": 13,
"state": 1,
"reason": "",
"apply_time": "",
"check_time": ""
}
],
"total": 9
}
}
```
</details>

154
docs/audio/action.md Normal file
View File

@ -0,0 +1,154 @@
# 音频投币&收藏
- [查询音频收藏状态](#查询音频收藏状态)
- [查询音频投币数](#查询音频投币数)
- [投币音频](#投币音频)
---
## 查询音频收藏状态
> https://www.bilibili.com/audio/music-service-c/web/collections/songs-coll
*请求方式GET*
认证方式CookieSESSDATA
鉴权方式Cookie中`DedeUserID`存在且不为0
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| sid | num | 音频auid | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />72000000参数错误<br />72010002账号未登陆<br />7201006该音频不存在或已被下架 |
| msg | str | 错误信息 | 默认为success |
| data | bool | 是否收藏 | false未收藏<br />true已收藏 |
**示例:**
查询音频`au13598`的收藏状态
```shell
curl -G 'https://www.bilibili.com/audio/music-service-c/web/collections/songs-coll' \
--data-urlencode 'sid=13598' \
-b 'SESSDATA=xxx;DedeUserID=1;'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "success",
"data": true
}
```
</details>
## 查询音频投币数
> https://www.bilibili.com/audio/music-service-c/web/coin/audio
*请求方式GET*
认证方式CookieSESSDATA
鉴权方式Cookie中`DedeUserID`存在且不为0
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| sid | num | 音频auid | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />72000000参数错误<br />72010002账号未登陆<br />7201006该音频不存在或已被下架 |
| msg | str | 错误信息 | 默认为success |
| data | num | 投币数量 | 0为未投币上限为2 |
**示例:**
查询音频`au13598`的投币数
```shell
curl -G 'https://www.bilibili.com/audio/music-service-c/web/coin/audio' \
--data-urlencode 'sid=15664' \
-b 'SESSDATA=xxx;DedeUserID=1;'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "success",
"data": 1
}
```
</details>
## 投币音频
> https://www.bilibili.com/audio/music-service-c/web/coin/add
*请求方式POST*
认证方式CookieSESSDATA
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| -------- | ---- | ------------------------- | ------ | ---- |
| sid | num | 音频 auid | 必要 | |
| multiply | num | 投币数量(最大为 2 | 必要 | |
| csrf | str | CSRF Token位于 cookie | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | --------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />72000000参数错误<br />72010002账号未登陆<br />7201006该音频不存在或已被下架 |
| msg | str | 错误信息 | 默认为 0 |
| data | str | 当前投币数量 | 0 为未投币,上限为 2 |
**示例:**
为音频`au13598`投币
```shell
curl -G 'https://www.bilibili.com/audio/music-service-c/web/coin/add' \
--data-urlencode 'sid=15664' \
-b 'SESSDATA=xxx;DedeUserID=1;'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "0",
"data": "1"
}
```
</details>

432
docs/audio/info.md Normal file
View File

@ -0,0 +1,432 @@
# 歌曲基本信息
- [查询歌曲基本信息](#查询歌曲基本信息)
- [查询歌曲TAG](#查询歌曲TAG)
- [查询歌曲创作成员列表](#查询歌曲创作成员列表)
- [获取歌曲歌词](#获取歌曲歌词)
---
## 查询歌曲基本信息
> https://www.bilibili.com/audio/music-service-c/web/song/info
*请求方式GET*
认证方式CookieSESSDATA
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| sid | num | 音频auid | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ----------------------------- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />72000000参数错误<br />7201006该音频不存在或已被下架<br />72010027版权音乐重定向 |
| msg | str | 错误信息 | 默认为success |
| data | 正确时obj<br />错误时null | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ------ | ------------------ | ------------------ |
| id | num | 音频auid | |
| uid | num | UP主mid | |
| uname | str | UP主昵称 | |
| author | str | 作者名 | |
| title | str | 歌曲标题 | |
| cover | str | 封面图片url | |
| intro | str | 歌曲简介 | |
| lyric | str | lrc歌词url | |
| crtype | num | 1 | **作用尚不明确** |
| duration | num | 歌曲时间长度 | 单位为秒 |
| passtime | num | 歌曲发布时间 | 时间戳 |
| curtime | num | 当前请求时间 | 时间戳 |
| aid | num | 关联稿件avid | 无为0 |
| bvid | str | 关联稿件bvid | 无为空 |
| cid | num | 关联视频cid | 无为0 |
| msid | num | 0 | **作用尚不明确** |
| attr | num | 0 | **作用尚不明确** |
| limit | num | 0 | **作用尚不明确** |
| activityId | num | 0 | **作用尚不明确** |
| limitdesc | str | 空 | **作用尚不明确** |
| ctime | null | - | **作用尚不明确** |
| statistic | obj | 状态数 | |
| vipInfo | obj | UP主会员状态 | |
| collectIds | array | 歌曲所在的收藏夹mlid | 需要登录(SESSDATA) |
| coin_num | num | 投币数 | |
`data`中的`statistic`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ---- |
| sid | num | 音频auid | |
| play | num | 播放次数 | |
| collect | num | 收藏数 | |
| comment | num | 评论数 | |
| share | num | 分享数 | |
`data`中的`vipInfo`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------ | ---- | ------------ | ----------------------------------- |
| type | num | 会员类型 | 0<br />1月会员<br />2年会员 |
| status | num | 会员状态 | 0<br />1有 |
| due_date | num | 会员到期时间 | 时间戳 毫秒 |
| vip_pay_type | num | 会员开通状态 | 0<br />1有 |
`data`中的`collectIds`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------------------- | ---- |
| 0 | num | 第1个所在的收藏夹mlid | |
| n | num | 第n+1个所在的收藏夹mlid | |
| …… | num | …… | …… |
**示例:**
查询音频`au13598`的基本信息
```shell
curl -G 'https://www.bilibili.com/audio/music-service-c/web/song/info' \
--data-urlencode 'sid=13598' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "success",
"data": {
"id": 13598,
"uid": 486183,
"uname": "排骨教主",
"author": "排骨教主",
"title": "牵丝戏",
"cover": "http://i0.hdslb.com/bfs/music/cf50d93b4dc08bfc6d3112041d6de0e56045ac5b.jpg",
"intro": "自制 这次要特别感谢山东省京剧院的各位年轻的老师们对我戏腔发声的悉心指导\n关注排骨的微博@排骨节操收割机\n排骨QQ群456237456\n感谢@妄北没睡够(新浪微博) 画的视频图,太美了!!!!!\n",
"lyric": "http://i0.hdslb.com/bfs/music/150587810313598.lrc",
"crtype": 1,
"duration": 239,
"passtime": 1501640683,
"curtime": 1590154258,
"aid": 2554020,
"bvid": "BV1us411S7E6",
"cid": 3990196,
"msid": 0,
"attr": 0,
"limit": 0,
"activityId": 0,
"limitdesc": "",
"ctime": null,
"statistic": {
"sid": 13598,
"play": 1028516,
"collect": 30914,
"comment": 523,
"share": 384
},
"vipInfo": {
"type": 2,
"status": 1,
"due_date": 1620316800000,
"vip_pay_type": 0
},
"collectIds": [
15967839
],
"coin_num": 1777
}
}
```
</details>
## 查询歌曲TAG
> https://www.bilibili.com/audio/music-service-c/web/tag/song
*请求方式GET*
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| sid | num | 音频auid | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ------ | -------- | ------------- |
| code | num | 返回值 | 0成功 |
| msg | str | 错误信息 | 默认为success |
| data | array | TAG列表 | 无为空 |
`data`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | -------- | ---- |
| 0 | str | TAG1 | |
| n | str | TAG(n+1) | |
| …… | str | …… | …… |
`data`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | ---------- | ---------------- |
| type | str | song | **作用尚不明确** |
| subtype | num | | **作用尚不明确** |
| key | num | TAG id | **作用尚不明确** |
| info | str | TAG名 | |
**示例:**
查询音频`au15664`的TAG
```shell
curl -G 'https://www.bilibili.com/audio/music-service-c/web/tag/song' \
--data-urlencode 'sid=15664'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "success",
"data": [
{
"type": "song",
"subtype": 0,
"key": 1,
"info": "音乐"
},
{
"type": "song",
"subtype": 1,
"key": 3,
"info": "人声"
},
{
"type": "song",
"subtype": 2,
"key": 2,
"info": "翻唱"
},
{
"type": "song",
"subtype": 3,
"key": 33,
"info": "日语"
},
{
"type": "song",
"subtype": 5,
"key": 41,
"info": "网络歌曲"
},
{
"type": "song",
"subtype": 4,
"key": 7,
"info": "流行"
}
]
}
```
</details>
## 查询歌曲创作成员列表
> https://www.bilibili.com/audio/music-service-c/web/member/song
*请求方式GET*
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| sid | num | 音频auid | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ------ | ------------ | ------------- |
| code | num | 返回值 | 0成功 |
| msg | str | 错误信息 | 默认为success |
| data | array | 成员类型列表 | 无为空 |
`data`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------- | ---- |
| 0 | str | 成员类型1 | |
| n | str | 成员类型(n+1) | |
| …… | str | …… | …… |
`data`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ------ | ------------ | ------------------------------------------------------------ |
| list | array | 成员列表 | |
| type | num | 成员类型代码 | 1歌手<br />2作词<br />3作曲<br />4编曲<br />5后期/混音<br />7封面制作<br />8音源<br />9调音<br />10演奏<br />11乐器<br />127UP主 |
`data`数组中的对象中的`list`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | --------- | ---- |
| 0 | str | 成员1 | |
| n | str | 成员(n+1) | |
| …… | str | …… | …… |
`list`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ---- | ---------- | ---------------- |
| mid | num | 0 | **作用尚不明确** |
| name | str | 成员名 | |
| member_id | num | 成员id | **作用尚不明确** |
**示例:**
查询音频`au815861`的创作成员信息
```shell
curl -G 'https://www.bilibili.com/audio/music-service-c/web/member/song' \
--data-urlencode 'sid=815861'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "success",
"data": [
{
"list": [
{
"mid": 0,
"name": "匀子Cyrena",
"member_id": 164341
}
],
"type": 1
},
{
"list": [
{
"mid": 0,
"name": "圣月樱泪 ",
"member_id": 12349
}
],
"type": 2
},
{
"list": [
{
"mid": 0,
"name": "Days的Wing翼",
"member_id": 13777
}
],
"type": 3
},
{
"list": [
{
"mid": 0,
"name": "Days的Wing翼",
"member_id": 13777
}
],
"type": 4
},
{
"list": [
{
"mid": 0,
"name": "嘟比Dubi",
"member_id": 40902
}
],
"type": 5
},
{
"list": [
{
"mid": 0,
"name": "匀子Cyrena",
"member_id": 164222
}
],
"type": 127
}
]
}
```
</details>
## 获取歌曲歌词
> https://www.bilibili.com/audio/music-service-c/web/song/lyric
*请求方式GET*
同[查询歌曲基本信息](#查询歌曲基本信息)中的lrc歌词
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| sid | num | 音频auid | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ----------------------------- | --------------- | ------------- |
| code | num | 返回值 | 0成功 |
| msg | str | 错误信息 | 默认为success |
| data | 正确时str<br />错误时null | lrc格式歌词信息 | 无为空 |
**示例:**
获取音频`au15664`的歌词信息
```shell
curl -G 'https://www.bilibili.com/audio/music-service-c/web/song/lyric' \
--data-urlencode 'sid=15664' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "success",
"data": "[ar:萧忆情]\n\n[ti:威风堂堂]\n\n[00:26.64]引诱谁去摘下禁果\n\n[00:28.11]甜美滋味偷咬一口\n\n[00:30.03]触及到了最深处果核\n\n[00:31.82]身体开始颤抖\n\n[00:33.85]舌尖已濡湿双腿内侧\n\n[00:35.55]神经末梢警报响彻\n\n[00:37.39]自内而外逐渐变得火热\n\n[00:39.14]现在无须再遵守规则\n\n[00:42.14]还故作矜持说违心的话\n\n[00:45.84]为何动作不停下\n\n[00:47.85]停下来\n\n[00:48.39]已经快停不下来\n\n[00:49.42]还想索取更多\n\n[00:50.46]踩碎那PRIDE\n\n[00:51.41]忘记毫无意义的理智存在\n\n[00:53.27]让暧昧因子在四处的徘徊\n\n[00:55.19]给我收起你那\n\n[00:56.21]太虚伪的STYLE\n\n[00:57.01]直白赤裸的爱\n\n[00:58.00]最原始的DIVE\n\n[00:58.86]喘息中断续的声音叫期待\n\n[01:00.65]别掩饰此刻\n\n[01:01.50]那让人意乱情迷的SMILE\n\n[01:10.90]缓慢吐息迷惑双眼的雾\n\n[01:12.49]强制禁锢身下轻舔锁骨\n\n[01:14.23]就让封锁的心渐渐领悟\n\n[01:15.97]别继续装无辜\n\n[01:17.54]开始脱下的衬衫\n\n[01:19.08]最后的纽扣解开它\n\n[01:20.98]快感get\n\n[01:21.85]从此不顾一切\n\n[01:23.32]还在犹豫什么\n\n[01:24.78]Darling\n\n[01:26.54]站在自由世界的正中央\n\n[01:30.09]窥探你幻想的是否太过浪荡\n\n[01:33.99]太难耐\n\n[01:34.41]分分秒秒太难耐\n\n[01:35.61]床笫间的狩猎\n\n[01:36.63]充满野心的TRY\n\n[01:37.66]不承认口头上无理的摊牌\n\n[01:39.58]只想要在身体里深埋\n\n[01:41.34]现在由我掌控\n\n[01:42.36]随心所欲的LIFE\n\n[01:43.40]给你要的未来\n\n[01:44.41]永远不腐坏\n\n[01:45.32]所有的阴暗面统统藏起来\n\n[01:46.70]仅为你一人展现那能骄傲夸耀的MIND\n\n[01:49.90]将不安的情绪碾至粉末\n\n[01:53.14]抹在你胸口印上最鲜艳的红\n\n[02:21.06]别打算缩起来置身之外\n\n[02:22.64]无论何时\n\n[02:23.27]NO TIME\n\n[02:23.58]ALL RIGHT\n\n[02:24.21]打破一切的羞耻值\n\n[02:25.43]哪里奇怪\n\n[02:26.06]哪里奇怪\n\n[02:26.68]哪里奇怪\n\n[02:27.30]BURN BURN BURN\n\n[02:28.22]想要的就是那\n\n[02:29.17]啊 没错\n\n[02:29.87]再给我更多的触摸\n\n[02:31.62]顺位交换贴近肌肤的DANCE\n\n[02:33.34]好吧 肆无忌惮\n\n[02:34.98]停下来\n\n[02:35.35]已经快停不下来\n\n[02:36.50]还想索取更多\n\n[02:37.68]踩碎那PRIDE\n\n[02:38.38]忘记毫无意义的理智存在\n\n[02:40.27]让暧昧因子在四处的徘徊\n\n[02:42.11]给我收起你那\n\n[02:43.16]太虚伪的STYLE\n\n[02:44.00]直白赤裸的爱\n\n[02:45.06]最原始的DIVE\n\n[02:45.90]喘息中断续的声音叫期待\n\n[02:47.76]别掩饰此刻那让人意乱情迷的SMILE\n\n[02:50.64]将不安的情绪碾至粉末\n\n[02:54.09]抹在你胸口印上最鲜艳的红\n\n[02:58.35]抛弃所有只想拥有此刻\n\n"
}
```
</details>

790
docs/audio/music_list.md Normal file
View File

@ -0,0 +1,790 @@
# 歌单&音频收藏夹详细信息
- [歌单&音频收藏夹详细信息](#歌单音频收藏夹详细信息)
- [查询自己创建的歌单](#查询自己创建的歌单)
- [查询音频收藏夹(默认歌单)信息](#查询音频收藏夹默认歌单信息)
- [查询热门歌单](#查询热门歌单)
- [查询热门榜单](#查询热门榜单)
---
## 查询自己创建的歌单
> https://www.bilibili.com/audio/music-service-c/web/collections/list
*请求方式GET*
认证方式CookieSESSDATA
鉴权方式Cookie中`DedeUserID`存在且不为0
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| pn | num | 页码 | 必要 | |
| ps | num | 每页项数 | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ----------------------------- | -------- | ----------------------------------------------------- |
| code | num | 返回值 | 0成功<br />72000000参数错误<br />72010002未登录 |
| msg | str | 错误信息 | 默认为success |
| data | 正确时obj<br />错误时null | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ------ | ------------ | ---- |
| curPage | num | 当前页码 | |
| pageCount | num | 总计页数 | |
| totalSize | num | 总计收藏夹数 | |
| pageSize | num | 当前页面项数 | |
| data | array | 歌单列表 | |
`data`中的`data`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ----------------- | ---- |
| 0 | obj | 音频收藏夹mlid1 | |
| n | obj | 音频收藏夹mlid(n+1) | |
| …… | obj | …… | …… |
`data`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ------ | ------------------------ | -------------------------------- |
| id | num | 音频收藏夹mlid | |
| uid | num | 创建用户mid | |
| uname | str | 创建用户昵称 | |
| title | str | 歌单标题 | |
| type | num | 收藏夹属性 | 0普通收藏夹<br />1默认收藏夹 |
| published | num | 是否公开 | 0不公开<br />1公开 |
| cover | str | 歌单封面图片url | |
| ctime | num | 歌单创建时间 | 时间戳 |
| song | num | 歌单中的音乐数量 | |
| desc | str | 歌单备注信息 | |
| sids | array | 歌单中的音乐 | |
| menuId | num | 音频收藏夹对应的歌单amid | |
| statistic | obj | 歌单状态数信息 | |
`data`中的`sids`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------------- | ---------------- |
| 0 | num | 收藏的音频auid1 | |
| n | num | 收藏的音频auid(n+1) | 按照歌单顺序排列 |
| …… | num | …… | …… |
`data`中的`statistic`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | ------------------------ | ---- |
| sid | num | 音频收藏夹对应的歌单amid | |
| play | num | 播放数 | |
| collect | num | 收藏数 | |
| comment | null | 评论数 | |
| share | num | 分享数 | |
**示例:**
```shell
curl -G 'https://www.bilibili.com/audio/music-service-c/web/collections/list' \
--data-urlencode 'ps=2' \
--data-urlencode 'pn=1' \
-b 'SESSDATA=xxx;DedeUserID=1;'
```
共计创建了两个歌单,如下
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "success",
"data": {
"curPage": 1,
"pageCount": 1,
"totalSize": 2,
"pageSize": 2,
"data": [
{
"id": 15967839,
"uid": 293793435,
"uname": "社会易姐QwQ",
"title": "默认歌单",
"type": 1,
"published": 1,
"cover": "http://i0.hdslb.com/bfs/music/1e079693701d2f525850c288fcc48fa4259a73f6.jpg",
"ctime": 1519295502,
"song": 13,
"desc": "",
"sids": [
11673,
276404,
15664,
737904,
108588,
1286999,
658085,
682118,
736952,
48716,
15711,
13598,
57744
],
"menuId": 15958713,
"statistic": {
"sid": 15958713,
"play": 0,
"collect": 0,
"comment": null,
"share": 0
}
},
{
"id": 30894022,
"uid": 293793435,
"uname": "社会易姐QwQ",
"title": "test",
"type": 0,
"published": 1,
"cover": "",
"ctime": 1590154346,
"song": 0,
"desc": "test1",
"sids": [],
"menuId": 30866686,
"statistic": {
"sid": 30866686,
"play": 0,
"collect": 0,
"comment": 0,
"share": 0
}
}
]
}
}
```
</details>
## 查询音频收藏夹(默认歌单)信息
> https://www.bilibili.com/audio/music-service-c/web/collections/info
*请求方式GET*
认证方式CookieSESSDATA
鉴权方式Cookie中`DedeUserID`存在且不为0
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------------ | ------ | ------------------ |
| sid | num | 音频收藏夹mlid | 必要 | 必须为默认收藏夹mlid |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ----------------------------- | -------- | ----------------------------------------------------- |
| code | num | 返回值 | 0成功<br />72000000参数错误<br />72010002未登录 |
| msg | str | 错误信息 | 默认为success |
| data | 正确时obj<br />错误时null | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ------ | ------------------------ | ---------------------- |
| id | num | 音频收藏夹mlid | |
| uid | num | 创建用户mid | |
| uname | str | 创建用户昵称 | |
| title | str | 默认歌单 | 恒为`默认歌单` |
| type | num | 1 | 恒为`1` |
| published | num | 是否公开 | 0不公开<br />1公开 |
| cover | str | 歌单封面图片url | |
| ctime | num | 歌单创建时间 | 时间戳 |
| song | num | 歌单中的音乐数量 | |
| desc | str | 空 | 恒为空 |
| sids | array | 歌单中的音乐 | |
| menuId | num | 音频收藏夹对应的歌单amid | 与普通歌单不同通用 |
| statistic | obj | 歌单状态数信息 | |
`data`中的`sids`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------------- | ---------------- |
| 0 | num | 收藏的音频auid1 | |
| n | num | 收藏的音频auid(n+1) | 按照歌单顺序排列 |
| …… | num | …… | …… |
`data`中的`statistic`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | ------------------------ | ---- |
| sid | num | 音频收藏夹对应的歌单amid | |
| play | num | 0 | |
| collect | num | 0 | |
| comment | null | - | |
| share | num | 0 | |
**示例:**
查询我的默认歌单id为` 15967839 `
```shell
curl -G 'https://www.bilibili.com/audio/music-service-c/web/collections/info' \
--data-urlencode 'sid=15967839 ' \
-b 'SESSDATA=xxx;DedeUserID=1;'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "success",
"data": {
"id": 15967839,
"uid": 293793435,
"uname": "社会易姐QwQ",
"title": "默认歌单",
"type": 1,
"published": 1,
"cover": "http://i0.hdslb.com/bfs/music/1e079693701d2f525850c288fcc48fa4259a73f6.jpg",
"ctime": 1519295502,
"song": 13,
"desc": "",
"sids": [
11673,
276404,
15664,
737904,
108588,
1286999,
658085,
682118,
736952,
48716,
15711,
13598,
57744
],
"menuId": 15958713,
"statistic": {
"sid": 15958713,
"play": 0,
"collect": 0,
"comment": null,
"share": 0
}
}
}
```
</details>
## 查询热门歌单
> https://www.bilibili.com/audio/music-service-c/web/menu/hit
*请求方式GET*
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| --- | --- | ---- | --- | --- |
| pn | num | 页码 | 必要 | |
| ps | num | 每页项数 | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | --------------------- | ---- | ----------------------------------------- |
| code | num | 返回值 | 0成功<br />72000000参数错误<br />72010002未登录 |
| msg | str | 错误信息 | 默认为success |
| data | 正确时obj<br />错误时null | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ----- | ------ | --- |
| curPage | num | 当前页码 | |
| pageCount | num | 总计页数 | |
| totalSize | num | 总计收藏夹数 | |
| pageSize | num | 当前页面项数 | |
| data | array | 歌单列表 | |
`data`中的`data`数组:
| 项 | 类型 | 内容 | 备注 |
| --- | --- | -------------- | --- |
| 0 | obj | 音频收藏夹mlid1 | |
| n | obj | 音频收藏夹mlid(n+1) | |
| …… | obj | …… | …… |
`data`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | --- | -------------- | ----------------------------- |
| menuId | num | 音频收藏夹对应的歌单amid | |
| uid | num | 创建用户mid | |
| uname | str | 创建用户昵称 | |
| title | str | 歌单标题 | |
| cover | str | 歌单封面图片url | |
| intro | str | 歌单介绍 | |
| type | num | 歌单属性 | 1普通歌单<br/>2置顶歌单<br/>5PGC歌单 |
| off | num | 歌单是否公开 | 0公开<br/>1私密 |
| ctime | num | 歌单创建时间 | 时间戳 |
| curtime | num | 当前时间 | 时间戳 |
| statistic | obj | 歌单状态数信息 | |
| snum | num | 歌单包含歌曲个数 | |
`data`中的`statistic`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | --- | -------------- | --- |
| sid | num | 音频收藏夹对应的歌单amid | |
| play | num | 播放数 | |
| collect | num | 收藏数 | |
| comment | num | 评论数 | |
| share | num | 分享数 | |
**示例:**
```shell
curl -G 'https://www.bilibili.com/audio/music-service-c/web/menu/hit' \
--data-urlencode 'ps=1' \
--data-urlencode 'pn=6'
```
使用参数:`ps=1&qn=2`
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "success",
"data": {
"curPage": 1,
"pageCount": 1,
"totalSize": 11,
"pageSize": 3,
"data": [{
"menuId": 10624,
"uid": 32708543,
"uname": "大家的音乐姬",
"title": "新曲推荐",
"cover": "http://i0.hdslb.com/bfs/music/a32c1ed4f6ec3f74f8240f4486a750dda3a509e5.jpg",
"intro": "每天11:00更新为你推送最新音乐",
"type": 2,
"off": 0,
"ctime": 1501209433,
"curtime": 1655712354,
"statistic": {
"sid": 10624,
"play": 2366255,
"collect": 20565,
"comment": 1104,
"share": 622
},
"snum": 16,
"attr": 0,
"isDefault": 0,
"collectionId": 0
}, {
"menuId": 125312,
"uid": 32708543,
"uname": "大家的音乐姬",
"title": "丧甜可口?你意想不到的软萌电音",
"cover": "http://i0.hdslb.com/bfs/music/04f6c29ed094368253bc05fecb7bf990cee2d3a3.jpg",
"intro": "这个化学反应是怦然心动?",
"type": 1,
"off": 0,
"ctime": 1533298738,
"curtime": 1655712354,
"statistic": {
"sid": 125312,
"play": 298018,
"collect": 9928,
"comment": 89,
"share": 239
},
"snum": 19,
"attr": 0,
"isDefault": 0,
"collectionId": 0
}, {
"menuId": 26241,
"uid": 32708543,
"uname": "大家的音乐姬",
"title": "那些听了会泪目的动漫歌曲",
"cover": "http://i0.hdslb.com/bfs/music/006832318fc85fdf287667d51d83dba3b78be808.jpg",
"intro": "那些年陪伴我们的动漫歌曲,你还记得吗?\n",
"type": 1,
"off": 0,
"ctime": 1509608572,
"curtime": 1655712354,
"statistic": {
"sid": 26241,
"play": 370120,
"collect": 8390,
"comment": 110,
"share": 131
},
"snum": 12,
"attr": 0,
"isDefault": 0,
"collectionId": 0
}]
}
}
```
</details>
## 查询热门榜单
> https://www.bilibili.com/audio/music-service-c/web/menu/rank
*请求方式GET*
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| --- | --- | ---- | --- | --- |
| pn | num | 页码 | 必要 | |
| ps | num | 每页项数 | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | --------------------- | ---- | ----------------------------------------- |
| code | num | 返回值 | 0成功<br />72000000参数错误<br />72010002未登录 |
| msg | str | 错误信息 | 默认为success |
| data | 正确时obj<br />错误时null | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ----- | ------ | --- |
| curPage | num | 当前页码 | |
| pageCount | num | 总计页数 | |
| totalSize | num | 总计收藏夹数 | |
| pageSize | num | 当前页面项数 | |
| data | array | 歌单列表 | |
`data`中的`data`数组:
| 项 | 类型 | 内容 | 备注 |
| --- | --- | -------------- | --- |
| 0 | obj | 音频收藏夹mlid1 | |
| n | obj | 音频收藏夹mlid(n+1) | |
| …… | obj | …… | …… |
`data`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ----- | -------------- | ----------------------------- |
| menuId | num | 音频收藏夹对应的歌单amid | |
| uid | num | 创建用户mid | |
| uname | str | 创建用户昵称 | |
| title | str | 歌单标题 | |
| cover | str | 歌单封面图片url | |
| intro | str | 歌单介绍 | |
| type | num | 歌单属性 | 1普通歌单<br/>2置顶歌单<br/>5PGC歌单 |
| off | num | 歌单是否公开 | 0公开<br/>1私密 |
| ctime | num | 歌单创建时间 | 时间戳 |
| curtime | num | 当前时间 | 时间戳 |
| statistic | obj | 歌单状态数信息 | |
| snum | num | 歌单包含歌曲个数 | |
| audios | array | 歌单中的音乐信息(部分) | |
`data`数组中的`statistic`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | --- | -------------- | --- |
| sid | num | 音频收藏夹对应的歌单amid | |
| play | num | 收藏数 | |
| collect | num | 点赞数 | |
| comment | num | 评论数 | |
| share | num | 分享数 | |
`data`数组中的`audios`数组:
| 项 | 类型 | 内容 | 备注 |
| --- | --- | ------- | --- |
| 0 | obj | 音频1 | |
| n | obj | 音频(n+1) | |
| …… | obj | …… | …… |
`audios`数组中的`audios`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | --- | ---- | ------- |
| id | num | 音频id | |
| title | str | 音频标题 | |
| duration | num | 音频时长 | 单位:秒(s) |
**示例:**
```shell
curl -G 'https://www.bilibili.com/audio/music-service-c/web/menu/rank' \
--data-urlencode 'ps=1' \
--data-urlencode 'pn=6'
```
使用参数:`ps=1&qn=6`
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "success",
"data": {
"curPage": 1,
"pageCount": 2,
"totalSize": 12,
"pageSize": 6,
"data": [{
"menuId": 10624,
"uid": 32708543,
"uname": "大家的音乐姬",
"title": "新曲推荐",
"cover": "http://i0.hdslb.com/bfs/music/a32c1ed4f6ec3f74f8240f4486a750dda3a509e5.jpg",
"intro": "每天11:00更新为你推送最新音乐",
"type": 2,
"off": 0,
"ctime": 1501209433,
"curtime": 1655713346,
"statistic": {
"sid": 10624,
"play": 2366255,
"collect": 20565,
"comment": 1104,
"share": 622
},
"snum": 16,
"attr": 0,
"isDefault": 0,
"collectionId": 0,
"audios": [{
"id": 1572281,
"title": "【Mitchie M】Nechusho No!No! (feat. 初音未来 & MEIKO)",
"duration": 112
}, {
"id": 1551077,
"title": "【洛天依原创】双星伴生",
"duration": 197
}, {
"id": 1544428,
"title": "【小柔】寄り酔いcover",
"duration": 216
}]
}, {
"menuId": 10627,
"uid": 32708543,
"uname": "大家的音乐姬",
"title": "热歌榜每日11:00更新",
"cover": "http://i0.hdslb.com/bfs/music/bc735b32ab123f7ddc602b9194defae2cd66062f.jpg",
"intro": "每日上午11:00更新精选三日内热门投稿作品。",
"type": 2,
"off": 0,
"ctime": 1501211353,
"curtime": 1655713346,
"statistic": {
"sid": 10627,
"play": 2289612,
"collect": 11437,
"comment": 434,
"share": 223
},
"snum": 20,
"attr": 0,
"isDefault": 0,
"collectionId": 0,
"audios": [{
"id": 1955567,
"title": "山海(原唱:草东没有派对)",
"duration": 215
}, {
"id": 923884,
"title": "platiunm",
"duration": 181
}, {
"id": 1954370,
"title": "Dark Dawn v1",
"duration": 200
}]
}, {
"menuId": 10628,
"uid": 32708543,
"uname": "大家的音乐姬",
"title": "原创榜每日11:00更新",
"cover": "http://i0.hdslb.com/bfs/music/58782504cefb307878d12422fd365ed7f971fad1.jpg",
"intro": "每日上午11:00更新精选三日内原创投稿音乐。",
"type": 2,
"off": 0,
"ctime": 1501211627,
"curtime": 1655713346,
"statistic": {
"sid": 10628,
"play": 395817,
"collect": 2583,
"comment": 314,
"share": 88
},
"snum": 20,
"attr": 0,
"isDefault": 0,
"collectionId": 0,
"audios": [{
"id": 923884,
"title": "platiunm",
"duration": 181
}, {
"id": 1954370,
"title": "Dark Dawn v1",
"duration": 200
}, {
"id": 1954654,
"title": "张真源 - 你要快乐 (Live)",
"duration": 235
}]
}, {
"menuId": 10629,
"uid": 32708543,
"uname": "大家的音乐姬",
"title": "中文人声三日榜",
"cover": "http://i0.hdslb.com/bfs/music/f547e3b96d3f283eaa6a3a071de22092fb5101f8.jpg",
"intro": "每日上午11:00更新精选三日内中文人声投稿音乐。",
"type": 2,
"off": 0,
"ctime": 1501211818,
"curtime": 1655713346,
"statistic": {
"sid": 10629,
"play": 842507,
"collect": 5102,
"comment": 362,
"share": 137
},
"snum": 20,
"attr": 0,
"isDefault": 0,
"collectionId": 0,
"audios": [{
"id": 1955567,
"title": "山海(原唱:草东没有派对)",
"duration": 215
}, {
"id": 1955546,
"title": "爱你",
"duration": 86
}, {
"id": 1954654,
"title": "张真源 - 你要快乐 (Live)",
"duration": 235
}]
}, {
"menuId": 10630,
"uid": 32708543,
"uname": "大家的音乐姬",
"title": "日文人声三日榜",
"cover": "http://i0.hdslb.com/bfs/music/7dd5d629f50481e22e2f5eced510f5fbd89f5233.jpg",
"intro": "每日上午11:00更新精选三日内日文人声投稿音乐。",
"type": 2,
"off": 0,
"ctime": 1501211959,
"curtime": 1655713346,
"statistic": {
"sid": 10630,
"play": 891268,
"collect": 8671,
"comment": 601,
"share": 169
},
"snum": 20,
"attr": 0,
"isDefault": 0,
"collectionId": 0,
"audios": [{
"id": 1954053,
"title": "派对浪客诸葛孔明 插入歌『ChocoPate』久远七海 starring Lezel",
"duration": 117
}, {
"id": 1956316,
"title": "ただ君に晴れ(只给予你的晴天)",
"duration": 196
}, {
"id": 1956321,
"title": "うまぴょい伝説(马儿蹦跳传说)",
"duration": 262
}]
}, {
"menuId": 10631,
"uid": 32708543,
"uname": "大家的音乐姬",
"title": "VOCALOID三日榜",
"cover": "http://i0.hdslb.com/bfs/music/ce8b1646cbbd5513de7976ba81d0fd9c340c1899.jpg",
"intro": "每日上午11:00更新精选三日内VOCALOID投稿音乐。",
"type": 2,
"off": 0,
"ctime": 1501212166,
"curtime": 1655713346,
"statistic": {
"sid": 10631,
"play": 170112,
"collect": 2900,
"comment": 528,
"share": 60
},
"snum": 10,
"attr": 0,
"isDefault": 0,
"collectionId": 0,
"audios": [{
"id": 1954717,
"title": "弦歌引-翻调",
"duration": 230
}, {
"id": 1956148,
"title": "告RADIO - 春色リップ",
"duration": 253
}, {
"id": 1954302,
"title": "susan说",
"duration": 195
}]
}]
}
}
```
</details>

View File

@ -0,0 +1,282 @@
# 音频流URL
<img src="../../assets/img/download.svg" width="100" height="100"/>
- [获取音频流URL无法获取付费音频web端](#获取音频流url无法获取付费音频web端)
- [获取音频流URL可获取付费音频双端](#获取音频流url可获取付费音频双端)
- [音频流的获取](#音频流的获取)
---
音质`qn`参数:
| 代码 | 含义 |
| ---- | -------------------- |
| 0 | 流畅 128K |
| 1 | 标准 192K |
| 2 | 高品质 320K |
| 3 | 无损 FLAC (大会员) |
## 获取音频流URL无法获取付费音频web端
> https://www.bilibili.com/audio/music-service-c/web/url
*请求方式GET*
**注web端无法播放完整付费歌曲付费歌曲为30s试听片段**
本接口仅能获取192K音质的音频
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| sid | num | 音频auid | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | -------- | ----------------------------------------------------------- |
| code | num | 返回值 | 0:成功<br />7201006未找到或已下架<br />72000000请求错误 |
| msg | str | 错误信息 | 默认为success |
| data | obj | 数据本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ----- | --------- | --------------------------------------- |
| sid | num | 音频auid | |
| type | num | 音质标识 | -1试听片段192K<br />1192K |
| info | str | 空 | **作用尚不明确** |
| timeout | num | 有效时长 | 单位为秒<br />一般为3h |
| size | num | 文件大小 | 单位为字节<br />当`type`为-1时`size`为0 |
| cdns | array | 音频流url | |
| qualities | null | - | |
| title | null | - | |
| cover | null | - | |
`data`对象的`cdns`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------- | ---- |
| 0 | str | 音频流url | |
| 1 | str | 备用音频流url | |
**示例:**
```shell
curl -G 'https://www.bilibili.com/audio/music-service-c/web/url' \
--data-urlencode 'sid=sid=15664'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "success",
"data": {
"sid": 15664,
"type": 1,
"info": "",
"timeout": 10800,
"size": 4853263,
"cdns": [
"https://upos-sz-mirrorkodo.bilivideo.com/ugaxcode/7bf6a3a3e94421ccc653f005457b1e8c-192k.m4a?deadline=1595331310&gen=uga&os=kodobv&uparams=deadline,gen,os&upsig=0ecd3c7a8d9539f260239d8fa4c093db",
"https://upos-sz-mirrorks3.bilivideo.com/ugaxcode/7bf6a3a3e94421ccc653f005457b1e8c-192k.m4a?deadline=1595331310&gen=uga&os=ks3bv&uparams=deadline,gen,os&upsig=f3fe53aff56655b1b7264ae4ab65872e"
],
"qualities": null,
"title": null,
"cover": null
}
}
```
</details>
## 获取音频流URL可获取付费音频双端
> https://api.bilibili.com/audio/music-service-c/url
*请求方式GET*
认证方式APP或CookieSESSDATA
**注付费音乐需要有带大会员或音乐包的账号登录Cookie或APP否则为试听片段**
无损音质需要登录的用户为会员
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------ | ----------- | -------------- |
| access_key | str | APP登录Token | APP方式必要 | |
| songid | num | 音频auid | 必要 | |
| quality | num | 音质代码 | 必要 | **详情见上表** |
| privilege | num | 必须为`2` | 必要 | |
| mid | num | 当前用户mid | 必要 | 可为任意值 |
| platform | str | 平台标识 | 必要 | 可为任意值 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | -------- | ----------------------------------------------------------- |
| code | num | 返回值 | 0:成功<br />7201006未找到或已下架<br />72000000请求错误 |
| msg | str | 错误信息 | 默认为success |
| data | obj | 数据本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ----- | ----------- | ------------------------------------------------------------ |
| sid | num | 音频auid | |
| type | num | 音质标识 | -1试听片段192K<br />0128K<br />1192K<br />2320K<br />3FLAC |
| info | str | 空 | **作用尚不明确** |
| timeout | num | 有效时长 | 单位为秒<br />一般为3h |
| size | num | 文件大小 | 单位为字节<br />当`type`为-1时`size`为0 |
| cdns | array | 音频流url | |
| qualities | array | 音质列表 | |
| title | str | 音频标题 | |
| cover | str | 音频封面url | |
`data`对象的`cdns`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------- | ---- |
| 0 | str | 音频流url | |
| 1 | str | 备用音频流url | |
`data`对象的`qualities`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ----------- | ---------------- |
| 0 | obj | 音质1 | 音质由高向低顺序 |
| n | obj | 音质n+1 | |
`qualities`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------- | ---- | ---------------- | ---------------------- |
| type | num | 音质代码 | **详情见上表** |
| desc | str | 音质名称 | |
| size | num | 该音质的文件大小 | 单位为字节 |
| bps | str | 比特率标签 | |
| tag | str | 音质标签 | |
| require | num | 是否需要会员权限 | 0不需要<br />1需要 |
| requiredesc | str | 会员权限标签 | |
**示例:**
获取音频`au682118`的音频流url音质为`3无损`
Cookie方式
```shell
curl -G 'https://api.bilibili.com/audio/music-service-c/url
--data-urlencode 'songid=682118' \
--data-urlencode 'quality=3' \
--data-urlencode 'privilege=2' \
--data-urlencode 'platform=android' \
--data-urlencode 'mid=293793435' \
-b 'SESSDATA=xxx'
```
APP方式
```shell
curl -G 'https://api.bilibili.com/audio/music-service-c/url
--data-urlencode 'access_key=xxx' \
--data-urlencode 'songid=682118' \
--data-urlencode 'quality=3' \
--data-urlencode 'privilege=2' \
--data-urlencode 'platform=android' \
--data-urlencode 'mid=293793435'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "success",
"data": {
"sid": 682118,
"type": 3,
"info": "",
"timeout": 10800,
"size": 34456494,
"cdns": [
"https://upos-sz-mirrorkodo.bilivideo.com/ugaxcode/m190102ws2pzf6jitbem841vq2x0du5x-flac.flac?deadline=1595332269&gen=uga&os=kodobv&uparams=deadline,gen,os&upsig=ac2284d97a61ef8758681eccf621c56d",
"https://upos-sz-mirrorks3.bilivideo.com/ugaxcode/m190102ws2pzf6jitbem841vq2x0du5x-flac.flac?deadline=1595332269&gen=uga&os=ks3bv&uparams=deadline,gen,os&upsig=3ac7d94dda5664f6f95dbfffeb289744"
],
"qualities": [
{
"type": 3,
"desc": "无损音质",
"size": 34456494,
"bps": "",
"tag": "SQ",
"require": 1,
"requiredesc": "付费享受"
},
{
"type": 2,
"desc": "高品质",
"size": 10788682,
"bps": "320kbit/s",
"tag": "HQ",
"require": 0,
"requiredesc": ""
},
{
"type": 1,
"desc": "标准",
"size": 6491973,
"bps": "192kbit/s",
"tag": "",
"require": 0,
"requiredesc": ""
},
{
"type": 0,
"desc": "流畅",
"size": 4343667,
"bps": "128kbit/s",
"tag": "",
"require": 0,
"requiredesc": ""
}
],
"title": "aLIEz",
"cover": "http://i0.hdslb.com/bfs/music/61d3f8cfdce14d2d1b006af59559c9bd22a2d21b.jpg"
}
}
```
</details>
## 音频流的获取
将`data`.`cdns`.`[0]`或`data`.`cdns`.`[1]`中的内容作为url进行GET操作
需要验证请求`user-agent` 不为空
**user-agent错误并且referer不在`*.bilibili.com`域名下的情况下会导致403 Forbidden故无法获取**
**以上述音频url为例**
```shell
wget 'https://upos-sz-mirrorkodo.bilivideo.com/ugaxcode/m190102ws2pzf6jitbem841vq2x0du5x-flac.flac?deadline=1595332269&gen=uga&os=kodobv&uparams=deadline,gen,os&upsig=ac2284d97a61ef8758681eccf621c56d' \
-O 'Download_music.flac'
```
响应正文将返回一个flac文件

View File

@ -0,0 +1,67 @@
# 音频状态数
- [歌曲状态数](#歌曲状态数)
---
## 歌曲状态数
>https://www.bilibili.com/audio/music-service-c/web/stat/song
*请求方式GET*
唯缺投币数2333333
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ---- |
| sid | num | 音频auid | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | -------- | ------------------------------- |
| code | num | 返回值 | 0成功<br />72000000参数错误 |
| msg | str | 错误信息 | 默认为success |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ---- |
| sid | num | 音频auid | |
| play | num | 播放次数 | |
| collect | num | 收藏数 | |
| comment | num | 评论数 | |
| share | num | 分享数 | |
**示例:**
查询歌曲`au15664`的状态数
```shell
curl -G 'https://www.bilibili.com/audio/music-service-c/web/stat/song' \
--data-urlencode 'sid=15664'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"msg": "success",
"data": {
"sid": 15664,
"play": 1377390,
"collect": 44340,
"comment": 2756,
"share": 4114
}
}
```
</details>

129
docs/bangumi/follow.md Normal file
View File

@ -0,0 +1,129 @@
# 追番相关
- [追番](#追番)
- [取消追番](#取消追番)
---
## 追番
> https://api.bilibili.com/pgc/web/follow/add
*请求方式POST*
鉴权方式CookieSESSDATA
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|----------|-----|--------|-----|-----|
| season_id | str | 剧集ssid | 必要 | |
| csrf | str | csrf token(位于cookies中的bili_jct) | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | ------ | ------------------------------- |
| code | num | 返回值 | 0成功<br />-111csrf校验失败 |
| message | str | 信息 | 成功时success |
| result | obj |见下表| |
根对象中的`result`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | ---------- | ---- |
| fmid | num | 0 | |
| relation | bool | false | |
| status | num | 2 | |
| toast | str | 自己追的番就要好好看完哟^o^ | |
**示例:**
追番`ssid=41410`的番剧
```shell
curl -G 'https://api.bilibili.com/pgc/web/follow/add' \
--data-urlencode 'season_id=41410' \
--data-urlencode 'csrf=xxx' \
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "success",
"result": {
"fmid": 0,
"relation": false,
"status": 2,
"toast": "自己追的番就要好好看完哟^o^"
}
}
```
</details>
## 取消追番
> https://api.bilibili.com/pgc/web/follow/del
*请求方式POST*
鉴权方式CookieSESSDATA
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| --------- | ---- | ----------------------------------- | ------ | ---- |
| season_id | str | 剧集ssid | 必要 | |
| csrf | str | csrf token(位于cookies中的bili_jct) | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | ------ | ------------------------------- |
| code | num | 返回值 | 0成功<br />-111csrf校验失败 |
| message | str | 信息 | 成功时success |
| result | obj | 见下表 | |
根对象中的`result`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | ---------- | ---- |
| fmid | num | 0 | |
| relation | bool | true | |
| status | num | 0 | |
| toast | str | 已取消追番 | |
**示例:**
取消`ssid=41410`的追番
```shell
curl -G 'https://api.bilibili.com/pgc/web/follow/del' \
--data-urlencode 'season_id=41410' \
--data-urlencode 'csrf=xxx' \
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "success",
"result": {
"fmid": 0,
"relation": false,
"status": 0,
"toast": "已取消追番"
}
}
```
</details>

1029
docs/bangumi/info.md Normal file

File diff suppressed because it is too large Load Diff

804
docs/bangumi/timeline.md Normal file
View File

@ -0,0 +1,804 @@
# 番剧或影视时间线
- [获取番剧或影视时间线](#获取番剧或影视时间线)
---
## 获取番剧或影视时间线
> https://api.bilibili.com/pgc/web/timeline
*请求方式GET*
鉴权方式CookieSESSDATA或APP
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| -------- | ---- | ------------ | ------ | ----------------------------- |
| types | str | 类别 | 必要 | 1`番剧`<br />3`电影`<br />4`国创` |
| before | num | 开始于前几日 | 必要 | ∈N∩[0,7] |
| after | num | 结束于后几日 | 必要 | ∈N∩[0,7] |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ----- | -------- | ------------------------------------------- |
| code | num | 返回值 | 0成功<br />-400请求错误<br />-404错误 |
| message | str | 错误信息 | 默认为success |
| result | array | 信息本体 | |
`result`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | --------------------------- | ---- |
| 0 | obj | `before`天前信息 | |
| n | obj | 从`before`天前开始第n天信息 | |
| …… | obj | …… | |
`result`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------- | ----- | -------------- | ----------------- |
| date | str | 当日日期 | |
| date_ts | num | 当日日期时间戳 | |
| day_of_week | num | 一周中第几天 | ∈N∩[1,7] |
| episodes | array | 剧集列表 | |
| is_today | num | 是否今日 | |
`result`数组中的对象中的`episodes`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ----------- | ---- |
| 0 | obj | 剧集1 | |
| n | obj | 剧集n+1 | |
| …… | obj | …… | |
`episodes`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------- | ---- | -------------- | --------------- |
| cover | str | 封面图url | |
| delay | num | 是否推迟 | |
| delay_id | num | 推迟一话epid | |
| delay_index | str | 推迟一话名称 | |
| delay_reason | str | 推迟原因 | |
| ep_cover | str | 最新一话图url | |
| episode_id | num | 最新一话的epid | |
| pub_index | str | 最新一话名称 | |
| pub_time | str | 发布时间 | |
| pub_ts | num | 发布时间戳 | |
| published | num | 是否已发布 | |
| follows | str | - | |
| plays | str | - | |
| season_id | num | 剧集ssid | |
| square_cover | str | 缩略图url | |
| title | str | 剧集标题 | |
**示例:**
查询从`3`天前到`7`天后的`番剧`时间轴
```shell
curl -G 'https://api.bilibili.com/pgc/web/timeline' \
--data-urlencode 'types=1' \
--data-urlencode 'before=3' \
--data-urlencode 'after=7' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "success",
"result": [
{
"date": "5-15",
"date_ts": 1652544000,
"day_of_week": 7,
"episodes": [
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/9918f6e67c26d6bd1ddad8dab70bcc7af3bfae9b.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/archive/0067a09911e2fa252a3ef5126d8dc5392189dd8a.jpg",
"episode_id": 508403,
"follows": "-",
"plays": "-",
"pub_index": "第3话",
"pub_time": "01:30",
"pub_ts": 1652549400,
"published": 1,
"season_id": 41416,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/926fd09277605204c2f7c94b322de3156ef9da52.png",
"title": "式守同学不只可爱而已"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/3a9815ca239735c51fc7daf2399c3721bbe00160.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/archive/56e8d4b13dac855c51060dcda286be049fde4a46.png",
"episode_id": 466766,
"follows": "-",
"plays": "-",
"pub_index": "第6话",
"pub_time": "11:00",
"pub_ts": 1652583600,
"published": 1,
"season_id": 41005,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/b3dd92da1ca35758f329fa5aa649991b118a98ca.png",
"title": "鬼灭之刃 无限列车篇 中配版"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/71d54cae830d32a5af776dcc46632146fbdba868.jpg",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/archive/00c1dff8457183671f0402e0a2826313a1994a9b.jpg",
"episode_id": 480434,
"follows": "-",
"plays": "-",
"pub_index": "第240话",
"pub_time": "17:30",
"pub_ts": 1652607000,
"published": 1,
"season_id": 5978,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/3121473d5dd03a9bcccb8490034207e724e731b3.jpg",
"title": "博人传 火影忍者新时代"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/91e75030be41d67b9f19b96bb512b0c98ae781bd.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/archive/e701f39cef52e6b0737e3463faf7cb0cee61e935.jpg",
"episode_id": 510647,
"follows": "-",
"plays": "-",
"pub_index": "第4话",
"pub_time": "20:00",
"pub_ts": 1652616000,
"published": 1,
"season_id": 41557,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/4329384cba4ab0390eae1a84a719e4649bf61cfb.png",
"title": "这个治疗有点烦"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/c9723d8c77d881a8debba2852d580e97826b43d0.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/archive/2a01ab590fd8b1331096b94cc6fc09dbdad1bbec.png",
"episode_id": 478918,
"follows": "-",
"plays": "-",
"pub_index": "第7话",
"pub_time": "21:00",
"pub_ts": 1652619600,
"published": 1,
"season_id": 41591,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/1ffa24e100583c3aa96812dea680943291c5c384.jpg",
"title": "恋爱游戏世界对路人角色很不友好"
}
],
"is_today": 0
},
{
"date": "5-16",
"date_ts": 1652630400,
"day_of_week": 1,
"episodes": [
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/e468c854628b97b5373baaf4c43e1346a9806baa.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/archive/219161297558531d2475da73e863dc237e83baa1.png",
"episode_id": 511342,
"follows": "-",
"plays": "-",
"pub_index": "第1话",
"pub_time": "20:00",
"pub_ts": 1652702400,
"published": 1,
"season_id": 41419,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/75a291010c128ce2de17267fd2a4842d19898236.png",
"title": "魔法使黎明期"
}
],
"is_today": 0
},
{
"date": "5-17",
"date_ts": 1652716800,
"day_of_week": 2,
"episodes": [
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/4e6c505b1b1631c542ea76c3da1ce08bb43faad6.jpg",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/archive/bf37e15c52889a7a9dca16346354bb7c6663c899.png",
"episode_id": 510132,
"follows": "-",
"plays": "-",
"pub_index": "第146话",
"pub_time": "18:00",
"pub_ts": 1652781600,
"published": 1,
"season_id": 23841,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/5c2f289eac0ec49bc5e6b9483f4191c42ffa2254.jpg",
"title": "美妙☆频道"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/9eef1df9ab157be52d2c4d70d3500442f00cafc3.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/archive/d9831c3170bcbba38edc2204ee5059f583823913.png",
"episode_id": 509043,
"follows": "-",
"plays": "-",
"pub_index": "第11话",
"pub_time": "18:00",
"pub_ts": 1652781600,
"published": 1,
"season_id": 38950,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/13fd7c96659a20c61409e155a2a913a59348d122.png",
"title": "魔法纪录 魔法少女小圆外传 第二季"
}
],
"is_today": 0
},
{
"date": "5-18",
"date_ts": 1652803200,
"day_of_week": 3,
"episodes": [
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/fba0229f1a6eec6ed692b7ae91c634d5cbde0727.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/0ebefe529449ff98d544395d1576402bb0d0ae5b.png",
"episode_id": 510498,
"follows": "-",
"plays": "-",
"pub_index": "第7话",
"pub_time": "21:00",
"pub_ts": 1652878800,
"published": 0,
"season_id": 41413,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/247f8326019e035338529306e94baea3336c43b4.png",
"title": "盾之勇者成名录 第二季"
}
],
"is_today": 1
},
{
"date": "5-19",
"date_ts": 1652889600,
"day_of_week": 4,
"episodes": [
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/99277ce3f41d1cb4dcda9f6010ebe9c9e6d345e5.jpg",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/c989d496e3a075e8bc134b0d4d53d6ca5c2ae634.jpg",
"episode_id": 510760,
"follows": "-",
"plays": "-",
"pub_index": "第2话",
"pub_time": "12:00",
"pub_ts": 1652932800,
"published": 0,
"season_id": 41417,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/ef45828cb99309169e95d1bf54ec833d7968bf22.png",
"title": "夏日重现"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/1cd26af47cf9d9ca045ec36f56ce14a66867438d.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/3dc8d348937528779b7ad9a3070d37276518080f.png",
"episode_id": 399655,
"follows": "-",
"plays": "-",
"pub_index": "第50话",
"pub_time": "18:00",
"pub_ts": 1652954400,
"published": 0,
"season_id": 38353,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/4bd7b0a4c270ce62ca2adf3e18487a96e4fde92e.png",
"title": "通灵王"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/5f5b16bc8edd1310fbf0ac8bce04a11144dc858e.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/aed167a32445ed294ea75ed674442c766d56cb2a.png",
"episode_id": 511494,
"follows": "-",
"plays": "-",
"pub_index": "第4话",
"pub_time": "23:00",
"pub_ts": 1652972400,
"published": 0,
"season_id": 41422,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/924c550415ccdd142145dbf102bd81fcbb018ffd.png",
"title": "骸骨骑士大人奇幻世界冒险中"
}
],
"is_today": 0
},
{
"date": "5-20",
"date_ts": 1652976000,
"day_of_week": 5,
"episodes": [
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/a29f3b00a94d1b4a029054f72963cc10d98bae99.jpg",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/4b9b98677b039b9126614f5a5259aa1484cea227.jpg",
"episode_id": 510757,
"follows": "-",
"plays": "-",
"pub_index": "第2话",
"pub_time": "01:28",
"pub_ts": 1652981280,
"published": 0,
"season_id": 41520,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/2a0ca7be587039eef380f802f8ae71bd21d2ea2c.png",
"title": "街角魔族 第二季"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/ecb52c79def9f5a6099c5a0770f56e20479fb008.jpg",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/36d3079e1b24395b07f9f95128adc9568459c3e5.png",
"episode_id": 478238,
"follows": "-",
"plays": "-",
"pub_index": "第17话",
"pub_time": "02:25",
"pub_ts": 1652984700,
"published": 0,
"season_id": 40873,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/13f437706d3f27dee7566a5e489928605663e40f.png",
"title": "川尻小玉的懒散生活"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/a7517ca25c5c7a132a16f589e3a3c4d9f49af196.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/17f34f6c51b8b9371af1998f0612d51f0ba03df2.png",
"episode_id": 508842,
"follows": "-",
"plays": "-",
"pub_index": "第6话",
"pub_time": "07:00",
"pub_ts": 1653001200,
"published": 0,
"season_id": 41534,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/3267da68f7f832ccfc7eaa77c6ab3fb806d2de98.png",
"title": "银河英雄传说:全新命题 激战"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/fecb68763f24d371167389abedf05742b0bf024f.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/f4116e5dcc44d6104cd72d9e0e833cde3959a835.png",
"episode_id": 476164,
"follows": "-",
"plays": "-",
"pub_index": "第32话",
"pub_time": "18:25",
"pub_ts": 1653042300,
"published": 0,
"season_id": 38366,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/56b8e4369871fc0c55bfa9df3f3f8002d40f0691.png",
"title": "妖怪手表"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/81c9dc929e6071a2d42f1b5a207bbcef4a1aead7.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/7c62ad9f559ee6b0fafc1c08d990636c21c4fa8d.png",
"episode_id": 510653,
"follows": "-",
"plays": "-",
"pub_index": "第7话",
"pub_time": "21:30",
"pub_ts": 1653053400,
"published": 0,
"season_id": 41432,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/930ae7ff644dc31ada9abcb3ea30fee5fbc6f397.png",
"title": "约会大作战 第四季"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/d464543dd6720efd43e5487acee74b646423b4d1.jpg",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/ca7a19d51feb54162d8f286af416aa5a804e72c4.png",
"episode_id": 511497,
"follows": "-",
"plays": "-",
"pub_index": "第7话",
"pub_time": "22:00",
"pub_ts": 1653055200,
"published": 0,
"season_id": 41418,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/ab50117450baffba62c71c80052ecbad1842a1f3.png",
"title": "恋爱要在世界征服后"
}
],
"is_today": 0
},
{
"date": "5-21",
"date_ts": 1653062400,
"day_of_week": 6,
"episodes": [
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/68aee547fc85b1eab8be3d5c7e946276e4252b79.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/75583ce830522c6fd391cd6ffac31e3ab96db50e.png",
"episode_id": 510568,
"follows": "-",
"plays": "-",
"pub_index": "第8话",
"pub_time": "00:30",
"pub_ts": 1653064200,
"published": 0,
"season_id": 39725,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/a4fa3f4ecaa4efc883aa1ef2ca7ed736edb38b8c.png",
"title": "理科生坠入情网,故尝试证明。 第二季"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/f711a34e0f18293ba5068fd85d8de891bb01c2be.jpg",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/aa3e0fc7ecb422c7c8ed107267befaa18f6dcf89.png",
"episode_id": 510935,
"follows": "-",
"plays": "-",
"pub_index": "第8话",
"pub_time": "00:30",
"pub_ts": 1653064200,
"published": 0,
"season_id": 41506,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/d2dea82606b8dd0ee7934c62dbc7016b0a17255f.png",
"title": "处刑少女的生存之道"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/91ec1f4bc4af307dbfbd68c9ba6d838b27adee0f.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/6d9499e4e5453e5e353939980524102c3b707edb.png",
"episode_id": 477129,
"follows": "-",
"plays": "-",
"pub_index": "第8话",
"pub_time": "01:25",
"pub_ts": 1653067500,
"published": 0,
"season_id": 39180,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/f23cf19d1d6068e83edfd6b3d207ce692ef58ef3.png",
"title": "测不准的阿波连同学"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/bad807ac5a8d4094ead26c08ec2d9b97dbb8c4a1.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/8e563a29a9fb6b91df791a12eb5f869d038fc1e9.png",
"episode_id": 510677,
"follows": "-",
"plays": "-",
"pub_index": "第2话",
"pub_time": "02:00",
"pub_ts": 1653069600,
"published": 0,
"season_id": 41533,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/4ef341fa95646a7c2549e08ba00358b411fba0ee.png",
"title": "舞动不止"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/4ab5cf1efbd1c5883b8f0580cb0304f5452c4665.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/8ea1f90444d04a0b989584df9f18e59a824b0e90.png",
"episode_id": 341403,
"follows": "-",
"plays": "-",
"pub_index": "第71话",
"pub_time": "09:30",
"pub_ts": 1653096600,
"published": 0,
"season_id": 34425,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/ae36d43ebe7ea7176d18bab794de3d8930284feb.png",
"title": "勇者斗恶龙 达伊的大冒险"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/23f393513ab8fdfbb351aa80e8b7423e7361ad98.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/d470a1bf53c96210f2238024dc1947f52cb58f3a.png",
"episode_id": 510681,
"follows": "-",
"plays": "-",
"pub_index": "第2话",
"pub_time": "18:00",
"pub_ts": 1653127200,
"published": 0,
"season_id": 41535,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/f3f69f8747e8464ba46b9bbe24678966809c8021.png",
"title": "Love All Play热血羽毛球"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/38e2a273f528fd01c34f1fc4df0f69c64487efad.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/6c108526eade13d04882b803f1d1e0dfe2a1886e.png",
"episode_id": 459329,
"follows": "-",
"plays": "-",
"pub_index": "第1101话",
"pub_time": "19:30",
"pub_ts": 1653132600,
"published": 0,
"season_id": 33378,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/ecc9a64f3f43eb00ee2bf1549b6ab76182cf5f8b.png",
"title": "名侦探柯南"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/f641f81aa1933d73c91d5ef76b525acbcdbcf3e7.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/c7ccf71fcf65b4e5655403b01a7af3529d2891e8.png",
"episode_id": 510754,
"follows": "-",
"plays": "-",
"pub_index": "第10话",
"pub_time": "20:00",
"pub_ts": 1653134400,
"published": 0,
"season_id": 39433,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/1b4cc42a3909ad2d03563d3163b105c6cad80d20.png",
"title": "鬼灭之刃 游郭篇"
}
],
"is_today": 0
},
{
"date": "5-22",
"date_ts": 1653148800,
"day_of_week": 7,
"episodes": [
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/3a9815ca239735c51fc7daf2399c3721bbe00160.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/30908825b7c8076b9d7b58d8cd949a87f48866e6.png",
"episode_id": 466767,
"follows": "-",
"plays": "-",
"pub_index": "第7话",
"pub_time": "11:00",
"pub_ts": 1653188400,
"published": 0,
"season_id": 41005,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/b3dd92da1ca35758f329fa5aa649991b118a98ca.png",
"title": "鬼灭之刃 无限列车篇 中配版"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/71d54cae830d32a5af776dcc46632146fbdba868.jpg",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/3baf5335e3f1df882b54d69c0c6c9ffa76069eef.png",
"episode_id": 480435,
"follows": "-",
"plays": "-",
"pub_index": "第241话",
"pub_time": "17:30",
"pub_ts": 1653211800,
"published": 0,
"season_id": 5978,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/3121473d5dd03a9bcccb8490034207e724e731b3.jpg",
"title": "博人传 火影忍者新时代"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/91e75030be41d67b9f19b96bb512b0c98ae781bd.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/cff6617c1c7e28f8cd9db3d33d5366a5029e3aa9.png",
"episode_id": 510648,
"follows": "-",
"plays": "-",
"pub_index": "第5话",
"pub_time": "20:00",
"pub_ts": 1653220800,
"published": 0,
"season_id": 41557,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/4329384cba4ab0390eae1a84a719e4649bf61cfb.png",
"title": "这个治疗有点烦"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/c9723d8c77d881a8debba2852d580e97826b43d0.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/c91b2b96c272eb28aa3dd74aa58fc272fc62d577.png",
"episode_id": 478919,
"follows": "-",
"plays": "-",
"pub_index": "第8话",
"pub_time": "21:00",
"pub_ts": 1653224400,
"published": 0,
"season_id": 41591,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/1ffa24e100583c3aa96812dea680943291c5c384.jpg",
"title": "恋爱游戏世界对路人角色很不友好"
}
],
"is_today": 0
},
{
"date": "5-23",
"date_ts": 1653235200,
"day_of_week": 1,
"episodes": [
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/e468c854628b97b5373baaf4c43e1346a9806baa.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/26f87214a2481680a93bfda294ac080c0b336a40.png",
"episode_id": 511343,
"follows": "-",
"plays": "-",
"pub_index": "第2话",
"pub_time": "20:00",
"pub_ts": 1653307200,
"published": 0,
"season_id": 41419,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/75a291010c128ce2de17267fd2a4842d19898236.png",
"title": "魔法使黎明期"
}
],
"is_today": 0
},
{
"date": "5-24",
"date_ts": 1653321600,
"day_of_week": 2,
"episodes": [
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/4e6c505b1b1631c542ea76c3da1ce08bb43faad6.jpg",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/4e6c505b1b1631c542ea76c3da1ce08bb43faad6.jpg",
"episode_id": 510133,
"follows": "-",
"plays": "-",
"pub_index": "第147话",
"pub_time": "18:00",
"pub_ts": 1653386400,
"published": 0,
"season_id": 23841,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/5c2f289eac0ec49bc5e6b9483f4191c42ffa2254.jpg",
"title": "美妙☆频道"
},
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/9eef1df9ab157be52d2c4d70d3500442f00cafc3.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/a651c55bb430cdea19d5f4253969d1f7b83567c7.png",
"episode_id": 509044,
"follows": "-",
"plays": "-",
"pub_index": "第12话",
"pub_time": "18:00",
"pub_ts": 1653386400,
"published": 0,
"season_id": 38950,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/13fd7c96659a20c61409e155a2a913a59348d122.png",
"title": "魔法纪录 魔法少女小圆外传 第二季"
}
],
"is_today": 0
},
{
"date": "5-25",
"date_ts": 1653408000,
"day_of_week": 3,
"episodes": [
{
"cover": "http://i0.hdslb.com/bfs/bangumi/image/fba0229f1a6eec6ed692b7ae91c634d5cbde0727.png",
"delay": 0,
"delay_id": 0,
"delay_index": "",
"delay_reason": "",
"ep_cover": "http://i0.hdslb.com/bfs/bangumi/image/0ebefe529449ff98d544395d1576402bb0d0ae5b.png",
"episode_id": 510499,
"follows": "-",
"plays": "-",
"pub_index": "第8话",
"pub_time": "21:00",
"pub_ts": 1653483600,
"published": 0,
"season_id": 41413,
"square_cover": "http://i0.hdslb.com/bfs/bangumi/image/247f8326019e035338529306e94baea3336c43b4.png",
"title": "盾之勇者成名录 第二季"
}
],
"is_today": 0
}
]
}
```
</details>

View File

@ -0,0 +1,366 @@
# 视频流URL
<img src="../../assets/img/download.svg" width="100" height="100"/>
B站的番剧视频为http流媒体需要对应的api以视频id获取取流url并进行取流
- [qn视频清晰度标识](#qn视频清晰度标识)
- [fnver视频流版本标识](#fnver视频流版本标识)
- [fnval视频流格式标识](#fnval视频流格式标识)
- [视频伴音音质代码](#视频伴音音质代码)
- [获取番剧视频流URL](#获取番剧视频流URL)
- [视频的取流web端及APP端](#视频的取流web端及APP端)
---
## qn视频清晰度标识
**注该值在dash模式且非下载模式时无效**
| 值 | 含义 | 备注 |
|-----|-------------|-----------------------------------------------------------------------------|
| 6 | 240P 极速 | 仅mp4方式支持 |
| 16 | 360P 流畅 | |
| 32 | 480P 清晰 | |
| 64 | 720P 高清 | web端默认值<br />B站前端需要登录才能选择但是直接发送请求可以不登录就拿到720P的取流地址<br />**无720P时则为720P60** |
| 74 | 720P60 高帧率 | 需要认证登录账号 |
| 80 | 1080P 高清 | TV端与APP端默认值<br />需要认证登录账号 |
| 112 | 1080P+ 高码率 | 大多情况需求认证大会员账号 |
| 116 | 1080P60 高帧率 | 大多情况需求认证大会员账号 |
| 120 | 4K 超清 | 需要`fnval&128=128`且`fourk=1`<br />大多情况需求认证大会员账号 |
| 125 | HDR 真彩色 | 仅支持dash方式<br />需要`fnval&64=64`<br />大多情况需求认证大会员账号 |
| 126 | 杜比视界 | 仅支持dash方式<br />需要`fnval&512=512`<br />大多情况需求认证大会员账号 |
| 127 | 8K 超高清 | 仅支持dash方式<br />需要`fnval&1024=1024`<br />大多情况需求认证大会员账号 |
例如请求1080P+的视频,则`qn=112`
## fnver视频流版本标识
目前该值恒为0即`fnver=0`
## fnval视频流格式标识
该代码为二进制属性位,如需组合功能需要使用`OR`运算结合一下数值
| 值 | 含义 | 备注 |
|------|-------------|-------------------------------------------------------------|
| 0 | flv格式 | 仅H.264编码<br />部分老视频存在分段现象<br />与mp4格式及dash格式互斥 |
| 1 | mp4格式 | 仅H.264编码<br />不存在视频分段<br />与flv格式及dash格式互斥 |
| 16 | dash格式 | H.264编码或H.265编码<br />部分老视频的清晰度上限低于flv格式<br />与mp4格式及flv格式互斥 |
| 64 | 是否需求 HDR 视频 | 必须为dash格式<br />需要`qn=125`<br />大多情况需求认证大会员账号 |
| 128 | 是否需求 4K 分辨率 | 该值与`fourk`字段协同作用<br />需要`qn=120`<br />大多情况需求认证大会员账号 |
| 256 | 是否需求杜比音频 | 必须为dash格式<br />大多情况需求认证大会员账号 |
| 512 | 是否需求杜比视界 | 必须为dash格式<br />大多情况需求认证大会员账号 |
| 1024 | 是否需求 8K 分辨率 | 必须为dash格式<br />需要`qn=127`<br />大多情况需求认证大会员账号 |
| 2048 | 是否需求 av1 编码 | 必须为dash格式 |
例如请求dash格式且需要HDR的视频流则`fnval=16|64=80`
## 视频编码代码
| 值 | 含义 | 备注 |
|-----|--------|----------|
| 7 | AVC编码 | 8K视频无此格式 |
| 12 | HEVC编码 | |
| 13 | AV1编码 | |
## 视频伴音音质代码
| 值 | 含义 |
|-------|------|
| 30216 | 64K |
| 30232 | 132K |
| 30280 | 192K |
## 获取番剧视频流URL
> https://api.bilibili.com/pgc/player/web/playurl
*请求方式GET*
认证方式CookieSESSDATA
---
关于视频流会员鉴权:
- 获取480P及以上清晰度视频时需要登录Cookie
- 获取高帧率1080P60/高码率1080P+视频时需要有大会员的账号登录Cookie
- 获取会员专属番剧视频时需要登录Cookie
---
获取的url有效时间为120min超时失效需要重新获取
**部分视频**会有**分段**,需要特别注意
若视频有分P仅为单P的视频的url换P则需更换cid重新获取
需要设置Referer为`https://www.bilibili.com`否则无法获取1080清晰度以上的流信息。
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
|---------------|-----|----------|--------|--------------------------------------------------------------------------------------------------|
| avid | num | 稿件avid | 非必要 | |
| bvid | str | 稿件bvid | 非必要 | |
| ep_id | num | 稿件epid | 必要(可选) | ep_id与cid任选一个 |
| cid | num | 视频cid | 必要(可选) | ep_id与cid任选一个 |
| qn | num | 视频清晰度选择 | 非必要 | 未登录默认32480P<br />登录默认64720P<br />**值含义见上表**<br />dash方式无效 |
| fnval | num | 视频获取方式选择 | 非必要 | 默认为0<br />0 2flv方式可能会有分段<br />1低清mp4方式仅240P与360P且限速65K/s<br />16 80dash方式音视频分流支持H.265 |
| fnver | num | 0 | 非必要 | 固定为0 |
| fourk | num | 是否允许4K视频 | 非必要 | 默认为0<br />画质最高1080P0<br />画质最高4K1 |
| session | str | | 非必要 | 从视频播放页的网页源码中获取 |
| from_client | str | BROWSER | 非必要 | |
| drm_tech_type | num | 2 | 非必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
|---------|-----------------------|------|------------------------------------|
| code | num | 返回值 | 0成功 <br />-400请求错误<br />-404无视频 |
| message | str | 错误信息 | 成功为success |
| result | 有效时obj<br />无效时null | 数据本体 | |
`result`对象:
| 字段 | 类型 | 内容 | 备注 |
|--------------------|-------|-----------------------------------|----------------------------|
| code | num | 0 | 作用尚不明确 |
| is_preview | num | 0 | 作用尚不明确 |
| fnver | num | 请求时提供的fnver | |
| fnval | num | 请求时提供的fnval | |
| video_project | bool | true | |
| type | str | 视频流类型DASH、FLV、MP4 | DASH |
| bp | num | 是否可以承包 | 0 |
| vip_type | num | 当前用户大会员类型 | |
| vip_status | num | 当前用户大会员状态 | |
| is_drm | bool | false | |
| no_rexcode | num | 0 | |
| has_paid | bool | false | |
| status | num | 2 | |
| from | str | local | 作用尚不明确 |
| result | str | suee | 作用尚不明确 |
| message | str | 空 | 作用尚不明确 |
| quality | num | 当前的视频分辨率代码 | **值含义见上表** |
| format | str | 视频格式 | |
| timelength | num | 视频长度 | 单位为毫秒<br />不同分辨率/格式可能有略微差异 |
| accept_format | str | 视频支持的全部格式 | 每项用`,`分隔 |
| accept_description | array | 视频支持的分辨率列表 | |
| accept_quality | array | 视频支持的分辨率代码列表 | **值含义见上表** |
| video_codecid | num | 默认选择视频流的编码id | 见**视频编码代码** |
| seek_param | str | 固定值start | 作用尚不明确 |
| seek_type | str | offsetdash、flv<br/> secondmp4 | 作用尚不明确 |
| durl | array | 视频分段 | **注仅flv/mp4存在此项** |
| dash | obj | dash音视频流信息 | **注仅dash存在此项** |
| support_formats | array | 支持格式的详细信息 | |
| clip_info_list | array | | 空,待补充 |
| record_info | obj | 备案登记信息 | |
`result`中的`accept_description`数组:
| 项 | 类型 | 内容 | 备注 |
|-----|-----|------------|-----|
| 0 | str | 分辨率名称1 | |
| n | str | 分辨率名称(n+1) | |
| …… | str | …… | |
`result`中的`accept_quality`数组:
| 项 | 类型 | 内容 | 备注 |
|-----|-----|------------|-----|
| 0 | str | 分辨率代码1 | |
| n | str | 分辨率代码(n+1) | |
| …… | str | …… | |
`result`中的`support_formats`数组:
| 项 | 类型 | 内容 | 备注 |
|-----|-----|---------------|-----|
| 0 | obj | 播放格式详细信息1 | |
| n | obj | 播放格式详细信息(n+1) | |
| …… | obj | …… | |
`support_formats`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
|-----------------|-------|---------|-----|
| quality | num | 视频清晰度代码 | |
| format | str | 视频格式 | |
| new_description | str | 格式描述 | |
| description | str | 格式描述 | |
| display_desc | str | 格式描述 | |
| superscript | str | (?) | |
| codecs | array | 编码格式列表 | |
| need_login | bool | 需要登录 | |
| need_vip | bool | 需要大会员 | |
`support_formats`中的`codecs`数组:
| 项 | 类型 | 内容 | 备注 |
|-----|-----|------|-----------------------------|
| 0 | str | 编码格式 | 如avc1.640032意为AVC编码 |
| 1 | str | 编码格式 | 如hev1.1.6.L153.90意为HEVC编码 |
`result`中的`record_info`对象:
| 项 | 类型 | 内容 | 备注 |
|-------------|-----|------|-----------------------|
| record_icon | str | 空串 | |
| record | str | 显示文案 | 登记号10417060172092207 |
---
**flv/mp4方式**
`result`中的`durl`数组:
| 项 | 类型 | 内容 | 备注 |
|-----|-----|-------------|------------------|
| 0 | obj | 视频分段1信息 | **注仅flv方式具有分段** |
| n | obj | 视频分段(n+1)信息 | |
| …… | obj | …… | |
`durl`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
|------------|-------|--------|-----------------------------------|
| order | num | 视频分段序号 | 某些视频会分为多个片段从1顺序增长 |
| length | num | 视频长度 | 单位为毫秒 |
| size | num | 视频大小 | 单位为Byte |
| vhead | str | 空 | 作用尚不明确 |
| url | str | 视频流url | **注url内容存在转义符**<br />有效时间为120min |
| backup_url | array | 备用视频流 | |
`durl`数组中的对象中的`backup_url`数组:
| 项 | 类型 | 内容 | 备注 |
|-----|-----|----------------|-----------------------------------|
| 0 | str | 备用视频流url 1 | **注url内容存在转义符**<br />有效时间为120min |
| n | str | 备用视频流url (n+1) | |
| …… | str | …… | |
**示例:**
**视频无分段时:**
获取视频`ep85046`/`av2325306`中的1Pcid=`3629601`的视频流url清晰度为480p使用flv方式获取
avid/epid方式
```shell
curl -G 'https://api.bilibili.com/pgc/player/web/playurl' \
--data-urlencode 'avid=2325306' \
--data-urlencode 'cid=3629601' \
--data-urlencode 'ep_id=85046' \
-b 'SESSDATA=xxx'
```
https://api.bilibili.com/pgc/player/web/playurl?avid=2325306&cid=3629601&ep_id=85046
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "success",
"result": {
"accept_format": "flv480,mp4",
"code": 0,
"seek_param": "start",
"is_preview": 0,
"fnval": 0,
"video_project": true,
"fnver": 0,
"type": "FLV",
"bp": 0,
"result": "suee",
"seek_type": "offset",
"from": "local",
"video_codecid": 7,
"record_info": {
"record_icon": "",
"record": ""
},
"durl": [
{
"size": 111138876,
"ahead": "",
"length": 1394090,
"vhead": "",
"backup_url": [
"https://upos-sz-mirrorcoso1.bilivideo.com/upgcxcode/01/96/3629601/3629601_da8-1-32.flv?e=ig8euxZM2rNcNbRVhwdVhwdlhWdVhwdVhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1656098195&gen=playurlv2&os=coso1bv&oi=2946990771&trid=a1db84b216ea45dd89225f02a09093fdp&mid=0&platform=pc&upsig=878be08cc0e6bdea705952529e7e6785&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=1,3&agrr=1&bw=79726&logo=40000000",
"https://upos-sz-mirrorcos.bilivideo.com/upgcxcode/01/96/3629601/3629601_da8-1-32.flv?e=ig8euxZM2rNcNbRVhwdVhwdlhWdVhwdVhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1656098195&gen=playurlv2&os=cosbv&oi=2946990771&trid=a1db84b216ea45dd89225f02a09093fdp&mid=0&platform=pc&upsig=8c31064c84d8e981704815992cfe315c&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=2,3&agrr=1&bw=79726&logo=40000000"
],
"url": "https://cn-lnsy-cu-v-02.bilivideo.com/upgcxcode/01/96/3629601/3629601_da8-1-32.flv?e=ig8euxZM2rNcNbRVhwdVhwdlhWdVhwdVhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1656098195&gen=playurlv2&os=bcache&oi=2946990771&trid=0000a1db84b216ea45dd89225f02a09093fdp&mid=0&platform=pc&upsig=7a5c4f25b9056359127191390a73bedc&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&cdnid=3281&bvc=vod&nettype=0&orderid=0,3&agrr=1&bw=79726&logo=80000000",
"order": 1,
"md5": ""
}
],
"no_rexcode": 0,
"format": "flv480",
"support_formats": [
{
"display_desc": "480P",
"superscript": "",
"codecs": [ ],
"format": "flv480",
"description": "清晰 480P",
"quality": 32,
"new_description": "480P 清晰"
},
{
"display_desc": "360P",
"superscript": "",
"codecs": [ ],
"format": "mp4",
"description": "流畅 360P",
"quality": 16,
"new_description": "360P 流畅"
}
],
"message": "",
"accept_quality": [
32,
16
],
"quality": 32,
"timelength": 1394090,
"has_paid": false,
"clip_info_list": [ ],
"accept_description": [
"清晰 480P",
"流畅 360P"
],
"status": 2
}
}
```
</details>
## 视频的取流web端及APP端
**注意:**
1. 如flv模式则可能产生分段情况将`$.data.durl[1-n].url`或`$.data.durl[1-n].backup_url[0]`中的内容作为url进行GET操作, 如果有多个视频, 需要手动合并处理
2. 如mp4模式则需要获取对应的视频流方法同上
3. 如dash模式则需要同时获取对应的视频流和伴音流方法同上
4. web端取流需要验证防盗链即`referer`为 `.bilibili.com`域名下且UA不能为空app端也需要验证防盗链即UA需要含有`Mozilla/5.0 BiliDroid/*.*.* (bbcallen@gmail.com)`*为版本);如`referer`或UA错误的情况会被判定为盗链返回403 Forbidden故无法取流
5. **注意unicode转义符**
以上述视频流url为例
```shell
wget 'https://upos-sz-mirrorhwo1.bilivideo.com/upgcxcode/01/96/3629601/3629601_da8-1-32.flv?e=ig8euxZM2rNcNbRVhwdVhwdlhWdVhwdVhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1656098026&gen=playurlv2&os=hwo1bv&oi=0&trid=f0a1d2d854264369803462f3dd524154p&mid=0&platform=pc&upsig=76c1438153942fda51fbf4eb07e6e5a1&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,mid,platform&bvc=vod&nettype=0&orderid=0,2&agrr=1&bw=79726&logo=80000000' \
--referer 'https://www.bilibili.com' \
-O 'Download_video.flv'
```
响应正文将返回一个flv文件

304
docs/blackroom/banlist.md Normal file
View File

@ -0,0 +1,304 @@
# 封禁公示
- [获取封禁用户公示列表](#获取封禁用户公示列表)
- [封禁处理公示详情](#封禁处理公示详情)
---
###### 表1已知的封禁原因类型代码总览
| 代码 | 含义 |
| ---- | -------------------- |
| 1 | 刷屏 |
| 2 | 抢楼 |
| 3 | 发布色情低俗信息 |
| 4 | 发布赌博诈骗信息 |
| 5 | 发布违禁相关信息 |
| 6 | 发布垃圾广告信息 |
| 7 | 发布人身攻击言论 |
| 8 | 发布侵犯他人隐私信息 |
| 9 | 发布引战言论 |
| 10 | 发布剧透信息 |
| 11 | 恶意添加无关标签 |
| 12 | 恶意删除他人标签 |
| 13 | 发布色情信息 |
| 14 | 发布低俗信息 |
| 15 | 发布暴力血腥信息 |
| 16 | 涉及恶意投稿行为 |
| 17 | 发布非法网站信息 |
| 18 | 发布传播不实信息 |
| 19 | 发布怂恿教唆信息 |
| 20 | 恶意刷屏 |
| 21 | 账号违规 |
| 22 | 恶意抄袭 |
| 23 | 冒充自制原创 |
| 24 | 发布青少年不良内容 |
| 25 | 破坏网络安全 |
| 26 | 发布虚假误导信息 |
| 27 | 仿冒官方认证账号 |
| 28 | 发布不适宜内容 |
| 29 | 违反运营规则 |
| 30 | 恶意创建话题 |
| 31 | 发布违规抽奖 |
| 32 | 恶意冒充他人 |
###### 表2已知的违规类型代码
| 代码 | 含义 |
| ---- | -------- |
| 0 | 全部类型 |
| 1 | 评论 |
| 2 | 弹幕 |
| 3 | 私信 |
| 4 | 标签 |
| 5 | 个人资料 |
| 6 | 投稿 |
| 8 | 专栏 |
| 10 | 动态 |
| 11 | 相簿 |
## 获取封禁用户公示列表
> https://api.bilibili.com/x/credit/blocked/list
*请求方式GET*
每页最多10项
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------- | ------ | ------------------------------------------------------------ |
| btype | num | 来源筛选 | 非必要 | 空:全部类型<br />`0`:系统封禁<br />`1`:风纪仲裁(仲裁系统升级后此类型已不再更新) |
| otype | num | 类型筛选 | 非必要 | **见[表2](#表2已知的违规类型代码)**<br />默认为`0`:全部类型 |
| pn | num | 页码 | 非必要 | 默认为`1` |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ------ | -------- | ------------ |
| code | num | 返回值 | `0`:成功 |
| message | str | 错误信息 | 默认为`0` |
| ttl | num | `1` | |
| data | array | 公示列表 | |
`data`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ------ | --------------- | ---- |
| 0 | object | 封禁公示1 | |
| n | object | 封禁公示n+1 | |
| …… | object | …… | …… |
`data`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------------- | ---- | ---------------- | ------------------------------------------- |
| id | num | 封禁公示id | |
| uname | str | 对象用户名 | |
| face | str | 对象用户头像url | |
| uid | num | 对象用户mid | |
| originTitle | str | 来源标题 | |
| blockedRemark | str | | |
| originUrl | str | 来源url | |
| originContentModify | str | 裁决正文 | |
| originType | num | 来源类型 | **见[表2](#表2已知的违规类型代码)** |
| originTypeName | str | 来源名 | |
| punishTitle | str | 公示标题 | |
| punishTime | num | 处罚时间 | 时间戳 |
| punishType | num | 处理手段类型 | `2`:封禁<br />`3`:永久封禁 |
| punishTypeName | str | 处理手段名 | |
| moralNum | num | `0`节操值 | 被封禁用户节操值均为`0` |
| blockedDays | num | 封禁天数 | 永封为`0` |
| publishStatus | num | `1` | 作用尚不明确 |
| blockedType | num | 处理来源 | `0`:系统封禁<br />1风纪仲裁 |
| blockedForever | num | 是否永封 | `0`:非永封<br />`1`:永封 |
| reasonType | num | 封禁原因类型 | **见[表1](#表1已知的封禁原因类型代码总览)** |
| reasonTypeName | str | 封禁原因类型名称 | |
| operatorName | str | 空 | 作用尚不明确 |
| caseId | num | 仲裁信息id | 系统封禁时固定为0 |
| ctime | num | 创建时间 | 时间戳 |
| commentSum | num | 该条目评论数 | |
**示例:**
查询所有类型所有来源的第1页的封禁公示列表
```shell
curl -G 'https://api.bilibili.com/x/credit/blocked/list' \
--data-urlencode 'btype=' \
--data-urlencode 'otype=0' \
--data-urlencode 'pn=1'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": [{
"id": 1118220,
"uname": "漫城林语",
"face": "http://i2.hdslb.com/bfs/face/970f2da4a58f83879e69e259f4a9d3587cba03f0.jpg",
"uid": 135913,
"originTitle": "【罗翔】聊聊网络喷子与键盘侠",
"blockedRemark": "内容涉及人身攻击",
"originUrl": "https://www.bilibili.com/video/av752825895",
"originContentModify": "<p>案情:</p><p>1、大量刷屏/引战</p><p>我看新闻了竹鼠全部被ZF无害化处理了看的爽死我了亏死你们啊哈哈哈x10</p><p>【BV16g4y187he2020-4-21 104623104647】</p><p>2、大量人身攻击</p><p>N * * L</p><p>Deine Mu**er ist tot. x10</p><p>【BV1rk4y1R7id2020-4-21 203108203223】</p><p>3、引战</p><p>每次看他厨房乱七八糟的可能有数不清的小强你们还看美食看的有味也是奇PA</p><p>【BV1Kg4y1z7mA2020-4-22&nbsp; 005237】<br/></p><p>批注:</p><p>满地狼藉招摇过,人皆愤懑怒拳握。</p><p>余恶不堪漏夜扫,正气于心涤龌龊。</p><p><br/></p><p>(发现违规引战、人身攻击、刷屏评论,请按照相应分类进行举报。若发现反复进行上述行为,可联系工作人员反馈相关违规账号信息,我们会予以排查。)</p><p>(案例感想请发布在小黑屋评论区讨论,请勿骚扰被封禁的用户)</p><p>【本次判罚为管理员判定,请注意案件右上无蓝色标记(风纪委员众裁)】</p><p><br/></p>",
"originType": 1,
"originTypeName": "评论",
"punishTitle": "在评论中发布人身攻击言论",
"punishTime": 1587494264,
"punishType": 3,
"punishTypeName": "永久封禁",
"moralNum": 0,
"blockedDays": 0,
"publishStatus": 1,
"blockedType": 0,
"blockedForever": 1,
"reasonType": 7,
"reasonTypeName": "发布人身攻击言论",
"operatorName": "",
"caseId": 0,
"ctime": 1587494264,
"commentSum": 606
}, {
"id": 1091621,
"uname": "风纪委员会会长零八",
"face": "http://i1.hdslb.com/bfs/face/6ea4296f7591b9a724f540a41d48df728a0881b0.jpg",
"uid": 305542374,
"originTitle": "巅峰赛大乔游走辅助,队友说自家法师湖南卫视都不敢像法师这么演哈哈!",
"blockedRemark": "内容涉及传播不实信息",
"originUrl": "https://www.bilibili.com/video/av882552073",
"originContentModify": "<p>具体违规情况说明:</p><ol class=\" list-paddingleft-2\" style=\"list-style-type: decimal;\"><li><p>经查实确认,该账号<span style=\"text-decoration: underline;\">从未申请</span><span style=\"text-decoration: underline;\">从未担任</span>过风纪委员职务。</p></li><li><p>发布多条 “您的稿件/评论涉及违规,即将下架/删除”的恐吓性言论。</p></li><li><p>谎称曾经封禁了某个up主事实上风纪委员<span style=\"text-decoration: underline;\">无法封禁up主投稿</span>且该up也从未被封禁。</p></li><li><p>威胁他人“要不要到小黑屋坐坐”,事实上风纪委员无法直接封禁用户。通过管理员封禁或风纪委员投票封禁的账号亦有据实申诉的机会。</p></li><li><p>故意挑衅他人“那你可以试着骂我,我们试试(举报)有没有用”。</p></li><li><p>误导他人“此评论区和弹幕无需保持礼仪”。</p></li></ol><p>批注:</p><p>如您发现假冒风纪委员身份招摇撞骗、炫耀风纪委员身份、借风纪委员职务之便威胁恐吓他人、在风纪观点中发布违规内容等违规行为请及时联系我们进行举报。您可直接将举报材料发送至judgement@bilibili.com。</p><p>(案例感想请发布在小黑屋评论区讨论,请勿骚扰被封禁的用户)</p><p>【本次判罚为管理员判定,请注意案件右上无蓝色标记(风纪委员众裁)】</p>",
"originType": 1,
"originTypeName": "评论",
"punishTitle": "在评论中发布传播不实信息",
"punishTime": 1585560309,
"punishType": 2,
"punishTypeName": "封禁",
"moralNum": 0,
"blockedDays": 15,
"publishStatus": 1,
"blockedType": 0,
"blockedForever": 0,
"reasonType": 18,
"reasonTypeName": "发布传播不实信息",
"operatorName": "",
"caseId": 0,
"ctime": 1585560309,
"commentSum": 2379
},
…………
]
}
```
</details>
## 封禁处理公示详情
> https://api.bilibili.com/x/credit/blocked/info
*请求方式GET*
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ---------- | ------ | ---- |
| id | num | 封禁公示id | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----------------------------------------------- |
| code | num | 返回值 | 0成功<br />-400请求错误<br />-404无此信息 |
| message | str | 错误信息 | 默认为`0` |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------------- | ---- | ---------------- | ------------------------------------------- |
| id | num | 封禁公示id | |
| uname | str | 对象用户名 | |
| face | str | 对象用户头像url | |
| uid | num | 对象用户mid | |
| originTitle | str | 来源标题 | |
| blockedRemark | str | | |
| originUrl | str | 来源url | |
| originContentModify | str | 裁决正文 | |
| originType | num | 来源类型 | **见[表2](#表2已知的违规类型代码)** |
| originTypeName | str | 来源名 | |
| punishTitle | str | 公示标题 | |
| punishTime | num | 处罚时间 | 时间戳 |
| punishType | num | 处理手段类型 | `2`:封禁<br />`3`:永久封禁 |
| punishTypeName | str | 处理手段名 | |
| moralNum | num | `0`节操值 | 被封禁用户节操值均为`0` |
| blockedDays | num | 封禁天数 | 永封为`0` |
| publishStatus | num | `1` | 作用尚不明确 |
| blockedType | num | 处理来源 | `0`:系统封禁<br />`1`:风纪仲裁 |
| blockedForever | num | 是否永封 | `0`:非永封<br />`1`:永封 |
| reasonType | num | 封禁原因类型 | **见[表1](#表1已知的封禁原因类型代码总览)** |
| reasonTypeName | str | 封禁原因类型名称 | |
| operatorName | str | 空 | 作用尚不明确 |
| caseId | num | 仲裁信息id | 系统封禁时固定为0 |
| ctime | num | 创建时间 | 时间戳 |
| commentSum | num | 该条目评论数 | |
**示例:**
查询公示id为`1091621`的公示详情
```shell
curl -G 'https://api.bilibili.com/x/credit/blocked/info' \
--data-urlencode 'id=1091621'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"id": 1091621,
"uname": "风纪委员会会长零八",
"face": "http://i1.hdslb.com/bfs/face/6ea4296f7591b9a724f540a41d48df728a0881b0.jpg",
"uid": 305542374,
"originTitle": "巅峰赛大乔游走辅助,队友说自家法师湖南卫视都不敢像法师这么演哈哈!",
"blockedRemark": "内容涉及传播不实信息",
"originUrl": "https://www.bilibili.com/video/BV1qK4y1C7dd",
"originContentModify": "<p>具体违规情况说明:</p><ol class=\" list-paddingleft-2\" style=\"list-style-type: decimal;\"><li><p>经查实确认,该账号<span style=\"text-decoration: underline;\">从未申请</span><span style=\"text-decoration: underline;\">从未担任</span>过风纪委员职务。</p></li><li><p>发布多条 “您的稿件/评论涉及违规,即将下架/删除”的恐吓性言论。</p></li><li><p>谎称曾经封禁了某个up主事实上风纪委员<span style=\"text-decoration: underline;\">无法封禁up主投稿</span>且该up也从未被封禁。</p></li><li><p>威胁他人“要不要到小黑屋坐坐”,事实上风纪委员无法直接封禁用户。通过管理员封禁或风纪委员投票封禁的账号亦有据实申诉的机会。</p></li><li><p>故意挑衅他人“那你可以试着骂我,我们试试(举报)有没有用”。</p></li><li><p>误导他人“此评论区和弹幕无需保持礼仪”。</p></li></ol><p>批注:</p><p>如您发现假冒风纪委员身份招摇撞骗、炫耀风纪委员身份、借风纪委员职务之便威胁恐吓他人、在风纪观点中发布违规内容等违规行为请及时联系我们进行举报。您可直接将举报材料发送至judgement@bilibili.com。</p><p>(案例感想请发布在小黑屋评论区讨论,请勿骚扰被封禁的用户)</p><p>【本次判罚为管理员判定,请注意案件右上无蓝色标记(风纪委员众裁)】</p>",
"originType": 1,
"originTypeName": "评论",
"punishTitle": "在评论中发布传播不实信息",
"punishTime": 1585560309,
"punishType": 2,
"punishTypeName": "封禁",
"moralNum": 0,
"blockedDays": 15,
"publishStatus": 1,
"blockedType": 0,
"blockedForever": 0,
"reasonType": 18,
"reasonTypeName": "发布传播不实信息",
"operatorName": "",
"caseId": 0,
"ctime": 1585560309,
"commentSum": 2379
}
}
```
</details>

View File

@ -0,0 +1,367 @@
# 仲裁操作
- [申请加入风纪委员会](#申请加入风纪委员会)
- [拉取新案件](#拉取新案件)
- [进行仲裁投票](#进行仲裁投票)
---
## 申请加入风纪委员会
> https://api.bilibili.com/x/credit/v2/jury/apply
*请求方式POST*
认证方式Cookie
只有用户会员90天内无违规、实名认证且非封禁状态才可以申请加入风纪委员会
申请成功后可获得30天资格
**正文参数( application/x-www-form-urlencoded**
| 参数名 | 类型 | 内容 | 必要性 |
| ------ | ---- | ---------------------- | ------ |
| csrf | str | cookie中`bili_jct`的值 | 必要 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | ------ | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-111csrf 校验失败<br />25001申请等级限制(会员等级<3)<br />25002没有实名认证<br />2500390天内有封禁记录<br />25013不能重复申请风纪委资格<br />25016当日风纪委员名额已发完 |
| message | str | 信息 | 默认为0 |
| ttl | num | 1 | |
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>
#### 旧API
<details>
<summary>查看旧版API</summary>
> https://api.bilibili.com/x/credit/jury/apply
*请求方式POST*
认证方式CookieSESSDATA或APP
只有用户会员等级≥Lv4、90天内无违规、实名认证且非封禁状态才可以申请加入风纪委员会
每日10:00开放新名额
申请成功后可获得30天资格
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------------------ | -------------- | ---- |
| access_key | str | APP登录Token | APP方式必要 | |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | ------ | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-111csrf 校验失败<br />25001申请等级限制(会员等级<3)<br />25002没有实名认证<br />2500390天内有封禁记录<br />25013不能重复申请风纪委资格<br />25016当日风纪委员名额已发完 |
| message | str | 信息 | 默认为0 |
| ttl | num | 1 | |
**示例:**
Cookie方式
```shell
curl 'https://api.bilibili.com/x/credit/jury/apply' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
APP方式
```shell
curl 'https://api.bilibili.com/x/credit/jury/apply' \
--data-urlencode 'access_key=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>
</details>
## 拉取新案件
> https://api.bilibili.com/x/credit/v2/jury/case/next
*请求方式GET*
认证方式Cookie
**标头参数Headers**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------ | ------ | ---- |
| Cookie | str | Cookie | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ------ | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br/>25006风纪委员资格已过期<br />25008没有案件<br/>25014已审满 |
| message | str | 信息 | 默认为0当code不为0时显示错误信息 |
| ttl | num | 1 | 作用尚不明确 |
| data | object | 数据本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | ---------- | ---- |
| case_id | str | 仲裁案件id | |
**示例:**
Cookie方式
```shell
curl -G 'https://api.bilibili.com/x/credit/v2/jury/case/next' \
--header 'cookie: XXXXX'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"case_id": "AC2m4HlrIrHv"
}
}
```
</details>
#### 旧API
<details>
<summary>查看旧版API</summary>
> https://api.bilibili.com/x/credit/jury/caseObtain
*请求方式POST*
认证方式CookieSESSDATA或APP
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------------------ | -------------- | ---- |
| access_key | str | APP登录Token | APP方式必要 | |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ------ | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br/>25005不是风纪委员<br />25008没有案件<br/>25014已审满 |
| message | str | 信息 | 默认为0 |
| ttl | num | 1 | 作用尚不明确 |
| data | object | 数据本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---------- | ---- |
| id | num | 仲裁案件id | |
**示例:**
Cookie方式
```shell
curl 'https://api.bilibili.com/x/credit/jury/caseObtain' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
APP方式
```shell
curl 'https://api.bilibili.com/x/credit/jury/caseObtain' \
--data-urlencode 'access_key=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"id": 1239790
}
}
```
</details>
</details>
## 进行仲裁投票
> https://api.bilibili.com/x/credit/v2/jury/vote
*请求方式POST*
认证方式Cookie
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| --------- | ---- | ---------------------- | ------ | ----------------------------------------------------- |
| case_id | str | 案件id | 必要 | |
| vote | num | 投票类型 | 必要 | 见「[众裁信息](judgement_info.md)」中表 |
| insiders | num | 是否观看此类视频 | 非必要 | 默认值为0<br/>见「[众裁信息](judgement_info.md)」中表 |
| content | str | 理由 | 非必要 | |
| anonymous | num | 是否匿名 | 非必要 | 默认值为0<br/>0不匿名<br />1匿名 |
| csrf | str | cookie中`bili_jct`的值 | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | ------ | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br/>-101未登录<br />-111csrf 错误<br />-400请求错误投票类型错误<br />25005不是风纪委员<br />25011投票类型错误<br />25018不能进行此操作<br/><br/>*注:新版本对于一个不存在的`case_id`,不会报错。* |
| message | str | 信息 | 默认为0 |
| ttl | num | 1 | 作用尚不明确 |
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>
#### 旧API
<details>
<summary>查看旧版API</summary>
> https://api.bilibili.com/x/credit/jury/vote
*请求方式POST*
认证方式CookieSESSDATA或APP
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------------- | ---- | ------------------------ | -------------- | --------------------------------------- |
| cid | num | 案件id | 必要 | |
| vote | num | 投票类型 | 必要 | 见「[众裁信息](judgement_info.md)」中表 |
| content | str | 理由 | 非必要 | 见「[众裁信息](judgement_info.md)」中表 |
| likes | nums | 支持的观点 | 非必要 | |
| hates | nums | 反对的观点 | 非必要 | |
| attr | num | 是否匿名 | 非必要 | 0匿名<br />1不匿名 |
| apply_type | num | 是否更改原因 | 非必要 | 0保持原来原因<br />1投票给新原因 |
| origin_reason | num | 原始原因 | 非必要 | 见「封禁公示」中表 |
| apply_reason | num | 新原因 | 非必要 | 见「封禁公示」中表 |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | ------ | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br/>-101未登录<br />-111csrf 错误<br />-400请求错误投票类型错误<br />25005不是风纪委员<br />25009 案件不存在<br/>25011投票类型错误<br />25012重复投票 |
| message | str | 信息 | 默认为0 |
| ttl | num | 1 | 作用尚不明确 |
**示例:**
为案件`2333`投票,建议封禁,无理由,不匿名,无支持/反对观点,不修改投票原因
Cookie方式
```shell
curl 'https://api.bilibili.com/x/credit/jury/vote' \
--data-urlencode 'cid=2333' \
--data-urlencode 'vote=1' \
--data-urlencode 'content=' \
--data-urlencode 'likes=' \
--data-urlencode 'hates=' \
--data-urlencode 'attr=1' \
--data-urlencode 'apply_type=0' \
--data-urlencode 'origin_reason=' \
--data-urlencode 'apply_reason=' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
APP方式
```shell
curl 'https://api.bilibili.com/x/credit/jury/vote' \
--data-urlencode 'access_key=xxx' \
--data-urlencode 'cid=2333' \
--data-urlencode 'vote=1' \
--data-urlencode 'content=' \
--data-urlencode 'likes=' \
--data-urlencode 'hates=' \
--data-urlencode 'attr=1' \
--data-urlencode 'apply_type=0' \
--data-urlencode 'origin_reason=' \
--data-urlencode 'apply_reason='
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>
</details>

View File

@ -0,0 +1,338 @@
# 风纪委员会用户基本信息
- [基本数据](#基本数据)
- [统计信息](#统计信息)
- [新API2021年10月任期之后](#新api2021年10月任期之后)
- [旧API](#旧api)
- [检查申请风纪委员会资格](#检查申请风纪委员会资格)
---
## 基本数据
> https://api.bilibili.com/x/credit/v2/jury/jury
_请求方式GET_
认证方式CookieSESSDATA或 APP
**url 参数:**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | -------------- | ------------ | ---- |
| access_key | str | APP 登录 Token | APP 方式必要 | |
**json 回复:**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ------ | -------- | ----------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录 |
| message | str | 信息 | 默认为 0 |
| ttl | num | 1 | |
| data | object | 数据本体 | |
`data` 对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------ | ---- | ------------ | -------------------------------------------------------------------------------------------------- |
| allow_apply | bool | true | 尚不明确(用户从未担任风纪委员时也为 true |
| apply_status | num | 任期审核状态 | -1 资格失效,且未申请<br />0 刚申请连任时<br />5 申请后,等待审核<br />3 申请连任成功status 为 1 |
| case_total | num | 总众裁数 | |
| err_msg | str | 空 | 尚不明确 |
| face | str | 用户头像 url | |
| status | num | 当前资格状态 | 0 未曾拥有资格<br />1 任期内<br />2 资格失效 |
| term_end | num | 任期结束时间 | 时间戳(秒级),无任期时为 0 |
| uname | str | 用户昵称 | |
**旧API**
部分字段信息停留在 2021 年 10 月。
<details>
<summary>查看旧 api</summary>
> https://api.bilibili.com/x/credit/jury/jury (旧)
根数据与新 API 一致,`data` 对象:
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ---- | -------------------- | ---------------------------- |
| caseTotal | num | 总众裁数 | |
| face | str | 用户头像 url | |
| restDays | num | 当前资格剩余天数 | 自 2021 年 10 月起,固定为 0 |
| rightRadio | num | 当前裁决正确率百分比 | 裁决数小于 3 时固定为 50 |
| status | num | 当前状态 | 1具有资格<br />2资格失效 |
| uname | str | 用户昵称 | |
</details>
## 统计信息
#### 新API2021年10月任期之后
>https://api.bilibili.com/x/credit/v2/jury/kpi
*方式GET*
认证方式Cookie
***备注**该api只收录2021年10月开始风纪委员改版之后的数据且每次只返回一次任期的数据。*
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------- | ---- | ------- | ------------ | -------------------------------------- |
| term_id | num | 任期 id | 可不传此参数或将值留空或设为`0` | 未传参或留空时,**只**返回最近一次已结束的任期的数据 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ------ | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />25018不能进行此操作还没有成为新风纪委员或传入了不属于你的`term_id` |
| message | str | 信息 | 默认为 0 |
| ttl | num | 1 | |
| data | object | 数据本体 | |
`data` 对象:
| 项 | 类型 | 内容 | 备注 |
| --------------- | ------ | ------------------ | ------------------------------------------------------------ |
| mid | num | 用户 UID | |
| uname | str | 留空 | |
| face | str | 留空 | |
| term_id | num | 任期 ID | 未传入`term_id`时返回的是最近一次已结束的任期的id |
| term_start | num | 任期开始时间 | 时间戳,精确到秒 |
| term_end | num | 任期结束时间 | 时间戳,精确到秒 |
| case_total | num | 任内总投票数 | |
| active_days | num | 活跃天数 | |
| like_num | num | 发表观点,被点赞数 | |
| accuracy_rate | num | 投中率 | 所选观点与大多数风纪委员一致,记为一次“投中” |
| pass | num | 任期是否合格 | 0 不合格<br />1 合格 |
| status | num | 当前资格状态 | 0 未曾拥有资格<br />1 任期内<br />2 资格失效 |
| apply_status | num | 当前资格申请状态 | -1 资格失效,且未申请<br />0 刚申请连任时<br />5 申请后,等待审核<br />3 申请连任成功status 为 1 |
| prev_term_id | num | 上一任期的任期 ID | 新版风纪委员启用后的第一个任期,此项的值为 0 |
| next_term_id | num | 下一任期的任期 ID | 若当前任期尚未结束,此项的值为 0 |
| rewards | object | 任期奖励 | 有`pendant`和`coin`两个子项 |
| rewards.pendant | num | 头像挂件礼包 ID | 合格后一般为 1不合格为 0 |
| rewards.coin | num | 硬币礼包 ID | 合格后一般为 3不合格为 0 |
<details>
<summary>查看响应示例:</summary>
注:本示例未传入`term_id`,返回的是最近一次已结束任期的统计结果
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"mid": 10001,
"uname": "",
"face": "",
"term_id": 300009,
"term_start": 1669100000,
"term_end": 1671690000,
"case_total": 591,
"active_days": 30,
"like_num": 0,
"accuracy_rate": 74,
"pass": 1,
"status": 1,
"apply_status": 3,
"prev_term_id": 300007,
"next_term_id": 0,
"rewards": {
"pendant": 1,
"coin": 3
}
}
}
```
</details>
#### 旧API
<details>
<summary>查看旧 api</summary>
> https://api.bilibili.com/x/credit/jury/kpi (旧)
*方式GET*
认证方式CookieSESSDATA或APP
***备注**该api只统计到2021年9月任期风纪委员改版之前。风纪委员改版之后的数据未收录*
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------ | ----------- | ---- |
| access_key | str | APP登录Token | APP方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ----- | -------- | ----------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录 |
| message | str | 信息 | 默认为0 |
| ttl | num | 1 | |
| data | array | 数据本体 | |
`data`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ----------------- | ---- |
| 0 | obj | 第1个月统计 | |
| n | obj | 第n+1个月统计 | |
| …… | obj | …… | …… |
`data` 数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------- | ---- | -------------------------------- | --------------------- |
| id | num | 0 | |
| mid | num | 用户id | |
| number | num | 风纪委员编号 | |
| day | num | 数据生成时间(也是任期结束时间) | 时间戳,精确到秒 |
| rate | num | 任期完成度 | 1=A2=S3=S+4=S++ |
| rank | num | 尚不明确 | |
| rankper | num | 尚不明确 | |
| rankTotal | num | 尚不明确 | |
| point | num | 32767 | |
| activeDays | num | 活跃天数 | |
| voteTotal | num | 投票总数 | |
| voteRadio | num | 投中率 | |
| blockedTotal | num | 尚不明确 | |
| termStart | num | 任期开始时间 | 时间戳,精确到秒 |
| termEnd | num | 任期结束时间(数据生成时间一致) | 时间戳,精确到秒 |
| opinion_likes | num | 观点获赞 | |
**示例:**
Cookie方式
```shell
curl 'https://api.bilibili.com/x/credit/jury/kpi' \
-b 'SESSDATA=xxx'
```
APP方式
```shell
curl -G 'https://api.bilibili.com/x/credit/jury/kpi' \
--data-urlencode 'access_key=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": [
{
"id": 0,
"mid": 114343368,
"number": 199046,
"day": 1539792000,
"rate": 1,
"rank": 0,
"rankper": 1,
"rankTotal": 39584,
"point": 32767,
"activeDays": 23,
"voteTotal": 422,
"voteRadio": 0,
"blockedTotal": 0,
"termStart": 1537200000,
"termEnd": 1539792000,
"opinion_likes": 18
}
]
}
```
</details>
</details>
## 检查申请风纪委员会资格
> ~~https://api.bilibili.com/x/credit/jury/requirement~~ (旧版)
> https://api.bilibili.com/x/credit/v2/jury/requirement (新版)
*请求方式GET*
认证方式CookieSESSDATA或APP
新版 api 与旧版的区别仅在新版没有 `level` 字段(新版风纪委员没有等级限制)。
只有用户~~会员等级≥Lv4、~~ 90 天内无违规、实名认证且非封禁状态才可以申请加入风纪委员会。
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------ | ----------- | ---- |
| access_key | str | APP登录Token | APP方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ------ | -------- | ----------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录 |
| message | str | 信息 | 默认为0 |
| ttl | num | 1 | |
| data | object | 数据本体 | |
`data` 对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | ---------------- | ------------------------------------- |
| blocked | bool | 是否被封禁 | true<br />false<br />**下同** |
| cert | bool | 是否实名认证 | |
| level | bool | 等级是否>=4 | 新版无该字段 |
| rule | bool | 是否90天内无违规 | |
**示例:**
Cookie方式
```shell
curl 'https://api.bilibili.com/x/credit/v2/jury/requirement' \
-b 'SESSDATA=xxx'
```
APP方式
```shell
curl -G 'https://api.bilibili.com/x/credit/v2/jury/requirement' \
--data-urlencode 'access_key=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"blocked": false,
"cert": true,
"rule": true
}
}
```
</details>

View File

@ -0,0 +1,998 @@
# 众裁信息
- [查询投票过的单个案件](#查询投票过的单个案件)
- [查询案件众裁信息](#查询案件众裁信息)
- [查询我的众裁记录](#查询我的众裁记录)
- [获取众议观点](#获取众议观点)
---
<table>
<tr>
<th colspan="3">投票类型码总览</th>
</tr >
<tr>
<td>代码</td>
<td>含义</td>
</tr>
<tr>
<td >0</td>
<td>未投票</td>
</tr>
<tr>
<td >1</td>
<td>封禁</td>
</tr>
<tr>
<td>2</td>
<td></td>
</tr>
<tr>
<td>3</td>
<td>弃权</td>
</tr>
<tr>
<td>4</td>
<td>删除</td>
</tr>
</table>
<table>
<tr>
<th colspan="3">投票选项码总览</th>
</tr >
<tr>
<td >任务类型</td>
<td>代码</td>
<td>含义</td>
</tr>
<tr >
<td rowspan="4">单条评论(弹幕)</td>
<td >1</td>
<td>合适</td>
</tr>
<tr>
<td>2</td>
<td>一般</td>
</tr>
<tr>
<td>3</td>
<td>不合适</td>
</tr>
<tr>
<td>4</td>
<td>无法判断</td>
</tr>
<tr>
<td rowspan="4">评论(弹幕)氛围</td>
<td>11</td>
<td></td>
</tr>
<tr>
<td>12</td>
<td>一般</td>
</tr>
<tr>
<td>13</td>
<td></td>
</tr>
<tr>
<td>14</td>
<td>无法判断</td>
</tr>
</table>
## 查询投票过的单个案件
> https://api.bilibili.com/x/credit/v2/jury/case/info
*请求方式GET*
认证方式CookieSESSDATA或APP
可查询任意案件,无论自己是否参与投票。
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ------------ | ------ | ------------- | ------------- |
| access_key | str | APP登录Token | APP方式必要 | |
| case_id | str | 案件id | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ------ | -------- | ------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-400请求错误 |
| message | str | 信息 | 默认为0 |
| ttl | num | 1 | |
| data | object | 数据本体 | |
`data` 对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ------ | -------- | ------------ |
| case_id | str | 案件id | |
| case_type | num | 任务类型 | 1单条评论<br />2评论氛围<br />3单条弹幕<br />4弹幕氛围 |
| jury_state | num | `1` | 改版后未见过其它值 |
| participate | num | 是否投票 | 0未投票<br />1已投票 |
| vote_items | object | 投票选项 | 见开头「投票选项码总览」 |
| default_vote | num | 默认投票选项 | `4`或`14`即`无法判断` |
| status | num | 裁决状态(新版) | 0进行中<br />1已结束 |
| origin_start | num | 案件关联视频,播放进度条起始坐标 | 单位:`秒` |
| avid | num | 视频av号 | |
| cid | num | 弹幕池id | 弹幕相关参见「[xml弹幕](https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/danmaku/danmaku_xml.md)」 |
| vote_cd | num | `-1` | 暂不明确 |
| result | num | 众议结论 | 见开头「投票选项码总览」 |
| result_text | str | 众议结论文本 | |
| title | str | 视频标题 | |
| case_info | object | 案件信息 | 见「[附表1](#附表1data-对象下的case_info对象)」 |
| my_point | object | 我的观点 | 见「[附表4](#附表4data-对象下的my_point对象)」 |
| vote_info | object | 投票信息 | 见「[附表5](#附表5data-对象下的vote_info对象)」 |
###### 附表1`data` 对象下的`case_info`对象
| 字段 | 类型 | 内容 | 备注 |
| ------------ | ------ | ------------ | ------------------------------------------------------------ |
| comment | object | 单条评论信息 | 仅当`case_type`为`1`有值。见「[附表2](#附表2评论信息)」 |
| danmu_img | str | 弹幕截图 | 仅当`case_type`为`4`有值截图URL |
| comments | object | 若干条评论 | 仅当`case_type`为`2`有值。见「[附表2](#附表2评论信息)」 |
| single_danmu | str | 单条弹幕信息 | 仅当`case_type`为`3`有值。见「[附表3](#附表3弹幕信息)」 |
###### 附表2评论信息
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
| mid | num | 用户uid | |
| uname | str | 用户名 | |
| face | str | 用户头像 | 头像URL |
| content | str | 评论内容 | |
| child_comments | object | 子评论(对该评论的回复) | 见「[附表2](#附表2评论信息)」,单条评论和子评论下无`child_comments`字段 |
###### 附表3弹幕信息
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | -------- | ------------------------------------------------------------ |
| id_str | str | 弹幕dmid | 见「[xml弹幕](https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/danmaku/danmaku_xml.md#%E5%B1%9E%E6%80%A7-p)」 |
| content | str | 弹幕内容 | |
| progress | num | | 尚不明确 |
###### 附表4`data` 对象下的`my_point`对象
记录了某个风纪委员的某个投票(观点)信息
| 字段 | 类型 | 内容 | 备注 |
| ----------- | ---- | ---------------- | ------------------------------------------------------------ |
| opid | num | 观点编号 | 每当某个一个风纪委员给某个仲裁案件发表观点,就+1 |
| mid | num | 风纪委员用户ID | |
| uname | str | 风纪委员用户名 | 风纪委勾选匿名投票则显示“匿名用户” |
| face | str | 头像URL | 头像 |
| vote | num | 投票选项 | “合适题”分别为 `1` 或者 `2` 或者 `3` 或者 `4`<br/>对应:“合适”、“一般”、“不合适”、“无法判断”<br/><br/>“氛围题”分别为 `11` 或者 `12` 或者 `13` 或者 `14`<br/>对应:“好”、“一般”、“差”、“无法判断”<br/><br/>注释<br/>合适题:“单条弹幕(评论)是否合适?”<br/>氛围题:“弹幕(评论区)氛围如何” |
| vote_text | | 内容为空 | *现在系统已不再展示其他风纪委所投的票* |
| content | str | 观点内容 | 该风纪委员所发表的观点内容 |
| anonymous | num | 0 | 尚不明确 |
| like | num | 被点赞数量 | |
| hate | num | 被点踩数量 | |
| like_status | num | 点赞(踩)状态 | 本账号是否给该条评论点赞:<br/>0没做操作1给评论点赞2给评论点踩 |
| vote_time | num | 投票时间 | 时间戳,精确到秒 |
| insiders | num | 是否观看此类视频 | 1平时观看此类视频0平时不观看此类视频 |
###### 附表5`data` 对象下的`vote_info`对象
| 字段 | 类型 | 内容 | 备注 |
| --------------- | ----- | -------- | -------------------------------------------- |
| all_count | num | 总投票数 | |
| counts | array | 观点分布 | 格式:`[合适, 一般, 不合适, 无法判断]` |
| insiders_counts | array | 行为分布 | 格式:`[平时会看此类视频, 平时不看此类视频]` |
**示例:**
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"case_id": "AC2SiaD8jlrL",
"case_type": 3,
"jury_state": 1,
"participate": 1,
"vote_items": [
{
"vote": 1,
"vote_text": "合适"
},
{
"vote": 2,
"vote_text": "一般"
},
{
"vote": 3,
"vote_text": "不合适"
},
{
"vote": 4,
"vote_text": "无法判断"
}
],
"default_vote": 4,
"status": 1,
"origin_start": 0,
"avid": 727792866,
"cid": 756815216,
"vote_cd": -1,
"result": 3,
"result_text": "不合适",
"title": "“国家队”守门员和朋友打赌,谁能在湿滑的地面踢进足球就送美刀",
"case_info": {
"comment": null,
"danmu_img": "",
"comments": null,
"single_danmu": {
"id_str": "1086612690354524160",
"content": "这守门员干啥呢?给块骨头我家狗都比他防的好",
"progress": 27859
}
},
"my_point": {
"opid": 10001,
"mid": 10001,
"uname": "风纪委员用户名",
"face": "http://i0.hdslb.com/bfs/face/e48952d599dbf011c2235239fafa2bf0deccef5a.jpg",
"vote": 3,
"vote_text": "不合适",
"content": "",
"anonymous": 0,
"like": 0,
"hate": 0,
"like_status": 0,
"vote_time": 1663655000,
"insiders": 1
},
"vote_info": {
"all_count": 306,
"counts": [90, 33, 177, 6],
"insiders_counts": [245, 61]
}
}
}
```
</details>
#### 旧 api
<details>
<summary>查看旧 api</summary>
> https://api.bilibili.com/x/credit/jury/juryCase
*请求方式GET*
认证方式CookieSESSDATA或APP
只能查询自己参与众裁的
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ------------ | ------ | ------------- | ------------- |
| access_key | str | APP登录Token | APP方式必要 | |
| cid | num | 案件id | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ------ | -------- | ------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-400请求错误<br />25010没有权限查看案件 |
| message | str | 信息 | 默认为0 |
| ttl | num | 1 | |
| data | object | 数据本体 | |
`data` 对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ------ | -------- | ------------ |
| id | num | 案件id | |
| mid | num | 被举报用户mid | |
| status | num | 裁决状态 | 1投票中<br />2停止发放<br />3复核中结案中<br />4已裁决<br />5待重启<br />6未裁决<br />7冻结中<br />8队列中 |
| statusTitle | str | 封禁时间文字 | `judgeType`=1时有效 |
| originType | num | 来源类型 | 见「封禁公示」中表 |
| reasonType | num | 原因类型 | 见「封禁公示」中表 |
| originContent | str | 被举报的原文 | |
| punishResult | num | 处理结果 | 0<br />1封禁3天<br />2封禁7天<br />3永封<br />4其他封禁天数<br />5封禁15天<br />6仅删除不封禁 |
| punishTitle | str | 处罚原因 | |
| judgeType | num | 裁决类型 | `status`=4时有效<br />0未裁决<br/>1违规<br/>2不违规 |
| originUrl | str | 来源url | |
| blockedDays | num | 封禁时间 | `judgeType`=1时有效 |
| putTotal | num | | 作用尚不明确 |
| voteRule | num | 投票不违规人数 | |
| voteBreak | num | 投票建议封禁人数 | |
| voteDelete | num | 投票建议删除人数 | |
| startTime | num | 裁决起始时间 | 时间戳 |
| endTime | num | 裁决截止时间 | 时间戳<br />未结案固定为24小时 |
| ctime | num | 举报创建时间 | 时间戳 |
| mtime | num | 开始拉取时间 | 时间戳 |
| originTitle | str | 来源标题 | |
| relationId | str | 违规关系标识字 | {评论rpid}-{违规类型id}-{来源对象id} |
| face | str | 被举报用户头像url | |
| uname | str | 被举报用户昵称 | |
| vote | num | 我的投票 | **见上表** |
| case_type | num | 众裁类型 | 0小众众裁<br />1大众众裁 |
**示例:**
查询案件`1239790`的信息
Cookie方式
```shell
curl -G 'https://api.bilibili.com/x/credit/jury/juryCase' \
--data-urlencode 'cid=1239790' \
-b 'SESSDATA=xxx'
```
APP方式
```shell
curl -G 'https://api.bilibili.com/x/credit/jury/juryCase' \
--data-urlencode 'access_key=xxx' \
--data-urlencode 'cid=1239790' \
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"id": 1239790,
"mid": 351783425,
"status": 4,
"statusTitle": "封禁7天",
"originType": 1,
"reasonType": 9,
"originContent": "up主在和平精英里的喷子是霰xian弹枪不是散san弹枪。",
"punishResult": 0,
"punishTitle": "在评论中发布引战言论",
"judgeType": 2,
"originUrl": "https://www.bilibili.com/video/BV15x411X7eV/#reply1728344012",
"blockedDays": 7,
"putTotal": 272,
"voteRule": 409,
"voteBreak": 17,
"voteDelete": 89,
"startTime": 1594467941,
"endTime": 1594471525,
"ctime": 1594464499,
"mtime": 1594471678,
"originTitle": "和平精英揭秘真相68氪金试水最新抽奖活动到底是亏了还是赚了",
"relationId": "1728344012-1-57465308",
"face": "http://i2.hdslb.com/bfs/face/e1018566c615059b664dc6eae3a5235c31cd92fe.jpg",
"uname": "零酱a",
"vote": 4,
"case_type": 0
}
}
```
</details>
</details>
## 查询案件众裁信息
这是一个旧版的API暂未找到对应的新版API。
<details>
<summary>展开:</summary>
> https://api.bilibili.com/x/credit/jury/caseInfo
*请求方式GET*
注:该接口无需登录
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------ | ------ | ---- |
| cid | num | 案件id | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | -------------------------------- | -------- | --------------------------- |
| code | num | 返回值 | 0成功<br />-400请求错误 |
| message | str | 信息 | 默认为0 |
| ttl | num | 1 | |
| data | 有效时object<br />无效时null | 数据本体 | |
`data` 对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------- | ---- | ----------------- | ------------------------------------------------------------ |
| id | num | 案件id | |
| mid | num | 被举报用户mid | |
| status | num | 裁决状态 | 1投票中<br />2停止发放<br />3复核中结案中<br />4已裁决<br />5待重启<br />6未裁决<br />7冻结中<br />8队列中 |
| originType | num | 来源类型 | 见「封禁公示」中表 |
| reasonType | num | 原因类型 | 见「封禁公示」中表 |
| originContent | str | 被举报的原文 | |
| punishResult | num | 处理结果 | 0<br />1封禁3天<br />2封禁7天<br />3永封<br />4其他封禁天数<br />5封禁15天<br />6仅删除不封禁 |
| judgeType | num | 裁决类型 | `status`=4时有效<br />0未裁决<br/>1违规<br/>2不违规 |
| originUrl | str | 来源url | |
| blockedDays | num | 封禁时间 | `judgeType`=1时有效 |
| putTotal | num | | 作用尚不明确 |
| voteRule | num | 投票不违规人数 | |
| voteBreak | num | 投票建议封禁人数 | |
| voteDelete | num | 投票建议删除人数 | |
| startTime | num | 裁决起始时间 | 时间戳 |
| endTime | num | 裁决截止时间 | 时间戳<br />未结案固定为24小时 |
| ctime | num | 举报创建时间 | 时间戳 |
| mtime | num | 开始拉取时间 | 时间戳 |
| originTitle | str | 来源标题 | |
| relationId | str | 违规关系标识字 | {评论rpid}-{违规类型id}-{来源对象id} |
| face | str | 被举报用户头像url | |
| uname | str | 被举报用户昵称 | |
| vote | num | 0 | 固定为0 |
| case_type | num | 众裁类型 | 0小众众裁<br />1大众众裁 |
**示例:**
查询案件`1239790`的信息
```shell
curl -G 'https://api.bilibili.com/x/credit/jury/juryCase' \
--data-urlencode 'cid=1239790'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"id": 1239790,
"mid": 351783425,
"status": 4,
"originType": 1,
"reasonType": 9,
"originContent": "up主在和平精英里的喷子是霰xian弹枪不是散san弹枪。",
"punishResult": 0,
"judgeType": 2,
"originUrl": "https://www.bilibili.com/video/BV15x411X7eV/#reply1728344012",
"blockedDays": 7,
"putTotal": 272,
"voteRule": 409,
"voteBreak": 17,
"voteDelete": 89,
"startTime": 1594467941,
"endTime": 1594471525,
"ctime": 1594464499,
"mtime": 1594471678,
"originTitle": "和平精英揭秘真相68氪金试水最新抽奖活动到底是亏了还是赚了",
"relationId": "1728344012-1-57465308",
"face": "http://i2.hdslb.com/bfs/face/e1018566c615059b664dc6eae3a5235c31cd92fe.jpg",
"uname": "零酱a",
"vote": 0,
"case_type": 0
}
}
```
</details>
</details>
## 查询我的众裁记录
> https://api.bilibili.com/x/credit/v2/jury/case/list
*请求方式GET*
认证方式Cookie
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------ | ----------- | -------------------- |
| pn | num | 页码 | 非必要 | 默认为1 |
| ps | num | 每页显示数量 | 非必要 | 默认为30<br />最大30 |
**Headers参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ---- | ------ | ---- |
| cookie | str | | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ------ | ------------ | ------------------------------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-400请求错误 |
| message | str | 信息 | 默认为0 |
| ttl | num | 1 | |
| data | object | 数据本体 | |
| data.total | num | 仲裁案例数 | |
| data.list | array | 仲裁记录列表 | |
`list`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ------ | --------------- | ------------ |
| 0 | object | 仲裁记录1 | |
| n | object | 仲裁记录n+1 | 按照时间顺序 |
| …… | object | …… | …… |
`list`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ---- | ------------ | ------------------------------------------------------------ |
| case_id | str | 案件id | |
| case_type | num | 案件类型 | 1单条评论<br/>2评论氛围<br/>3单条弹幕<br/>4弹幕氛围 |
| status | num | 裁决状态 | 0投票中<br />1已结束 |
| vote | num | 投票选项 | “单条评论(弹幕)”分别为 `1` 或者 `2` 或者 `3` 或者 `4`<br/>对应:“合适”、“一般”、“不合适”、“无法判断”<br/><br/>“评论(弹幕)氛围”分别为 `11` 或者 `12` 或者 `13` 或者 `14`<br/>对应:“好”、“一般”、“差”、“无法判断” |
| vote_text | str | 投票选项文本 | *参考上条* |
| vote_time | num | 投票时间 | 时间戳,精确到秒 |
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"total": 5428,
"list": [
{
"case_id": "AC2sOiNenwj1",
"case_type": 4,
"status": 1,
"vote": 11,
"vote_text": "好",
"vote_time": 1662700609
}
]
}
}
```
</details>
#### 旧 api
<details>
<summary>查看旧版API</summary>
> https://api.bilibili.com/x/credit/jury/caseList
*请求方式GET*
认证方式CookieSESSDATA或APP
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ------------ | ------ | ------------- | ------------- |
| access_key | str | APP登录Token | APP方式必要 | |
| pn | num | 页码 | 非必要 | 默认为1 |
| ps | num | 每页显示数量 | 非必要 | 默认为30<br />最大30 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ------ | -------- | ------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-400请求错误 |
| message | str | 信息 | 默认为0 |
| ttl | num | 1 | |
| data | array | 仲裁记录列表 | |
`data`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ------ | --------------- | ------------ |
| 0 | object | 仲裁记录1 | |
| n | object | 仲裁记录n+1 | 按照时间顺序 |
| …… | object | …… | …… |
`data`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------- | ---- | ----------------- | ------------------------------------------------------------ |
| id | num | 案件id | |
| mid | num | 被举报用户mid | |
| status | num | 裁决状态 | 1投票中<br />2停止发放<br />3复核中结案中<br />4已裁决<br />5待重启<br />6未裁决<br />7冻结中<br />8队列中 |
| originType | num | 来源类型 | 见「封禁公示」中表 |
| reasonType | num | 原因类型 | 见「封禁公示」中表 |
| originContent | str | 被举报的原文 | |
| punishResult | num | 处理结果 | 0<br />1封禁3天<br />2封禁7天<br />3永封<br />4其他封禁天数<br />5封禁15天<br />6仅删除不封禁 |
| punishTitle | str | 处罚原因 | |
| judgeType | num | 裁决类型 | `status`=4时有效<br />0未裁决<br/>1违规<br/>2不违规 |
| originUrl | str | 来源url | |
| blockedDays | num | 封禁时间 | `judgeType`=1时有效 |
| putTotal | num | | 作用尚不明确 |
| voteRule | num | 投票不违规人数 | |
| voteBreak | num | 投票建议封禁人数 | |
| voteDelete | num | 投票建议删除人数 | |
| startTime | num | 裁决起始时间 | 时间戳 |
| endTime | num | 裁决截止时间 | 时间戳<br />未结案固定为24小时 |
| ctime | num | 举报创建时间 | 时间戳 |
| mtime | num | 开始拉取时间 | 时间戳 |
| originTitle | str | 来源标题 | |
| relationId | str | 违规关系标识字 | {评论rpid}-{违规类型id}-{来源对象id} |
| face | str | 被举报用户头像url | |
| uname | str | 被举报用户昵称 | |
| vote | num | 我的投票 | **见上表** |
| voteTime | num | 我的裁决时间 | 毫秒 时间戳 |
| case_type | num | 众裁类型 | 0小众众裁<br />1大众众裁 |
**示例:**
查询我的历史众裁第1页每页显示1个案件
Cookie方式
```shell
curl -G 'https://api.bilibili.com/x/credit/jury/caseList' \
--data-urlencode 'ps=1' \
--data-urlencode 'pn=1' \
-b 'SESSDATA=xxx'
```
APP方式
```shell
curl -G 'https://api.bilibili.com/x/credit/jury/caseList' \
--data-urlencode 'access_key=xxx' \
--data-urlencode 'ps=1' \
--data-urlencode 'pn=1'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": [
{
"id": 1241808,
"mid": 298264370,
"status": 4,
"originType": 1,
"reasonType": 9,
"originContent": "别在发这种傻逼视频了好吗?真要搞到禁摩才甘心。",
"punishResult": 6,
"punishTitle": "在评论中发布引战言论",
"judgeType": 1,
"originUrl": "https://www.bilibili.com/video/av328669697/#reply3165369965",
"blockedDays": 7,
"putTotal": 251,
"voteRule": 14,
"voteBreak": 140,
"voteDelete": 373,
"startTime": 1594528662,
"endTime": 1594530687,
"ctime": 1594528108,
"mtime": 1594530802,
"originTitle": "我这里有记录仪!略略略略略略哈哈哈,干得漂亮!",
"relationId": "3165369965-1-328669697",
"face": "http://i1.hdslb.com/bfs/face/d69912bb2a51f08176bcdbf4ba15e4c2b0962ad9.jpg",
"uname": "MyLSTicKnight",
"vote": 4,
"voteTime": 1594528700000,
"case_type": 0
}
]
}
```
</details>
</details>
## 获取众议观点
> https://api.bilibili.com/x/credit/v2/jury/case/opinion
*请求方式GET*
认证方式Cookie
**标头参数Headers**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------ | ------ | ---- |
| Cookie | str | Cookie | 必要 | |
**URL参数Query Params**
| 参数名 | 类型 | 内容 | 备注 |
| ------- | ---- | ---------- | ------------------------------------------- |
| case_id | str | 仲裁案件id | **必填** |
| pn | num | | 显示第x页default = 1 |
| ps | num | | 每页显示y条观点Max = 20default = 10 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ------ | -------- | ------------------------------------------------- |
| code | num | 返回值 | 0成功<br>-400`ps`参数大于可允许的最大值`20` |
| message | str | 信息 | 默认为0 |
| ttl | num | 1 | 作用尚不明确 |
| data | object | 数据本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----- | ----- | -------------------------- | ---- |
| total | num | 当前案件众议观点总数 | |
| list | array | 无数据时是一个空数组:“[]” | |
`data.list`对象是一个数组,里面包含`ps`个object参数`ps`见上文object结构见「[附表4](#附表4data-对象下的my_point对象)」)
**示例:**
查看案件`AC1xx411c7ac`的众议观点,每页`2`项,查看第`1`页
```shell
curl -G 'https://api.bilibili.com/x/credit/v2/jury/case/opinion' \
--data-urlencode 'case_id=AC1xx411c7ac' \
--data-urlencode 'pn=1' \
--data-urlencode 'ps=2' \
--header 'cookie: xxxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"total": 48,
"list": [
{
"opid": 46087379,
"mid": 22006415,
"uname": "匿名用户",
"face": "http://i0.hdslb.com/bfs/face/e48952d599dbf011c2235239fafa2bf0deccef5a.jpg",
"vote": 11,
"vote_text": "",
"content": "正常评论",
"anonymous": 1,
"like": 0,
"hate": 0,
"like_status": 0,
"vote_time": 1661430391,
"insiders": 1
},
{
"opid": 46087280,
"mid": 19243907,
"uname": "匿名用户",
"face": "http://i0.hdslb.com/bfs/face/e85d7ab3425d3dd0f0796bd7f945b47ac27ca82a.jpg",
"vote": 11,
"vote_text": "",
"content": "并未发现明显问题。",
"anonymous": 1,
"like": 0,
"hate": 0,
"like_status": 0,
"vote_time": 1661430337,
"insiders": 0
}
]
}
}
```
</details>
#### 旧 api
<details>
<summary>查看旧版API</summary>
> https://api.bilibili.com/x/credit/jury/case/opinion
*请求方式GET*
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ------------ | ------ | ------------- | ------------- |
| cid | num | 案件id | 必要 | |
| ps | num | 每页项数 | 非必要 | 默认为10 |
| pn | num | 页码 | 非必要 | 默认为1 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ------ | -------- | ------------ |
| code | num | 返回值 | 0成功<br />-400请求错误 |
| message | str | 信息 | 默认为0 |
| ttl | num | 1 | |
| data | object | 数据本体 | |
`data` 对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ------ | -------- | ------------ |
| count | num | 观点总数 | |
| opinion | 有效时array<br />无效时null | 观点列表 | |
`data` 中的`opinion` 数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ------ | ----------- | ------------ |
| 0 | object | 观点1 | |
| n | object | 观点n+1 | 按照时间顺序 |
| …… | object | …… | …… |
`opinion` 数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ------ | -------- | ------------ |
| mid | num | 用户mid | 仅非匿名有此项 |
| face | str | 用户头像 | 仅非匿名有此项 |
| name | str | 用户昵称 | 仅非匿名有此项 |
| opid | num | 观点id | |
| vote | num | 投票选择 | **见上表** |
| content | str | 观点内容 | |
| attr | num | 是否匿名 | 0匿名<br />1不匿名 |
| hate | num | 喜欢人数 | |
| like | num | 不喜欢人数 | |
**示例:**
查看案件`1239790`的众议观点每页10项查看第一页
```shell
curl -G 'https://api.bilibili.com/x/credit/jury/case/opinion' \
--data-urlencode 'cid=1239790' \
--data-urlencode 'ps=10' \
--data-urlencode 'pn=1' \
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"count": 23,
"opinion": [
{
"opid": 250943982,
"vote": 2,
"content": "不懂,正常的科普也有人杠吗?没文化真可怕",
"attr": 0,
"hate": 0,
"like": 0
},
{
"mid": 59894,
"face": "http://i2.hdslb.com/bfs/face/0cc48fc40867537d5a09a125e90f76183efbfdfa.gif",
"name": "雷歐諾斯",
"opid": 250956267,
"vote": 2,
"content": "这个虽然不是正确的说法,但本身是一种观点。而且已经成为一种梗了。不属于引战。",
"attr": 1,
"hate": 0,
"like": 0
},
{
"opid": 250956259,
"vote": 2,
"content": "正常科普,不构成引战。",
"attr": 0,
"hate": 0,
"like": 0
},
{
"mid": 215020429,
"face": "http://i1.hdslb.com/bfs/face/1d43c302e67db4d21b9c5c0f0dc0b8786e8086d5.jpg",
"name": "瞎子广_广告歌41",
"opid": 250955160,
"vote": 2,
"content": "这个其实也没啥事真的",
"attr": 1,
"hate": 0,
"like": 0
},
{
"mid": 108194360,
"face": "http://i0.hdslb.com/bfs/face/b78c92a69ff9977b7d08d4f7edc0a051a3d6ea3e.jpg",
"name": "籽云奕",
"opid": 250953998,
"vote": 2,
"content": "仅仅是科普评论,无过激言论",
"attr": 1,
"hate": 0,
"like": 0
},
{
"mid": 34503714,
"face": "http://i2.hdslb.com/bfs/face/eb2d0853235a56d035303f4f3614dcb6e0cf66fa.jpg",
"name": "十六夜紅月丶",
"opid": 250950982,
"vote": 2,
"content": "无过激言论,正常科普罢了",
"attr": 1,
"hate": 0,
"like": 0
},
{
"opid": 250950973,
"vote": 2,
"content": "其实两种读法都是正确的,虽然想要纠正别人的错误。不过自己本身就错了。还是保留吧,没什么引战的",
"attr": 0,
"hate": 0,
"like": 0
},
{
"mid": 436136443,
"face": "http://i1.hdslb.com/bfs/face/6b4151d8e030eddd073add6ef18ccbb00aa48d0f.jpg",
"name": "兄弟好牛啤",
"opid": 250950417,
"vote": 2,
"content": "有点经典的争议,但可能还会有人不知道",
"attr": 1,
"hate": 0,
"like": 0
},
{
"mid": 87385400,
"face": "http://i2.hdslb.com/bfs/face/0f567e7fa49bcef22010f3ff78e90553d8fffb09.jpg",
"name": "小学生de王者荣耀",
"opid": 250950402,
"vote": 2,
"content": "合理纠正up主的错误建议追究恶意举报者的责任",
"attr": 1,
"hate": 0,
"like": 0
},
{
"opid": 250949840,
"vote": 2,
"content": "正常科普,没有过激言论,建议保留",
"attr": 0,
"hate": 0,
"like": 0
}
]
}
}
```
</details>
</details>

184
docs/broadcast/readme.md Normal file
View File

@ -0,0 +1,184 @@
# 全站广播
可用的广播服务:
- [视频实时信息](video_room.md)√
## 获取广播服务器地址
> https://api.bilibili.com/x/web-interface/broadcast/servers
*请求方式GET*
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| -------- | ---- | -------- | ------ | --------------------------------- |
| platform | str | 平台选择 | 必要 | 为web时输出域名<br />其他时输出ip |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | --------------------------- |
| code | num | 返回值 | 0成功<br />-400请求错误 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------- | ------ | ------------------ | ---- |
| domain | str | 广播服务器url | |
| tcp_port | num | tcp端口 | |
| ws_port | num | websocket端口 | |
| wss_port | num | websocket ssl端口 | |
| heartbeat | num | 最大心跳包间隔时间 | |
| nodes | array | 服务节点地址列表 | |
| backoff | obj | | |
| heartbeat_max | num | | |
`data`中的`nodes`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------- | ---- |
| 0 | str | 服务节点1 | |
| n | str | 服务节点(n+1) | |
| …… | str | …… | |
`data`中的`backoff`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ---- | ------ | ---- |
| max_delay | num | | |
| base_delay | num | | |
| factor | num | | |
| jitter | num | | |
示例:
当`platform`=`web`时不显示节点ip
```shell
curl -G 'https://api.bilibili.com/x/web-interface/broadcast/servers' \
--data-urlencode 'platform=web'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"domain": "broadcast.chat.bilibili.com",
"tcp_port": 7821,
"ws_port": 7822,
"wss_port": 7823,
"heartbeat": 30,
"nodes": ["broadcast.chat.bilibili.com"],
"backoff": {
"max_delay": 300,
"base_delay": 3,
"factor": 1.8,
"jitter": 0.3
},
"heartbeat_max": 3
}
}
```
</details>
当`platform`=其他时显示节点ip
```shell
curl -G 'https://api.bilibili.com/x/web-interface/broadcast/servers' \
--data-urlencode 'platform=1'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"domain": "broadcast.chat.bilibili.com",
"tcp_port": 7821,
"ws_port": 7822,
"wss_port": 7823,
"heartbeat": 30,
"nodes": ["134.175.207.130", "120.92.150.90", "120.92.150.212", "192.144.173.136", "154.8.217.108"],
"backoff": {
"max_delay": 300,
"base_delay": 3,
"factor": 1.8,
"jitter": 0.3
},
"heartbeat_max": 3
}
}
```
</details>
## 服务器数据包
连接服务器分为三种方式分别是ws wss tcp数据包分为上行和下行
单个数据包分为头部和正文
其中上行的有认证包 心跳包,下行的有认证包回复 心跳包回复 普通包
建立连接后超过30s内未发送认证包或握手后30s内未发送心跳包或发送了错误的认证包都会被强制断开连接
操作流程:
1.发送认证包,等待接收认证回复
2.确认握手成功后每30s内发送心跳包并立即接收心跳包回复
3.空闲时间接收普通包
### 数据包结构
头部通用于上行和下行数据包
头部格式:
| 偏移量 | 长度(字节) | 类型 | 含义 |
| ------ | ------------ | ------ | ---------------------------------------------------- |
| 0x00 | 4 | uint32 | 封包总大小(头部大小+正文大小) |
| 0x04 | 2 | uint16 | 头部大小一般为0x001218字节 |
| 0x06 | 2 | uint16 | 协议版本可取常数1 |
| 0x08 | 4 | uint32 | 操作码(包类型)<br />**见下表** |
| 0x0C | 4 | uint32 | sequence请求次数可取常数1<br />对于普通包恒为0 |
| 0x10 | 2 | uint16 | 保留一般为0 |
操作码:
| 代码 | 含义 |
| ---- | -------- |
| 2 | 心跳 |
| 3 | 心跳回复 |
| 7 | 认证 |
| 8 | 认证回复 |
| 1000 | 实时弹幕 |
**示例:**
以下为一个认证包示例,正文为文本`test`
```
00000000 00 00 00 16 00 12 00 01 00 00 00 07 00 00 00 01 |................|
00000010 00 00 74 65 73 74 |..test|
```

View File

@ -0,0 +1,152 @@
# 视频实时信息
- [认证包(上行)](#认证包上行)
- [认证包回复(下行)](#认证包回复下行)
- [心跳包(上行)](#心跳包上行)
- [心跳包回复(实时观看数)(下行)](#心跳包回复实时观看数下行)
- [普通包(实时弹幕)(下行)](#普通包实时弹幕下行)
---
## 认证包(上行)
**正文内容json**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ------ | -------- | ------------------------------ |
| room_id | str | 目标视频 | `video://{稿件avid}/{视频cid}` |
| platform | str | 平台标识 | 默认为`web` |
| accepts | array | 操作标识 | |
`array`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ------------ |
| 0 | num | 1000 | 作用尚不明确 |
| 1 | num | 1015 | 作用尚不明确 |
**示例:**
发送视频`av706`1P的cid为` 3724723 `)的认证包
```
00000000 00 00 00 55 00 12 00 01 00 00 00 07 00 00 00 01 |...U............|
00000010 00 00 7b 22 72 6f 6f 6d 5f 69 64 22 3a 22 76 69 |..{"room_id":"vi|
00000020 64 65 6f 3a 2f 2f 37 30 36 2f 33 37 32 34 37 32 |deo://706/372472|
00000030 33 22 2c 22 70 6c 61 74 66 72 6f 6d 22 3a 22 77 |3","platfrom":"w|
00000040 65 62 22 2c 22 61 63 63 65 70 74 73 22 3a 5b 31 |eb","accepts":[1|
00000050 30 30 30 2c 31 30 31 35 5d 7d |000,1015]}|
```
## 认证包回复(下行)
**正文内容json**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | -------- |
| code | num | 返回值 | 0成功 |
| message | str | 错误信息 | 默认为OK |
| version | num | 版本号 | |
示例:
```
00000000 00 00 00 37 00 12 00 01 00 00 00 08 00 00 00 01 |...7............|
00000010 00 00 7b 22 63 6f 64 65 22 3a 30 2c 22 6d 65 73 |..{"code":0,"mes|
00000020 73 61 67 65 22 3a 22 4f 4b 22 2c 22 76 65 72 73 |sage":"OK","vers|
00000030 69 6f 6e 22 3a 31 7d |ion":1}|
```
## 心跳包(上行)
正文可为任意内容或为空
**示例:**
正文为空的示例
```
00000000 00 00 00 12 00 12 00 01 00 00 00 02 00 00 00 01 |................|
00000010 00 00 |..|
```
正文为`[object Object]`的示例
```
00000000 00 00 00 21 00 12 00 01 00 00 00 02 00 00 00 01 |...!............|
00000010 00 00 5b 6f 62 6a 65 63 74 20 4f 62 6a 65 63 74 |..[object Object|
00000020 5d |]|
```
## 心跳包回复(实时观看数)(下行)
**正文内容json**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | -------- |
| code | num | 返回值 | 0成功 |
| message | str | 错误信息 | 默认为OK |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---------------- | ---- |
| room | obj | 视频实时观看信息 | |
`data`中的`room`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | ------------ | ------------------------------ |
| online | num | 实时观看人数 | |
| room_id | str | 目标视频 | `video://{稿件avid}/{视频cid}` |
**示例:**
当前视频`av706`实时观看人数为13
```
00000000 00 00 00 68 00 12 00 01 00 00 00 03 00 00 00 01 |...h............|
00000010 00 00 7b 22 63 6f 64 65 22 3a 30 2c 22 6d 65 73 |..{"code":0,"mes|
00000020 73 61 67 65 22 3a 22 30 22 2c 22 64 61 74 61 22 |sage":"0","data"|
00000030 3a 7b 22 72 6f 6f 6d 22 3a 7b 22 6f 6e 6c 69 6e |:{"room":{"onlin|
00000040 65 22 3a 31 33 2c 22 72 6f 6f 6d 5f 69 64 22 3a |e":13,"room_id":|
00000050 22 76 69 64 65 6f 3a 2f 2f 37 30 36 2f 33 37 32 |"video://706/372|
00000060 34 37 32 33 22 7d 7d 7d |4723"}}}|
```
## 普通包(实时弹幕)(下行)
**正文内容json**
根数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------ | ------------------------------------------------------------ |
| 0 | str | 弹幕属性信息 | 详见[「弹幕」中的属性 p](https://github.com/SocialSisterYi/bilibili-API-collect/blob/master/danmaku/danmaku_xml.md) |
| 1 | str | 弹幕内容 | |
**示例:**
弹幕属性为`0.25,1,25,16777215,1588433046,1588431486568150,0,33ad5d91,32134068443807747`
弹幕内容为`此生无悔入东方,来世愿生幻想乡`
```
00000000 00 00 00 91 00 12 00 01 00 00 03 e8 00 00 00 00 |................|
00000010 00 00 5b 22 30 2e 32 35 2c 31 2c 32 35 2c 31 36 |..["0.25,1,25,16|
00000020 37 37 37 32 31 35 2c 31 35 38 38 34 33 33 30 34 |777215,158843304|
00000030 36 2c 31 35 38 38 34 33 31 34 38 36 35 36 38 31 |6,15884314865681|
00000040 35 30 2c 30 2c 33 33 61 64 35 64 39 31 2c 33 32 |50,0,33ad5d91,32|
00000050 31 33 34 30 36 38 34 34 33 38 30 37 37 34 37 22 |134068443807747"|
00000060 2c 22 e6 ad a4 e7 94 9f e6 97 a0 e6 82 94 e5 85 |,"此 生 无 悔|
00000070 a5 e4 b8 9c e6 96 b9 ef bc 8c e6 9d a5 e4 b8 96 |入 东 方 ,来 世 |
00000080 e6 84 bf e7 94 9f e5 b9 bb e6 83 b3 e4 b9 a1 22 |愿 生 幻 想 乡"|
00000090 5d |]|
```

645
docs/cheese/info.md Normal file
View File

@ -0,0 +1,645 @@
# 课程基本信息
- [获取课程基本信息](#获取课程基本信息)
- [获取课程分集列表](#获取课程分集列表)
---
课程ssid与epid和番剧不互通
课程avid与普通视频绝大部分api接口不能互通少部分互通接口如下
1. 获取视频简介
2. 查询视频状态数
3. 查询分P列表
4. 视频快照
5. 获取弹幕使用cid
6. 发送弹幕
7. 高能进度条使用cid
## 获取课程基本信息
> https://api.bilibili.com/pugv/view/web/season
*请求方式GET*
认证方式CookieSESSDATA
鉴权方式referer为 `.bilibili.com`域名下
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| --------- | ---- | -------- | ------------ | -------------------------------------------------- |
| season_id | num | 课程ssid | 必要(可选) | season_id与ep_id任选其一<br />**与番剧ssid不互通** |
| ep_id | num | 课程epid | 必要(可选) | season_id与ep_id任选其一<br />**与番剧epid不互通** |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----------------------- |
| code | num | 返回值 | 0成功<br />-404错误 |
| message | str | 错误信息 | 默认为success |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------------- | ------ | ----------------------------- | ------------------------------------------------------------ |
| brief | obj | 课程概述信息 | |
| coupon | obj | 优惠信息 | 若无优惠则无此项 |
| cover | str | 课程封面url | |
| episode_page | obj | 课程分集信息 | |
| episode_sort | num | 1 | **作用尚不明确** |
| episodes | array | 课程分集列表 | |
| faq | obj | 常见问题信息1 | 合并格式 |
| faq1 | obj | 常见问题信息2 | 分离格式 |
| payment | obj | 付费信息 | |
| purchase_note | obj | 购买须知信息 | |
| purchase_protocol | obj | 付费内容协议信息 | |
| release_bottom_info | str | 底部更新状态文字 | |
| release_info | str | 更新状态文字+更新连载状态文字 | |
| release_info2 | str | 更新连载状态文字 | |
| release_status | str | 更新状态文字 | |
| season_id | num | 课程ssid | **与番剧ssid不互通** |
| share_url | str | 页面url | |
| short_link | str | bilibili uri链接 | |
| stat | obj | 播放数信息 | |
| status | num | 10 | **作用尚不明确** |
| subtitle | str | 课程简介信息 | |
| title | str | 课程标题 | |
| up_info | obj | UP主信息 | |
| user_status | obj | 用户状态信息 | **需要登录SESSDATA且referer为`https://www.bilibili.com`** |
`data`中的`brief`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ------ | -------- | ---- |
| content | str | 空 | |
| img | array | 简介图片 | |
| title | str | 课程概述 | |
| type | num | 2 | |
`brief`中的`img`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | --------------- | ---- |
| 0 | obj | 简介图片1 | |
| n | obj | 简介图片n+1 | |
| …… | obj | …… | …… |
`img`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------ | ---- | ----------- | ---------------- |
| aspect_ratio | num | | **作用尚不明确** |
| url | str | 简介图片url | |
`data`中的`coupon`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------- | ---- | --------- | ------------------- |
| amount | num | 折扣乘数 | |
| expire_time | str | 结束时间 | YYYY-MM-DD HH:MM:SS |
| start_time | str | 起始时间 | YYYY-MM-DD HH:MM:SS |
| status | num | | **作用尚不明确** |
| title | str | 优惠标题 | |
| token | str | 领取token | |
`data`中的`episode_page`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----- | ---- | -------- | ---- |
| next | bool | false | |
| num | num | 1 | |
| size | num | 总计集数 | |
| total | num | 总计集数 | |
`data`中的`episodes`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | --------------- | ---- |
| 0 | obj | 课程分集1 | |
| n | obj | 课程分集n+1 | |
| …… | obj | …… | …… |
`episodes`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| -------------- | ---- | ---------------- | ------------------------------------------------------------ |
| aid | num | 课程分集avid | **与普通稿件avid部分不互通** |
| cid | num | 课程分集cid | **与普通视频cid部分不互通** |
| duration | num | 课程分集时间长度 | 单位为秒 |
| from | str | pugv | |
| id | num | 课程分集epid | **与番剧epid不互通** |
| index | num | 课程分集数 | |
| page | num | 1 | |
| play | num | 课程分集播放量 | |
| release_date | num | 课程分集发布时间 | 时间戳 |
| status | num | 分集权限属性 | 1可观看<br />2不可观看 |
| title | str | 课程分集标题 | |
| watched | bool | 是否观看该集 | **需要登录SESSDATA且referer为`https://www.bilibili.com`**<br />false未观看<br />true已观看 |
| watchedHistory | num | 该集观看历史 | **需要登录SESSDATA且referer为`https://www.bilibili.com`** |
`data`中的`faq`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | --------------- | ---- |
| content | str | 常见问题信息 | |
| link | str | 常见问题页面url | |
| title | str | 常见问题 | |
`data`中的`faq1`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----- | ------ | ------------ | ---- |
| items | array | 常见问题列表 | |
| title | str | 常见问题 | |
`faq1`中的`items`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | --------------- | ---- |
| 0 | obj | 常见问题1 | |
| n | obj | 常见问题n+1 | |
| …… | obj | …… | …… |
`items`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | -------- | ---- |
| answer | str | 回答信息 | |
| question | str | 问题信息 | |
`data`中的`payment`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------------- | ---- | -------------------- | ----------------------- |
| desc | str | 付费价格说明 | |
| discount_desc | str | 折扣说明信息 | 若无优惠则无此项 |
| discount_prefix | str | 折扣类型前缀 | 若无优惠则无此项 |
| pay_shade | str | 观看所有视频付费说明 | |
| price | num | 课程价格 | 单位为B币折扣后价格 |
| price_format | str | 课程价格 | 单位为B币折扣后价格 |
`data`中的`purchase_note`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------------------- | ---- |
| content | str | 购买须知信息文字内容 | |
| link | str | 购买须知页面url | |
| title | str | 购买须知 | |
`data`中的`purchase_protocol`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----- | ---- | ------------------- | ---- |
| link | str | 付费内容协议页面url | |
| title | str | 付费内容协议 | |
`data`中的`stat`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ---- | -------------- | ---- |
| play | num | 播放量 | |
| play_desc | str | 播放量文字信息 | |
`data`中的`up_info`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ---- | ------------ | ------------------------------------------------------------ |
| avatar | str | UP主头像url | |
| brief | str | UP主备注 | 非个人签名 |
| follower | num | UP主粉丝数 | |
| is_follow | num | 是否关注UP主 | **需要登录SESSDATA且referer为`https://www.bilibili.com`**<br />0未关注<br />1已关注 |
| link | str | UP主空间url | |
| mid | num | UP主uid | |
| pendant | obj | ??? | **作用尚不明确** |
| uname | str | UP主昵称 | |
`up_info`中的`pendant`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | ---- | ---------------- |
| image | str | 空 | **作用尚不明确** |
| name | str | 空 | **作用尚不明确** |
| follower | num | 0 | **作用尚不明确** |
`data`中的`user_status`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------- | ---- | -------- | ------------------------ |
| favored | num | 是否收藏 | 0未收藏<br />1已收藏 |
| favored_count | num | 1 | **作用尚不明确** |
| payed | num | 是否购买 | 0未购买<br />1已购买 |
| progress | obj | 课程进度 | 未登录无此项 |
`user_status`中的`progress`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------- | ---- | ------------------ | -------- |
| last_ep_id | num | 最后观看的epid | |
| last_ep_index | str | 最后观看的标题 | |
| last_time | num | 最后观看的时间进度 | 单位为秒 |
**示例:**
查询课程`ss61`或分集`ep790`的信息
ssid方式
```shell
curl -G 'https://api.bilibili.com/pugv/view/web/season' \
--data-urlencode 'season_id=61' \
-b 'SESSDATA=xxx' \
-e 'https://www.bilibili.com'
```
epid方式
```shell
curl -G 'https://api.bilibili.com/pugv/view/web/season' \
--data-urlencode 'ep_id=790' \
-b 'SESSDATA=xxx' \
-e 'https://www.bilibili.com'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"data": {
"brief": {
"content": "",
"img": [
{
"aspect_ratio": 0.9375,
"url": "http://i0.hdslb.com/bfs/archive/29942f338ee570632838403a09871bad130cfe9a.jpg"
},
{
"aspect_ratio": 0.9375,
"url": "http://i0.hdslb.com/bfs/archive/913e5c37d836d7954ae9ca19da62a43ba5b34219.jpg"
},
{
"aspect_ratio": 1.3359375,
"url": "http://i0.hdslb.com/bfs/archive/a974555bd4a52f0aa865bd192c1e3401ed4cb0ad.jpg"
},
{
"aspect_ratio": 1.3359375,
"url": "http://i0.hdslb.com/bfs/archive/73cd7669b251db9d2b62b921bee49a137c3d65dc.jpg"
},
{
"aspect_ratio": 1.0625,
"url": "http://i0.hdslb.com/bfs/archive/b084ac8f6710c8eddbc58770a4254508de75eb02.jpg"
},
{
"aspect_ratio": 1.2890625,
"url": "http://i0.hdslb.com/bfs/archive/44e32c2cf64b894563829ce65bbef199220f4121.jpg"
},
{
"aspect_ratio": 1.3203125,
"url": "http://i0.hdslb.com/bfs/archive/90764fd095810565713b92606dc9cd0cfb25adae.jpg"
},
{
"aspect_ratio": 1.15234375,
"url": "http://i0.hdslb.com/bfs/archive/c35ca0ced0ad075a2c13b8fdc1e47b88573bce45.jpg"
}
],
"title": "课程概述",
"type": 2
},
"coupon": {
"amount": 0.66,
"expire_time": "2020-06-30 00:00:00",
"start_time": "2020-05-21 00:00:00",
"status": 1,
"title": "【上新限时6.6折】《唐盾0-N4日语精讲》",
"token": "B20200521135929161905873"
},
"cover": "http://i0.hdslb.com/bfs/archive/95d4de9e6691ccc2b18f087f5f654652dee3c01b.jpg",
"episode_page": {
"next": false,
"num": 1,
"size": 66,
"total": 66
},
"episode_sort": 1,
"episodes": [
{
"aid": 76973173,
"cid": 132105993,
"duration": 2223,
"from": "pugv",
"id": 790,
"index": 1,
"page": 1,
"play": 2406406,
"release_date": 1574762407,
"status": 1,
"title": "唐盾一起从0基础学日语吧含50音 词汇试听)",
"watched": false,
"watchedHistory": 0
},
{
"aid": 77114885,
"cid": 132110244,
"duration": 3003,
"from": "pugv",
"id": 795,
"index": 2,
"page": 1,
"play": 49100,
"release_date": 1574766759,
"status": 2,
"title": "50音あ行假名/音调/送气与不送气音",
"watched": false,
"watchedHistory": 0
},
{
"aid": 77120689,
"cid": 131913553,
"duration": 3253,
"from": "pugv",
"id": 797,
"index": 3,
"page": 1,
"play": 49518,
"release_date": 1574770029,
"status": 2,
"title": "50音图的か行、さ行、た行假名",
"watched": false,
"watchedHistory": 0
},
…………
],
"faq": {
"content": "Q课程在什么时间更新\nA课程更新频次以页面前端展示为准。购买成功后课程更新将通过账号动态提示方便及时观看。\n\nQ课程购买后有收看时间限制吗\nA购买后除不可抗力因素外课程均可永久收看请您放心购买。\n\nQ原价购买课程后如遇到优惠折扣是否可以退还差价或重新购买\nA虚拟商品付款后无法返还请您随时留意各类课程折扣信息按需购买。\n\nQ购买课程后是否可以加入老师的粉丝群或者用户群\nA如老师设置用户群我们将邀您加入但我们无法承诺所有老师均提供用户群服务感谢理解。",
"link": "http://m.bilibili.com",
"title": "常见问题"
},
"faq1": {
"items": [
{
"answer": "课程更新频次以页面前端展示为准。购买成功后,课程更新将通过账号动态提示,方便及时观看。",
"question": "课程在什么时间更新?"
},
{
"answer": "购买后除不可抗力因素外,课程均可永久收看,请您放心购买。",
"question": "课程购买后有收看时间限制吗?"
},
{
"answer": "虚拟商品付款后无法返还,请您随时留意各类课程折扣信息,按需购买。",
"question": "原价购买课程后,如遇到优惠折扣,是否可以退还差价或重新购买?"
},
{
"answer": "如老师设置用户群,我们将邀您加入,但我们无法承诺所有老师均提供用户群服务,感谢理解。",
"question": "购买课程后是否可以加入老师的粉丝群或者用户群?"
}
],
"title": "常见问题"
},
"payment": {
"desc": "券后262.68B币起/53期",
"discount_desc": "262.68B币",
"discount_prefix": "券后",
"pay_shade": "券后支付262.68B币即可观看所有视频",
"price": 398.0,
"price_format": "398"
},
"purchase_note": {
"content": "1. 本内容为付费内容,购买成功后方可观看。<br/>2. 本内容为虚拟服务,已购买内容不支持退款,敬请谅解。<br/>3. 实际购买价格以页面展示的价格及订单结算页显示价格为准。<br/>4. 如您在购买付费内容时有任何疑问,可随时咨询在线客服。<br/>完整的购买协议,请点击阅读<a href=\"https://www.bilibili.com/blackboard/activity-y-SJTTYBp.html\" color=\"#0ba395\" target=\"_blank\">《bilibili付费内容购买协议》</a>",
"link": "https://www.bilibili.com/blackboard/activity-y-SJTTYBp.html",
"title": "购买须知"
},
"purchase_protocol": {
"link": "https://www.bilibili.com/blackboard/activity-y-SJTTYBp.html",
"title": "bilibili付费内容购买协议"
},
"release_bottom_info": "没有更多啦~",
"release_info": "已完结共53期",
"release_info2": "共53期",
"release_status": "已完结",
"season_id": 61,
"share_url": "https://m.bilibili.com/cheese/play/ss61",
"short_link": "bilibili://cheese/season/61",
"stat": {
"play": 2878146,
"play_desc": "287.8万播放"
},
"status": 10,
"subtitle": "新东方名师唐盾的精品日语课包含50音/N5/N4的词汇/语法/课文/练习精讲,让我们一起轻松学日语~",
"title": "唐盾0-N4日语精讲",
"up_info": {
"avatar": "http://i1.hdslb.com/bfs/face/564421428d1f74314ed50e16a8f570ad968828b0.jpg",
"brief": "唐盾前新东方日语名师倾注日语教学、翻译14年。曾任新东方欧亚教育长沙中心总监。",
"follower": 21333,
"is_follow": 0,
"link": "https://space.bilibili.com/19452605",
"mid": 19452605,
"pendant": {
"image": "",
"name": "",
"pid": 0
},
"uname": "盾盾桑教你学日语"
},
"user_status": {
"favored": 1,
"favored_count": 1,
"payed": 0,
"progress": {
"last_ep_id": 790,
"last_ep_index": "唐盾一起从0基础学日语吧含50音 词汇试听)",
"last_time": 1
}
}
},
"message": "success"
}
```
</details>
## 获取课程分集列表
> https://api.bilibili.com/pugv/view/web/ep/list
*请求方式GET*
认证方式CookieSESSDATA
鉴权方式referer为 `.bilibili.com`域名下
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| --------- | ---- | -------- | ------ | -------------------- |
| season_id | num | 课程ssid | 必要 | **与番剧ssid不互通** |
| ps | num | 每页项数 | 非必要 | 默认为50 |
| pn | num | 页码 | 非必要 | 默认为1 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----------------------- |
| code | num | 返回值 | 0成功<br />-404错误 |
| message | str | 错误信息 | 默认为success |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----- | ------ | ------------ | ---- |
| items | array | 课程分集列表 | |
| page | obj | 列表分页信息 | |
`data`中的`items`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | --------------- | ---- |
| 0 | obj | 课程分集1 | |
| n | obj | 课程分集n+1 | |
| …… | obj | …… | …… |
`items`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| -------------- | ---- | ---------------- | ------------------------------------------------------------ |
| aid | num | 课程分集avid | **与普通稿件avid部分不互通** |
| cid | num | 课程分集cid | **与普通视频cid部分不互通** |
| duration | num | 课程分集时间长度 | 单位为秒 |
| from | str | pugv | |
| id | num | 课程分集epid | **与番剧epid不互通** |
| index | num | 课程分集数 | |
| page | num | 1 | |
| play | num | 课程分集播放量 | |
| release_date | num | 课程分集发布时间 | 时间戳 |
| status | num | 分集权限属性 | 1可观看<br />2不可观看 |
| title | str | 课程分集标题 | |
| watched | bool | 是否观看该集 | **需要登录SESSDATA且referer为`https://www.bilibili.com`**<br />false未观看<br />true已观看 |
| watchedHistory | num | 该集观看历史 | **需要登录SESSDATA且referer为`https://www.bilibili.com`** |
`data`中的`page`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----- | ---- | -------------- | ----------------------------------------- |
| next | bool | 是否存在下一页 | false不存在下一页<br />true存在下一页 |
| num | num | 当前页码 | |
| size | num | 每页项数 | |
| total | num | 总价项数 | |
**示例:**
按照每页5项查询课程`ss61`的分集列表第1页
```shell
curl -G 'https://api.bilibili.com/pugv/view/web/ep/list' \
--data-urlencode 'season_id=61' \
--data-urlencode 'ps=5 ' \
--data-urlencode 'pn=1' \
-b 'SESSDATA=xxx' \
-e 'https://www.bilibili.com'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"data": {
"items": [
{
"aid": 76973173,
"cid": 132105993,
"duration": 2223,
"from": "pugv",
"id": 790,
"index": 1,
"page": 1,
"play": 2406951,
"release_date": 1574762407,
"status": 1,
"title": "唐盾一起从0基础学日语吧含50音 词汇试听)",
"watched": false,
"watchedHistory": 0
},
{
"aid": 77114885,
"cid": 132110244,
"duration": 3003,
"from": "pugv",
"id": 795,
"index": 2,
"page": 1,
"play": 49106,
"release_date": 1574766759,
"status": 2,
"title": "50音あ行假名/音调/送气与不送气音",
"watched": false,
"watchedHistory": 0
},
{
"aid": 77120689,
"cid": 131913553,
"duration": 3253,
"from": "pugv",
"id": 797,
"index": 3,
"page": 1,
"play": 49522,
"release_date": 1574770029,
"status": 2,
"title": "50音图的か行、さ行、た行假名",
"watched": false,
"watchedHistory": 0
},
{
"aid": 77606110,
"cid": 132897199,
"duration": 2823,
"from": "pugv",
"id": 806,
"index": 4,
"page": 1,
"play": 35800,
"release_date": 1575128696,
"status": 2,
"title": "50音图的な行、は行、ま行假名",
"watched": false,
"watchedHistory": 0
},
{
"aid": 78015255,
"cid": 133651764,
"duration": 2165,
"from": "pugv",
"id": 812,
"index": 5,
"page": 1,
"play": 25842,
"release_date": 1575446218,
"status": 2,
"title": "や行、ら行、わ行假名、拨音",
"watched": false,
"watchedHistory": 0
}
],
"page": {
"next": true,
"num": 1,
"size": 5,
"total": 66
}
},
"message": "success"
}
```
</details>

View File

@ -0,0 +1,226 @@
# 课程视频流URL
- [获取课程视频流URLweb端](#获取课程视频流URLweb端)
---
<img src="../../assets/img/download.svg" width="100" height="100"/>
## 获取课程视频流URLweb端
> https://api.bilibili.com/pugv/player/web/playurl
*请求方式GET*
认证方式CookieSESSDATA
**注:**
1. 本接口为课程视频专用,故与普通视频不互通
2. 大部分使用方法及视频的取流方法继承[视频流url文档](../video/videostream_url.md)
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | -------------- | ------ | ------------------------------------------------------------ |
| avid | num | 课程avid | 必要 | |
| ep_id | num | 课程epid | 必要 | |
| cid | num | 视频cid | 必要 | |
| qn | num | 视频清晰度选择 | 非必要 | 参考[qn定义](../video/videostream_url.md#qn视频清晰度标识) |
| fnver | num | 视频流版本 | 非必要 | 参考[fnver定义](../video/videostream_url.md#fnver视频流版本标识) |
| fnval | num | 视频流类型 | 非必要 | 参考[fnval定义](../video/videostream_url.md#fnval视频流格式标识) |
| fourk | num | 是否允许4K视频 | 非必要 | 默认为0<br />画质最高1080P0<br />画质最高4K1 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功 <br />-400请求错误<br />-404无视频<br />-403权限不足未购买 |
| message | str | 错误信息 | 默认为success |
| data | obj | 数据本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------------ | ------ | ---------------------- | ---------------------------------------- |
| accept_format | str | 视频支持的分辨率的格式 | |
| code | num | 0 | |
| durl | array | 视频分段 | |
| seek_param | str | start | |
| no_rexcode | num | 0 | |
| format | str | 视频格式 | |
| fnval | num | 0 | |
| video_project | bool | true | |
| fnver | num | 0 | |
| message | str | 空 | |
| type | str | 视频格式 | |
| accept_quality | array | 视频支持的分辨率列表 | |
| quality | num | 视频分辨率代码 | **值含义见上表** |
| timelength | num | 视频长度 | 单位为毫秒<br />不同分辨率可能有略微差异 |
| result | str | suee | **作用尚不明确** |
| seek_type | str | offset | **作用尚不明确** |
| has_paid | bool | false | **作用尚不明确** |
| supportFormats | array | 视频分辨率详细列表 | |
| from | str | local | **作用尚不明确** |
| video_codecid | num | | **作用尚不明确** |
| accept_description | array | 视频支持的分辨率列表 | |
| status | num | 0 | **作用尚不明确** |
`data`中的`durl`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ----------------- | ---- |
| 0 | obj | 视频分段1信息 | |
| n | obj | 视频分段(n+1)信息 | |
| …… | obj | …… | |
`durl`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ------ | ------------ | ---------------------------------- |
| size | num | 视频大小 | 单位为Byte |
| ahead | str | 空 | 作用尚不明确 |
| length | num | 视频长度 | 单位为毫秒 |
| vhead | str | 空 | 作用尚不明确 |
| backup_url | array | 备用视频流 | |
| url | str | 视频流url | 链接有效时间为120min |
| order | num | 视频分段序号 | 某些视频会分为多个片段 |
`durl`数组中的对象中的`backup_url`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------- | ---------------- |
| 0 | str | 备用视频流url | 有效时间为120min |
`data`中的`supportFormats`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------------- | ---- |
| 0 | obj | 分辨率详细信息1 | |
| n | obj | 分辨率详细信息(n+1) | |
| …… | obj | …… | …… |
`supportFormats`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------- | ---- | ---------- | ---- |
| format | str | 分辨率名称 | |
| description | atr | 分辨率备注 | |
| quality | num | 分辨率代码 | |
`data`中的`accept_description`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | --------------- | ---- |
| 0 | str | 分辨率名称1 | |
| n | str | 分辨率名称(n+1) | |
| …… | str | …… | …… |
**示例:**
获取课程`ep790`cid=`132105993`avid=`76973173`的视频流url清晰度为1080P60
```shell
curl -G 'https://api.bilibili.com/pugv/player/web/playurl' \
--data-urlencode 'ep_id=790' \
--data-urlencode 'avid=76973173' \
--data-urlencode 'cid=132105993' \
--data-urlencode 'qn=116' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"data": {
"accept_format": "flv_p60,flv720_p60,flv,flv720,flv480,flv360",
"code": 0,
"durl": [
{
"size": 1105854161,
"ahead": "",
"length": 2222204,
"vhead": "",
"backup_url": [
"https://upos-sz-mirrorks3c.bilivideo.com/upgcxcode/93/59/132105993/132105993_da2-1-116.flv?e=ig8euxZM2rNcNbNghzTBhwdlhbNz7bUVhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1591596728&gen=playurl&os=ks3cbv&oi=606633803&trid=76bea9a9e56f4cb89a9aff2f8213c9acu&platform=pc&upsig=b271bf493bff32ffe62969582c8d18b4&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=0&orderid=1,2&logo=40000000"
],
"url": "https://upos-sz-mirrorks3.bilivideo.com/upgcxcode/93/59/132105993/132105993_da2-1-116.flv?e=ig8euxZM2rNcNbNghzTBhwdlhbNz7bUVhoNvNC8BqJIzNbfqXBvEqxTEto8BTrNvN0GvT90W5JZMkX_YN0MvXg8gNEV4NC8xNEV4N03eN0B5tZlqNxTEto8BTrNvNeZVuJ10Kj_g2UB02J0mN0B5tZlqNCNEto8BTrNvNC7MTX502C8f2jmMQJ6mqF2fka1mqx6gqj0eN0B599M=&uipk=5&nbs=1&deadline=1591596728&gen=playurl&os=ks3bv&oi=606633803&trid=76bea9a9e56f4cb89a9aff2f8213c9acu&platform=pc&upsig=6a8ae3711bd0bb2a484ec2427d659b14&uparams=e,uipk,nbs,deadline,gen,os,oi,trid,platform&mid=0&orderid=0,2&logo=80000000",
"order": 1,
"md5": ""
}
],
"seek_param": "start",
"no_rexcode": 0,
"format": "flv_p60",
"fnval": 0,
"video_project": true,
"fnver": 0,
"message": "",
"type": "FLV",
"accept_quality": [
116,
74,
80,
64,
32,
16
],
"quality": 116,
"timelength": 2222204,
"result": "suee",
"seek_type": "offset",
"has_paid": false,
"supportFormats": [
{
"format": "flv_p60",
"description": "高清 1080P60",
"quality": 116
},
{
"format": "flv720_p60",
"description": "高清 720P60",
"quality": 74
},
{
"format": "flv",
"description": "高清 1080P",
"quality": 80
},
{
"format": "flv720",
"description": "高清 720P",
"quality": 64
},
{
"format": "flv480",
"description": "清晰 480P",
"quality": 32
},
{
"format": "flv360",
"description": "流畅 360P",
"quality": 16
}
],
"from": "local",
"video_codecid": 7,
"accept_description": [
"高清 1080P60",
"高清 720P60",
"高清 1080P",
"高清 720P",
"清晰 480P",
"流畅 360P"
],
"status": 0
},
"message": "success"
}
```
</details>

View File

@ -0,0 +1,95 @@
# 终端信息查询
- [终端信息查询](#终端信息查询)
---
## 终端信息查询
> https://api.bilibili.com/client_info
*请求方式:任意*
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------- |
| code | num | 返回值 | 0成功 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | -------- | ------------------- | ------------ |
| country | str | 国家/地区名 | |
| ip | str | 公网IP地址 | |
| province | str | 省/州 | 非必须存在项 |
| city | str | 城市 | 非必须存在项 |
| district | district | | |
| isp | str | 运营商名 | |
| dns | str | dns服务器ip | |
| dns_isp | str | dns服务器ip运营商名 | |
| headers | obj | 头部字段 | |
`data`中的`headers`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------------------------------- | ---- | ----------------- | ---- |
| HTTP_ACCEPT_ENCODING | str | | |
| HTTP_X_CACHE_SERVER | str | CDN服务器名 | |
| HTTP_X_CACHE_SERVER_ADDR | str | CDN服务器ip | |
| HTTP_X_BACKEND_BILI_REAL_IP | str | 真实服务器ip | |
| HTTP_X_BACKEND_BILI_REAL_IPPORT | str | 真实服务器端口 | |
| HTTP_X_BACKEND_BILI_REAL_IP_CHAIN | str | 真实服务器ip+端口 | |
| HTTP_X_SCHEME | str | 访问协议 | |
| HTTP_HOST | str | 访问域名 | |
| HTTP_USER_AGENT | str | 客户端UA | |
| HTTP_ACCEPT | str | | |
| HTTP_CACHE_CONTROL | str | | |
**示例:**
```shell
curl 'https://api.bilibili.com/client_info'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "ok",
"data": {
"country": "中国",
"ip": "36.40.120.140",
"province": "陕西",
"city": "渭南",
"district": null,
"isp": "电信",
"dns": null,
"dns_isp": null,
"headers": {
"HTTP_ACCEPT_ENCODING": "gzip",
"HTTP_X_CACHE_SERVER": "ks-bj-webcdn-07",
"HTTP_X_CACHE_SERVER_ADDR": "10.33.2.170",
"HTTP_X_BACKEND_BILI_REAL_IP": "36.40.120.140",
"HTTP_X_BACKEND_BILI_REAL_IPPORT": "22058",
"HTTP_X_BACKEND_BILI_REAL_IP_CHAIN": "36.40.120.140:22058",
"HTTP_X_SCHEME": "https",
"HTTP_HOST": "api.bilibili.com",
"HTTP_USER_AGENT": "PostmanRuntime/7.26.8",
"HTTP_ACCEPT": "*/*",
"HTTP_CACHE_CONTROL": "no-cache"
}
}
}
```
</details>

66
docs/clientinfo/ip.md Normal file
View File

@ -0,0 +1,66 @@
# 通过ip确定地理位置
- [通过ip确定位置](#通过ip确定位置)
---
## 通过ip确定位置
> https://api.bilibili.com/x/web-interface/zone
*请求方式GET*
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------- |
| code | num | 返回值 | 0成功 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------ | ---- | ------------- | ------------ |
| addr | str | 公网IP地址 | |
| country | str | 国家/地区名 | |
| province | str | 省/州 | 非必须存在项 |
| city | str | 城市 | 非必须存在项 |
| isp | str | 运营商名 | |
| latitude | num | 纬度 | |
| longitude | num | 经度 | |
| zone_id | num | ip数据库id | |
| country_code | num | 国家/地区代码 | |
**示例:**
```shell
curl 'https://api.bilibili.com/x/web-interface/zone'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code":0,
"message":"0",
"ttl":1,
"data":{
"addr":"36.40.120.145",
"country":"中国",
"province":"陕西",
"city":"渭南",
"isp":"电信",
"latitude":34.4995,
"longitude":109.492821,
"zone_id":4472912,
"country_code":86
}
}
```
</details>

544
docs/comment/action.md Normal file
View File

@ -0,0 +1,544 @@
# 评论区操作
- [发表评论](#发表评论)
- [点赞评论](#点赞评论)
- [点踩评论](#点踩评论)
- [删除评论](#删除评论)
- [置顶评论](#置顶评论)
- [举报评论](#举报评论)
---
## 发表评论
> https://api.bilibili.com/x/v2/reply/add
*请求方式POST*
认证方式CookieSESSDATA或APP
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------------------ | -------------- | ------------------------------------------------------------ |
| access_key | str | APP登录Token | APP方式必要 | |
| type | num | 评论区类型代码 | 必要 | **[类型代码见表](readme.md#评论区类型代码)** |
| oid | num | 目标评论区id | 必要 | |
| root | num | 根评论rpid | 非必要 | 二级评论以上使用 |
| parent | num | 父评论rpid | 非必要 | 二级评论同根评论id<br />大于二级评论为要回复的评论id |
| message | str | 发送评论内容 | 必要 | 最大1000字符<br />表情使用表情转义符 |
| plat | num | 发送平台标识 | 非必要 | 1web端<br />2安卓客户端<br />3ios客户端<br />4wp客户端<br />默认为1 |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-102账号被封停<br />-111csrf校验失败<br />-400请求错误<br />-404无此项<br />-509请求过于频繁<br />12001已经存在评论主题<br />12002评论区已关闭<br />12003禁止回复<br />12006没有该评论<br />12009评论主体的type不合法<br />12015需要评论验证码<br />12016评论内容包含敏感信息<br />12025评论字数过多<br />12035该账号被UP主列入评论黑名单<br />12051重复评论请勿刷屏<br />12052评论区已关闭<br />**(其他错误码有待补充)** |
| message | str | 错误信息 | <br /> |
| ttl | num | 1 | |
| data | obj | 数据本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------------- | ----------------------------- | -------------- | ------------------------------------------------------------ |
| success_action | num | 0 | **作用尚不明确** |
| success_toast | str | 状态文字 | |
| need_captcha | bool | false | 评论需要验证码(未证实) |
| url | str | 空 | **作用尚不明确** |
| rpid | num | 评论rpid | |
| rpid_str | str | 评论rpid | 字串格式 |
| dialog | num | 回复对方rpid | 若为一级评论则为0<br />若为二级评论则为该评论id<br />大于二级评论为上一级评论id |
| dialog_str | str | 回复对方rpid | 字串格式 |
| root | num | 根评论rpid | 若为一级评论则为0<br />大于一级评论则为根评论id |
| root_str | str | 根评论rpid | 字串格式 |
| parent | num | 回复父评论rpid | 若为一级评论则为0<br />若为二级评论则为根评论id<br />大于二级评论为上一级评论id |
| parent_str | str | 回复父评论rpid | 字串格式 |
| emote | obj | 表情转义符信息 | [对象定义见表](readme.md#评论条目对象) |
| reply | 有效时obj<br />无效时null | | [对象定义见表](readme.md#评论条目对象) |
**示例:**
给视频`av243322853`发送内容为`测试test[泠鸢yousa_awsl]`的评论带有表情转义符平台标识为1web端
```shell
curl 'https://api.bilibili.com/x/v2/reply/add' \
--data-urlencode 'type=1' \
--data-urlencode 'oid=243322853' \
--data-urlencode 'message=测试test[泠鸢yousa_awsl]' \
--data-urlencode 'plat=1' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"success_action": 0,
"success_toast": "发送成功",
"need_captcha": false,
"url": "",
"rpid": 3043212039,
"rpid_str": "3043212039",
"dialog": 0,
"dialog_str": "0",
"root": 0,
"root_str": "0",
"parent": 0,
"parent_str": "0",
"emote": {
"[泠鸢yousa_awsl]": {
"id": 2086,
"package_id": 93,
"state": 0,
"type": 3,
"attr": 0,
"text": "[泠鸢yousa_awsl]",
"url": "http://i0.hdslb.com/bfs/emote/7663b729161bd4556c2ec318c07791000743eb56.png",
"meta": {
"size": 2
},
"mtime": 1589776042
}
},
"reply": {
"rpid": 3043212039,
"oid": 243322853,
"type": 1,
"mid": 293793435,
"root": 0,
"parent": 0,
"dialog": 0,
"count": 0,
"rcount": 0,
"state": 0,
"fansgrade": 0,
"attr": 0,
"ctime": 1592233764,
"rpid_str": "3043212039",
"root_str": "0",
"parent_str": "0",
"like": 0,
"action": 0,
"member": {
"mid": "293793435",
"uname": "社会易姐QwQ",
"sex": "男",
"sign": "高中技术宅一枚爱好MC&电子&8-bit音乐&数码&编程,资深猿厨",
"avatar": "http://i1.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg",
"rank": "10000",
"DisplayRank": "0",
"level_info": {
"current_level": 5,
"current_min": 0,
"current_exp": 0,
"next_exp": 0
},
"pendant": {
"pid": 1888,
"name": "泠鸢yousa",
"image": "http://i0.hdslb.com/bfs/garb/item/3e66e712b8e70c6b02393c54ad5fd8d993eb39f9.png",
"expire": 0,
"image_enhance": "http://i0.hdslb.com/bfs/garb/item/3e66e712b8e70c6b02393c54ad5fd8d993eb39f9.png"
},
"nameplate": {
"nid": 0,
"name": "",
"image": "",
"image_small": "",
"level": "",
"condition": ""
},
"official_verify": {
"type": -1,
"desc": ""
},
"vip": {
"vipType": 2,
"vipDueDate": 1612454400000,
"dueRemark": "",
"accessStatus": 0,
"vipStatus": 1,
"vipStatusWarn": "",
"themeType": 0,
"label": {
"path": "",
"text": "年度大会员",
"label_theme": "annual_vip"
}
},
"fans_detail": null,
"following": 0,
"is_followed": 0,
"user_sailing": {
"pendant": {
"id": 1888,
"name": "泠鸢yousa",
"image": "http://i0.hdslb.com/bfs/garb/item/3e66e712b8e70c6b02393c54ad5fd8d993eb39f9.png",
"jump_url": "",
"type": "suit"
},
"cardbg": null,
"cardbg_with_focus": null
}
},
"content": {
"message": "测试test[泠鸢yousa_awsl]",
"plat": 1,
"device": "",
"members": [],
"emote": {
"[泠鸢yousa_awsl]": {
"id": 2086,
"package_id": 93,
"state": 0,
"type": 3,
"attr": 0,
"text": "[泠鸢yousa_awsl]",
"url": "http://i0.hdslb.com/bfs/emote/7663b729161bd4556c2ec318c07791000743eb56.png",
"meta": {
"size": 2
},
"mtime": 1589776042
}
},
"jump_url": {},
"max_line": 0
},
"replies": null,
"assist": 0,
"folder": {
"has_folded": false,
"is_folded": false,
"rule": "https://www.bilibili.com/blackboard/foldingreply.html"
},
"up_action": {
"like": false,
"reply": false
},
"show_follow": false
}
}
}
```
</details>
## 点赞评论
> https://api.bilibili.com/x/v2/reply/action
*请求方式POST*
认证方式CookieSESSDATA或APP
点赞成功后会同时消去该评论的点踩
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------------------ | -------------- | -------------------------------------------- |
| access_key | str | APP登录Token | APP方式必要 | |
| type | num | 评论区类型代码 | 必要 | **[类型代码见表](readme.md#评论区类型代码)** |
| oid | num | 目标评论区id | 必要 | |
| rpid | num | 目标评论rpid | 必要 | |
| action | num | 操作代码 | 非必要 | 默认为0<br />0取消赞<br />1点赞 |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-102账号被封停<br />-111csrf校验失败<br />-400请求错误<br />-404无此项<br />-509请求过于频繁<br />12002评论区已关闭<br />12004禁止操作 赞或踩<br />12006没有该评论<br />12009评论主体的type不合法<br />12011不合法的赞或踩<br />**(其他错误码有待补充)** |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
**示例:**
点赞视频`av243322853`下评论`rpid=3039053308`
```shell
curl 'https://api.bilibili.com/x/v2/reply/action' \
--data-urlencode 'type=1' \
--data-urlencode 'oid=243322853' \
--data-urlencode 'rpid=3039053308' \
--data-urlencode 'action=1' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>
## 点踩评论
> https://api.bilibili.com/x/v2/reply/hate
*请求方式POST*
认证方式CookieSESSDATA或APP
点踩成功后会同时消去该评论的点赞
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------------------ | -------------- | -------------------------------------------- |
| access_key | str | APP登录Token | APP方式必要 | |
| type | num | 评论区类型代码 | 必要 | **[类型代码见表](readme.md#评论区类型代码)** |
| oid | num | 目标评论区id | 必要 | |
| rpid | num | 目标评论rpid | 必要 | |
| action | num | 操作代码 | 非必要 | 默认为0<br />0取消踩<br />1点踩 |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-102账号被封停<br />-111csrf校验失败<br />-400请求错误<br />-404无此项<br />-509请求过于频繁<br />12002评论区已关闭<br />12004禁止操作 赞或踩<br />12006没有该评论<br />12009评论主体的type不合法<br />12011不合法的赞或踩<br />**(其他错误码有待补充)** |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
**示例:**
点踩视频`av243322853`下评论`rpid=3039053308`
```shell
curl 'https://api.bilibili.com/x/v2/reply/hate' \
--data-urlencode 'type=1' \
--data-urlencode 'oid=243322853' \
--data-urlencode 'rpid=3039053308' \
--data-urlencode 'action=1' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>
## 删除评论
> https://api.bilibili.com/x/v2/reply/del
*请求方式POST*
认证方式CookieSESSDATA或APP
只能删除自己的评论,或自己管理的评论区下的评论
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------------------ | -------------- | -------------------------------------------- |
| access_key | str | APP登录Token | APP方式必要 | |
| type | num | 评论区类型代码 | 必要 | **[类型代码见表](readme.md#评论区类型代码)** |
| oid | num | 目标评论区id | 必要 | |
| rpid | num | 目标评论rpid | 必要 | |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-102账号被封停<br />-111csrf校验失败<br />-400请求错误<br />-403权限不足<br />-404无此项<br />-509请求过于频繁<br />12002评论区已关闭<br />12009评论主体的type不合法<br />12022已经被删除了<br />**(其他错误码有待补充)** |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | **作用尚不明确** |
**示例:**
删除`av243322853`下评论`rpid=3039053308`
```shell
curl 'https://api.bilibili.com/x/v2/reply/del' \
--data-urlencode 'type=1' \
--data-urlencode 'oid=243322853' \
--data-urlencode 'rpid=3039053308' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>
## 置顶评论
> https://api.bilibili.com/x/v2/reply/top
*请求方式POST*
认证方式CookieSESSDATA或APP
只能置顶自己管理的评论区中的一级评论
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------------------ | -------------- | -------------------------------------------- |
| access_key | str | APP登录Token | APP方式必要 | |
| type | num | 评论区类型代码 | 必要 | **[类型代码见表](readme.md#评论区类型代码)** |
| oid | num | 目标评论区id | 必要 | |
| rpid | num | 目标评论rpid | 必要 | |
| action | num | 操作代码 | 非必要 | 默认为0<br />0取消置顶<br />1设为置顶 |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-102账号被封停<br />-111csrf校验失败<br />-400请求错误<br />-403权限不足<br />-404无此项<br />-509请求过于频繁<br />12002评论区已关闭<br />12006没有该评论<br />12009评论主体的type不合法<br />12029已经有置顶评论<br />12030不能置顶非一级评论<br />**(其他错误码有待补充)** |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
**示例:**
置顶视频`av243322853`下评论`rpid=2940645593`
```shell
curl 'https://api.bilibili.com/x/v2/reply/top' \
--data-urlencode 'type=1' \
--data-urlencode 'oid=243322853' \
--data-urlencode 'rpid=2940645593' \
--data-urlencode 'action=1' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>
## 举报评论
> https://api.bilibili.com/x/v2/reply/report
*请求方式POST*
认证方式CookieSESSDATA或APP
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------------------ | -------------- | -------------------------------------------- |
| access_key | str | APP登录Token | APP方式必要 | |
| type | num | 评论区类型代码 | 必要 | **[类型代码见表](readme.md#评论区类型代码)** |
| oid | num | 目标评论区id | 必要 | |
| rpid | num | 目标评论rpid | 必要 | |
| reason | num | 举报类型 | 必要 | **类型代码见下表** |
| content | str | 其他举报备注 | 非必要 | `reason=0`时有效 |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
举报类型`reason`
| 代码 | 含义 |
| ---- | -------------- |
| 0 | 其他 |
| 1 | 垃圾广告 |
| 2 | 色情 |
| 3 | 刷屏 |
| 4 | 引战 |
| 5 | 剧透 |
| 6 | 政治 |
| 7 | 人身攻击 |
| 8 | 内容不相关 |
| 9 | 违法违规 |
| 10 | 低俗 |
| 11 | 非法网站 |
| 12 | 赌博诈骗 |
| 13 | 传播不实信息 |
| 14 | 怂恿教唆信息 |
| 15 | 侵犯隐私 |
| 16 | 抢楼 |
| 17 | 青少年不良信息 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-102账号被封停<br />-111csrf校验失败<br />-400请求错误<br />-403权限不足<br />-404无此项<br />-500服务器错误<br />-509请求过于频繁<br />12002评论区已关闭<br />12006没有该评论<br />12008已经举报过了<br />12009评论主体的type不合法<br />12019举报过于频繁<br />**(其他错误码有待补充)** |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
**示例:**
举报视频` av752881391 `下评论`rpid=3062537442`,理由是`引战`
```shell
curl 'https://api.bilibili.com/x/v2/reply/report' \
--data-urlencode 'type=1' \
--data-urlencode 'oid=752881391' \
--data-urlencode 'rpid=3062537442' \
--data-urlencode 'reason=4' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1
}
```
</details>

5853
docs/comment/list.md Normal file

File diff suppressed because it is too large Load Diff

336
docs/comment/readme.md Normal file
View File

@ -0,0 +1,336 @@
# 评论区
<img src="../../assets/img/comment.svg" width="100" height="100"/>
评论系统为全站通用且APP与web端接口共用以type标明对象类型以oid指向响应的对象id
---
**继续查看:**
- [查询类](list.md)
- [操作类](action.md)
## 评论区类型代码
PS以下部分内容来源不明有待验证
| 代码 | 评论区类型 | oid 的意义 |
| ---- | ----------------------- | ----------- |
| 1 | 视频稿件 | 稿件 avid |
| 2 | 话题 | 话题 id |
| 4 | 活动 | 活动 id |
| 5 | 小视频 | 小视频 id |
| 6 | 小黑屋封禁信息 | 封禁公示 id |
| 7 | 公告信息 | 公告 id |
| 8 | 直播活动 | 直播间 id |
| 9 | 活动稿件 | (?) |
| 10 | 直播公告 | (?) |
| 11 | 相簿(图片动态) | 相簿 id |
| 12 | 专栏 | 专栏 cvid |
| 13 | 票务 | (?) |
| 14 | 音频 | 音频 auid |
| 15 | 风纪委员会 | 众裁项目 id |
| 16 | 点评 | (?) |
| 17 | 动态(纯文字动态&分享) | 动态 id |
| 18 | 播单 | (?) |
| 19 | 音乐播单 | (?) |
| 20 | 漫画 | (?) |
| 21 | 漫画 | (?) |
| 22 | 漫画 | 漫画 mcid |
| 33 | 课程 | 课程 epid |
## 评论条目对象
| 字段 | 类型 | 内容 | 备注 |
| ------------- | ------------------------------- | ------------------ | ------------------------------------------------------------ |
| rpid | num | 评论 rpid | |
| oid | num | 评论区对象 id | |
| type | num | 评论区类型代码 | **类型代码见上表** |
| mid | num | 发送者 mid | |
| root | num | 根评论 rpid | 若为一级评论则为 0<br />大于一级评论则为根评论 id |
| parent | num | 回复父评论 rpid | 若为一级评论则为 0<br />若为二级评论则为根评论 rpid<br />大于二级评论为上一级评 论 rpid |
| dialog | num | 回复对方 rpid | 若为一级评论则为 0<br />若为二级评论则为该评论 rpid<br />大于二级评论为上一级评论 rpid |
| count | num | 二级评论条数 | |
| rcount | num | 回复评论条数 | |
| floor | num | 评论楼层号 | **注:若不支持楼层则无此项** |
| state | num | (?) | |
| fansgrade | num | 是否具有粉丝标签 | 0<br />1有 |
| attr | num | 某属性位? | |
| ctime | num | 评论发送时间 | 时间戳 |
| rpid_str | str | 评论rpid | 字串格式 |
| root_str | str | 根评论rpid | 字串格式 |
| parent_str | str | 回复父评论rpid | 字串格式 |
| like | num | 评论获赞数 | |
| action | num | 当前用户操作状态 | 需要登录(Cookie 或 APP) <br />否则恒为 0<br />0<br />1已点赞<br />2已点踩 |
| member | obj | 评论发送者信息 | |
| content | obj | 评论信息 | |
| replies | 无效时null<br />有效时array | 评论回复条目预览 | **仅嵌套一层**<br />否则为 null |
| assist | num | (?) | |
| folder | obj | 折叠信息 | |
| up_action | obj | 评论 UP 主操作信息 | |
| show_follow | bool | (?) | |
| invisible | bool | | |
| card_label | obj | 右上角卡片标签信息 | |
| reply_control | obj | 评论提示文案信息 | |
`评论条目`中的`member`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------------- | ----------------------------- | ---------------------- | ------------------------------------------------------------ |
| mid | str | 发送者 mid | |
| uname | str | 发送者昵称 | |
| sex | str | 发送者性别 | 男 女 保密 |
| sign | str | 发送者签名 | |
| avatar | str | 发送者头像 url | |
| rank | str | (?) | |
| DisplayRank | str | (?) | |
| level_info | obj | 发送者等级 | |
| pendant | obj | 发送者头像框信息 | |
| nameplate | obj | 发送者勋章信息 | |
| official_verify | obj | 发送者认证信息 | |
| vip | obj | 发送者会员信息 | |
| fans_detail | 无效时null<br />有效时obj | 发送者粉丝标签 | |
| following | num | 是否关注该用户 | 需要登录(Cookie或APP) <br />否则恒为0<br />0未关注<br />1已关注 |
| is_followed | num | 是否被该用户关注 | 需要登录(Cookie或APP) <br />否则恒为0<br />0未关注<br />1已关注 |
| user_sailing | obj | 发送者评论条目装扮信息 | |
| is_contractor | bool | 是否为合作用户? | |
| contract_desc | str | 合作用户说明? | |
`member`中的`level_info`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------- | ---- | -------- | ---- |
| current_level | num | 用户等级 | |
| current_min | num | 0 | |
| current_exp | num | 0 | |
| next_exp | num | 0 | |
`member`中的`pendant`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------------- | ---- | -------------- | ---- |
| pid | num | 头像框 id | |
| name | str | 头像框名称 | |
| image | str | 头像框图片 url | |
| expire | num | 0 | |
| image_enhance | str | 头像框图片 url | |
| image_enhance_frame | str | (?) | |
`member`中的`nameplate`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------- | ---- | ----------------- | ---- |
| nid | num | 勋章 id | |
| name | str | 勋章名称 | |
| image | str | 挂件图片 url 正常 | |
| image_small | str | 勋章图片 url 小 | |
| level | str | 勋章等级 | |
| condition | str | 勋章条件 | |
`member`中的`official_verify`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | -------- | ---------------------------------------- |
| type | num | 是否认证 | -1<br />0个人认证<br />1机构认证 |
| desc | str | 认证信息 | 无为空 |
`member`中的`vip`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------------------- | ---- | -------------- | --------------------------------------- |
| vipType | num | 大会员类型 | 0<br />1月会员<br />2年以上会员 |
| vipDueDate | num | 大会员到期时间 | 毫秒 时间戳 |
| dueRemark | str | (?) | |
| accessStatus | num | (?) | |
| vipStatus | num | 大会员状态 | 0<br />1有 |
| vipStatusWarn | str | (?) | |
| theme_type | num | 会员样式 id | |
| label | obj | 会员铭牌样式 | |
| avatar_subscript | num | (?) | |
| avatar_subscript_url | str | (?) | |
| nickname_color | str | 昵称颜色 | |
`vip`中的`label`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------ | ---- | ------------ | ------------------------------------------------------------ |
| path | str | (?) | |
| text | str | 会员类型文案 | |
| label_theme | str | 会员类型 | vip大会员<br />annual_vip年度大会员<br />ten_annual_vip十年大会员<br />hundred_annual_vip百年大会员 |
| text_color | str | 文字颜色? | |
| bg_style | num | (?) | |
| bg_color | str | 背景颜色? | |
| border_color | str | 描边颜色? | |
`member`中的`fans_detail`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------- | ---- | ------------ | ---- |
| uid | num | 用户 mid | |
| medal_id | num | 粉丝标签 id | |
| medal_name | str | 粉丝标签名 | |
| score | num | (?) | |
| level | num | 当前标签等级 | |
| intimacy | num | (?) | |
| master_status | num | (?) | |
| is_receive | num | (?) | |
`member`中的`user_sailing`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------------- | ----------------------------- | ------------ | ---- |
| pendant | 无效时null<br />有效时obj | 头像框信息 | |
| cardbg | 无效时null<br />有效时obj | 评论卡片装扮 | |
| cardbg_with_focus | null | (?) | |
`user_sailing`中的`pendant`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------------- | ---- | -------------- | -------------------------------------- |
| id | num | 头像框 id | |
| name | str | 头像框名称 | |
| image | str | 头像框图片 url | |
| jump_url | str | 空 | |
| type | str | 装扮类型 | suit一般装扮<br />vip_suitvip 装扮 |
| image_enhance | str | (?) | |
| image_enhance_frame | str | (?) | |
`user_sailing`中的`cardbg`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | ------------------------ | -------------------------------------- |
| id | num | 评论条目装扮 id | |
| name | str | 评论条目装扮名称 | |
| image | str | 评论条目装扮图片 url | |
| jump_url | str | 评论条目装扮商城页面 url | |
| fan | obj | 粉丝专属信息 | |
| type | str | 装扮类型 | suit一般装扮<br />vip_suitvip 装扮 |
`cardbg`中的`fan`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | ------------------ | ---------------- |
| is_fan | num | 是否为粉丝专属装扮 | 0<br />1是 |
| number | num | 粉丝专属编号 | |
| color | str | 数字颜色 | 颜色码 |
| name | str | 装扮名称 | |
| num_desc | str | 粉丝专属编号 | 字串格式 |
`评论条目`中的`content`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ----- | ------------------ | ------------------------------------------------------------ |
| message | str | 评论内容 | **重要** |
| plat | num | 评论发送端 | 1web端<br />2安卓客户端<br />3ios 客户端<br />4wp 客户端 |
| device | str | 评论发送平台设备 | |
| members | array | at 到的用户信息 | |
| emote | obj | 需要渲染的表情转义 | 评论内容无表情则无此项 |
| jump_url | obj | 需要高亮的超链转义 | |
| max_line | num | 6 | 收起最大行数 |
`content`中的`members`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ---------------- | -------------------------------- |
| 0 | obj | at到的用户 1 | 基本同`评论条目`中的`member`对象 |
| n | obj | at到的用户 (n+1) | 项数为at到的不同的用户数 |
| …… | obj | …… | …… |
`content`中的`emote`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------ | ---- | ---------------- | -------- |
| {表情转义符} | obj | 表情转义符信息 1 | |
| …… | obj | 表情转义符信息 n | 向下扩展 |
`emote`中的`{表情转义符}`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ---- | ------------ | -------------------------------------------------------- |
| id | num | 表情 id | |
| package_id | num | 表情包 id | |
| state | num | 0 | |
| type | num | 表情类型 | 1免费<br />2会员专属<br />3购买所得<br />4颜文字 |
| attr | num | (?) | |
| text | str | 表情转义符 | |
| url | str | 表情图片 url | |
| meta | obj | 属性信息 | |
| mtime | num | 表情创建时间 | 时间戳 |
| jump_title | str | 表情名称 | |
`{表情转义符}`中的`meta`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----- | ---- | ------------ | ---------------- |
| size | num | 表情尺寸信息 | 1<br />2大 |
| alias | str | 简写名 | 无则无此项 |
`content`中的`jump_url`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ---- | -------------- | -------- |
| {超链转义} | obj | 超链转义信息 1 | |
| …… | obj | 超链转义信息 n | 向下扩展 |
`jump_url`中的`{超链转义}`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------------- | ---- | -------- | ---- |
| title | str | 标题 | |
| state | num | 图标 url | |
| prefixIcon | str | (?) | |
| appUrlSchema | str | (?) | |
| appName | str | (?) | |
| appPackageName | str | (?) | |
| clickReport | str | 上报 id | |
`评论条目`中的`replies`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | --------- | ------------------------------------------------------------ |
| 0 | obj | 回复条目1 | **为本对象的递归嵌套**<br />**仅可嵌套一层**<br />按照热度顺序排列 |
| 1 | obj | 回复条目2 | |
| 2 | obj | 回复条目3 | 最后一项 |
`评论条目`中的`folder`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ---- | ---------------------- | ---- |
| has_folded | bool | 是否有被折叠的二级评论 | |
| is_folded | bool | 评论是否被折叠 | |
| rule | str | 相关规则页面 url | |
`评论条目`中的`up_action`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----- | ---- | ---------------- | ----------------------- |
| like | bool | 是否UP主觉得很赞 | false<br />true是 |
| reply | bool | 是否被UP主回复 | false<br />true是 |
`评论条目`中的`card_label`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------------------- | ---- | ------------ | ----------------------------- |
| rpid | num | 评论 rpid | |
| text_content | str | 标签文本 | 已知有`妙评` |
| text_color_day | str | 日间文本颜色 | 十六进制颜色值,下同 |
| text_color_night | str | 夜间文本颜色 | |
| label_color_day | str | 日间标签颜色 | |
| label_color_night | str | 夜间标签颜色 | |
| image | str | | 作用不明 |
| type | str | 1 | 作用不明 |
| background | str | 背景图片 url | |
| background_width | num | 背景图片宽度 | |
| background_height | num | 背景图片高度 | |
| jump_url | str | 跳转链接 | |
| effect | num | 0 | 作用不明,可能用于控制动画,下同 |
| effect_start_time | num | 0 | |
`评论条目`中的`reply_control`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------------------- | ---- | -------- | -------------------- |
| sub_reply_entry_text | str | 回复提示 | `共 xx 条回复` |
| sub_reply_title_text | str | 回复提示 | `相关回复共有 xx 条` |
| time_desc | str | 时间提示 | `xx 天/小时 前发布` |

View File

@ -0,0 +1,275 @@
# 电磁力相关
- [获取电磁力等级web端](#获取电磁力等级web端)
- [获取电磁力详细数值(双端)](#获取电磁力详细数值双端)
- [获取电磁力数值历史变化(双端)](#获取电磁力数值历史变化双端)
---
电磁力每周日下午刷新
## 获取电磁力等级web端
> https://member.bilibili.com/x/web/elec/user
*请求方式GET*
认证方式仅可CookieSESSDATA
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------ | ---- | ----------- | ---------------- |
| mid | num | 当前用户mid | |
| state | num | 电磁力等级 | |
| reason | str | 空 | **作用尚不明确** |
**示例:**
```shell
curl 'https://member.bilibili.com/x/web/elec/user' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"mid": 293793435,
"state": 2,
"reason": ""
}
}
```
</details>
## 获取电磁力详细数值(双端)
> https://api.bilibili.com/studio/up-rating/rating/summary
*请求方式GET*
认证方式CookieSESSDATA或APP
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------ | ----------- | ---- |
| access_key | str | APP登录Token | APP方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | ------- | ----------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------------- | ---- | -------------- | ---- |
| date | str | 数据刷新时间 | YYYY-MM-DD |
| level | obj | 电磁力等级 | |
| creative | obj | 创作力 | |
| influence | obj | 影响力 | |
| credit | obj | 信用分 | |
`data`中的`level` `creative` `influence` `credit`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | -------- | ---- |
| data | num | 数值 | |
| prev | num | | **作用尚不明确** |
| desc | str | 描述 | |
| date | num | 刷新时间 | 时间戳 |
**示例:**
Cookie方式
```shell
curl 'https://api.bilibili.com/studio/up-rating/rating/summary' \
-b 'SESSDATA=xxx'
```
APP方式
```shell
curl -G 'https://api.bilibili.com/studio/up-rating/rating/summary' \
--data-urlencode 'access_key=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"date": "2020-07-05",
"level": {
"data": 1,
"prev": 0,
"desc": "正式开启创作之路,希望未来的路上我们携手相伴,创作更多优质内容~",
"date": 1593878400
},
"creative": {
"data": 39,
"prev": 39,
"desc": "考察近一年来的创作行为,良好的原创投稿行为和互动数据有助于提升创作力。",
"date": 1593878400
},
"influence": {
"data": 54,
"prev": 54,
"desc": "根据近一年活跃粉丝数据进行评估,良好的粉丝活跃度是影响力的基础。",
"date": 1593878400
},
"credit": {
"data": 100,
"prev": 100,
"desc": "良好的投稿记录将维持较高的信用分,违反投稿公约的行为将扣除信用分。",
"date": 1594106147
}
}
}
```
</details>
## 获取电磁力数值历史变化(双端)
> https://api.bilibili.com/studio/up-rating/rating/history
*请求方式GET*
认证方式CookieSESSDATA或APP
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------ | ----------- | -------------- |
| access_key | str | APP登录Token | APP方式必要 | |
| type | num | 目标数据类型 | 必要 | 类型代码见下表 |
类型代码`type`
| 代码 | 含义 |
| ---- | ------ |
| 1 | 创作力 |
| 2 | 影响力 |
| 3 | 信用分 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-400请求错误 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----- | ----- | ------------ | -------- |
| date | array | 数据记录时间 | 每周更新 |
| score | array | 电磁力等级 | 每周更新 |
`data`中的`date`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ----------------- | -------------- |
| 0 | str | 1周前的日期 | MM-DD |
| n | str | n+1周前的日期 | 与数值一一对应 |
| …… | str | …… | …… |
| 7 | str | 8周前的日期 | 最后一条 |
`data`中的`score`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ----------------- | -------------- |
| 0 | num | 1周前的数值 | |
| n | num | n+1周前的数值 | 与日期一一对应 |
| …… | num | …… | …… |
| 7 | num | 8周前的数值 | 最后一条 |
**示例:**
查询创作力的历史变化
Cookie方式
```shell
curl -G 'https://api.bilibili.com/studio/up-rating/rating/history' \
--data-urlencode 'type=1' \
-b 'SESSDATA=xxx'
```
APP方式
```shell
curl -G 'https://api.bilibili.com/studio/up-rating/rating/history' \
--data-urlencode 'type=1' \
--data-urlencode 'access_key=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"date": [
"05-17",
"05-24",
"05-31",
"06-07",
"06-14",
"06-21",
"06-28",
"07-05"
],
"score": [
48,
48,
49,
49,
49,
49,
49,
49
]
}
}
```
</details>

View File

@ -0,0 +1,811 @@
# 统计与数据
- [UP主视频状态数据](#UP主视频状态数据)
- [UP主专栏状态数据](#UP主专栏状态数据)
- [视频数据增量趋势](#视频数据增量趋势)
- [专栏数据增量趋势](#专栏数据增量趋势)
- [稿件操作来源占比情况](#稿件操作来源占比情况)
- [播放来源占比情况(平台及方式)](#播放来源占比情况平台及方式)
- [播放分布情况(粉丝与路人)](#播放分布情况粉丝与路人)
---
统计与数据次日中午12刷新
## UP主视频状态数据
> https://member.bilibili.com/x/web/index/stat
*请求方式GET*
认证方式仅可CookieSESSDATA
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | 作用尚不明确 |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------------- | ---- | -------------- | ---- |
| inc_coin | num | 新增投币数 | |
| inc_elec | num | 新增充电数 | |
| inc_fav | num | 新增收藏数 | |
| inc_like | num | 新增点赞数 | |
| inc_share | num | 新增分享数 | |
| incr_click | num | 新增播放数 | |
| incr_dm | num | 新增弹幕数 | |
| incr_fans | num | 新增粉丝数 | |
| incr_reply | num | 新增评论数 | |
| total_click | num | 总计播放数 | |
| total_coin | num | 总计投币数 | |
| total_dm | num | 总计弹幕数 | |
| total_elec | num | 总计充电数 | |
| total_fans | num | 总计粉丝数 | |
| total_fav | num | 总计收藏数 | |
| total_like | num | 总计点赞数 | |
| total_reply | num | 总计评论数 | |
| total_share | num | 总计分享数 | |
**示例:**
```shell
curl 'https://member.bilibili.com/x/web/index/stat' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"inc_coin": 0,
"inc_elec": 0,
"inc_fav": 0,
"inc_like": 0,
"inc_share": 0,
"incr_click": 0,
"incr_dm": 0,
"incr_fans": 1,
"incr_reply": 0,
"total_click": 9,
"total_coin": 1,
"total_dm": 0,
"total_elec": 0,
"total_fans": 29,
"total_fav": 1,
"total_like": 1,
"total_reply": 0,
"total_share": 0
}
}
```
</details>
## UP主专栏状态数据
> https://member.bilibili.com/x/web/data/article
*请求方式GET*
认证方式仅可CookieSESSDATA
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | 作用尚不明确 |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ---- | ---------- | ---- |
| view | num | 总计阅读数 | |
| reply | num | 总计评论数 | |
| like | num | 总计点赞数 | |
| coin | num | 总计投币数 | |
| fav | num | 总计收藏数 | |
| share | num | 总计分享数 | |
| incr_view | num | 新增阅读数 | |
| incr_reply | num | 新增评论数 | |
| incr_like | num | 新增点赞数 | |
| incr_coin | num | 新增投币数 | |
| incr_fav | num | 新增收藏数 | |
| incr_share | num | 新增分享数 | |
**示例:**
```shell
curl 'https://member.bilibili.com/x/web/data/article' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"view": 290,
"reply": 17,
"like": 34,
"coin": 9,
"fav": 15,
"share": 7,
"incr_view": 6,
"incr_reply": 0,
"incr_like": 0,
"incr_coin": 0,
"incr_fav": 0,
"incr_share": 0
}
}
```
</details>
## 视频数据增量趋势
> https://member.bilibili.com/x/web/data/article/thirty
*请求方式GET*
认证方式仅可CookieSESSDATA
数据为前30天
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------------ | ------ | -------------- |
| type | num | 目标数据类型 | 必要 | 类型代码见下表 |
类型代码`type`
| 代码 | 含义 |
| ---- | ---- |
| 1 | 播放 |
| 2 | 弹幕 |
| 3 | 评论 |
| 4 | 分享 |
| 5 | 投币 |
| 6 | 收藏 |
| 7 | 充电 |
| 8 | 点赞 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ----- | -------- | ------------------------------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-400请求错误 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | 作用尚不明确 |
| data | array | 趋势列表 | |
`data`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ----------------- | -------- |
| 0 | obj | 1天前的数据 | |
| n | obj | n+1天前的数据 | |
| …… | obj | …… | …… |
| 29 | obj | 30天前的数据 | 最后一条 |
`data`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ---- | -------- | -------------------- |
| date_key | num | 对应时间 | 时间戳 前一天的8:00 |
| total_inc | num | 增加数量 | 意义为数据类型决定 |
**示例:**
查询30天前的视频播放增量趋势可知`2020-04-05`的播放增量为`46``2020-04-04`的播放增量为`58`
```shell
curl -G 'https://member.bilibili.com/x/web/data/pandect' \
--data-urlencode 'type=1' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": [{
"date_key": 1586044800,
"total_inc": 46
}, {
"date_key": 1585958400,
"total_inc": 58
}, {
"date_key": 1585872000,
"total_inc": 81
}, {
"date_key": 1585785600,
"total_inc": 90
}, {
"date_key": 1585699200,
"total_inc": 62
}, {
"date_key": 1585612800,
"total_inc": 70
},
…………
]
}
```
</details>
## 专栏数据增量趋势
> https://member.bilibili.com/x/web/data/article/thirty
*请求方式GET*
认证方式仅可CookieSESSDATA
数据为前30天
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------------ | ------ | -------------- |
| type | num | 目标数据类型 | 必要 | 类型代码见下表 |
类型代码`type`
| 代码 | 含义 |
| ---- | ---- |
| 1 | 阅读 |
| 2 | 评论 |
| 3 | 分享 |
| 4 | 投币 |
| 5 | 收藏 |
| 6 | 点赞 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ----- | -------- | ------------------------------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-400请求错误 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | 作用尚不明确 |
| data | array | 趋势列表 | |
`data`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ------------------ | -------- |
| 0 | obj | 30天前的数据 | |
| n | obj | 30-n天前的数据 | |
| …… | obj | …… | …… |
| 29 | obj | 1天前的数据 | 最后一条 |
`data`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ---- | -------- | -------------------- |
| date_key | num | 对应时间 | 时间戳 前一天的8:00 |
| total_inc | num | 增加数量 | 意义为数据类型决定 |
**示例:**
查询30天前的文章阅读增量趋势可知`2020-04-05`的阅读增量为`6``2020-04-04`的阅读增量为`6`
```shell
curl -G 'https://member.bilibili.com/x/web/data/article/thirty' \
--data-urlencode 'type=1' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": [
…………
{
"date_key": 1585699200,
"total_inc": 6
}, {
"date_key": 1585785600,
"total_inc": 6
}, {
"date_key": 1585872000,
"total_inc": 4
}, {
"date_key": 1585958400,
"total_inc": 6
}, {
"date_key": 1586044800,
"total_inc": 6
}]
}
```
</details>
## 稿件操作来源占比情况
> https://member.bilibili.com/x/web/data/survey
*请求方式GET*
认证方式仅可CookieSESSDATA
数据为上一天的
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ------ | ---- | ------------ | ------ | -------------- |
| type | num | 目标数据类型 | 必要 | 类型代码见下表 |
类型代码`type`
| 代码 | 含义 |
| ---- | ---- |
| 1 | 播放 |
| 2 | 弹幕 |
| 3 | 评论 |
| 4 | 分享 |
| 5 | 投币 |
| 6 | 收藏 |
| 7 | 充电 |
| 8 | 点赞 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-400请求错误 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | 作用尚不明确 |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------ | ---- | ------------ | ------------ |
| YYYYMMDD | obj | 上一天的情况 | 字段名为日期 |
`data`中的`YYYYMMDD`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ------ | ------------ | ---- |
| arc_inc | array | 稿件情况 | |
| total_inc | num | 总计增长情况 | |
| type_rank | obj | 分区排名情况 | |
`YYYYMMDD`中的`arc_inc`数组:
| 项 | 类型 | 内容 | 备注 |
| ---- | ---- | ----------- | ---- |
| 0 | obj | 稿件1 | |
| n | obj | 稿件n+1 | |
| …… | obj | …… | …… |
`YYYYMMDD`中的`arc_inc`数组中的对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------- | ---- | -------------- | ------------ |
| aid | num | 稿件avid | |
| bvid | str | 稿件bvid | |
| daytime | num | 统计时间 | 时间戳 |
| incr | num | 稿件增长情况数 | |
| interactive | num | 0 | 作用尚不明确 |
| ptime | num | 稿件发布时间 | 时间戳 |
| title | str | 稿件标题 | |
`YYYYMMDD`中的`type_rank`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | -------- | ---- |
| {分区名} | num | 该排名数 | |
| …… | num | …… | …… |
**示例:**
查询我的稿件来源占比情况
```shell
curl -G 'https://member.bilibili.com/x/web/data/survey' \
--data-urlencode 'type=1' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"20200418": {
"arc_inc": [{
"aid": 94916552,
"bvid": "BV1ZE411K7ux",
"incr": 18,
"title": "【8-bit】影 流 之 主(爱河)",
"daytime": 1587155030,
"ptime": 1583760165,
"interactive": 0
}, {
"aid": 98948772,
"bvid": "BV1n741127LD",
"incr": 14,
"title": "【特斯拉线圈】组装迷你SSTC",
"daytime": 1587155030,
"ptime": 1585054436,
"interactive": 0
}, {
"aid": 37294890,
"bvid": "BV1kt411D7yW",
"incr": 9,
"title": "【病毒】彩虹猫可以调速还带有计时器 MEMZ重构升级版",
"daytime": 1587155030,
"ptime": 1543775696,
"interactive": 0
},
…………
],
"total_inc": 55,
"type_rank": {
"生活": 1392,
"科技": 1597,
"音乐": 1058
}
}
}
}
```
</details>
## 播放来源占比情况(平台及方式)
> https://member.bilibili.com/x/web/data/playsource
*请求方式GET*
认证方式仅可CookieSESSDATA
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | 作用尚不明确 |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------------- | ---- | ------------ | ---- |
| page_source | obj | 播放方式情况 | |
| play_proportion | obj | 播放平台情况 | |
`data`中的`page_source`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------- | ---- | ------------------------- | ---- |
| dynamic | num | 通过动态 | |
| other | num | 其他方式 | |
| related_video | num | 通过推荐列表 | |
| search | num | 通过搜索 | |
| space | num | 空间列表播放 | |
| tenma | num | 天马APP推荐信息流来源 | |
`data`中的`play_proportion`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | ------------ | ---- |
| android | num | 安卓端 | |
| h5 | num | 移动端h5页面 | |
| ios | num | ios端 | |
| out | num | 站外 | |
| pc | num | 电脑版网页 | |
**示例:**
```shell
curl 'https://member.bilibili.com/x/web/data/playsource' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"play_proportion": {
"android": 6060,
"h5": 410,
"ios": 1325,
"out": 0,
"pc": 2137
},
"page_source": {
"dynamic": 173,
"other": 1440,
"related_video": 1813,
"search": 1980,
"space": 501,
"tenma": 4087
}
}
}
```
</details>
## 播放分布情况(粉丝与路人)
> https://member.bilibili.com/x/web/data/base
*请求方式GET*
认证方式仅可CookieSESSDATA
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ----------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | 作用尚不明确 |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ----------- | ---- | ------------ | ---- |
| period | obj | 提示信息 | |
| viewer_area | obj | 播放地区情况 | |
| viewer_base | obj | 播放数据情况 | |
`data`中的`period`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------------ | ---- | ---- | ---- |
| module_one | str | ??? | |
| module_two | str | ??? | |
| module_three | str | ??? | |
| module_four | str | ??? | |
`data`中的`viewer_area`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | ---------------- | ---- |
| fan | obj | 粉丝播放地区情况 | |
| not_fan | obj | 路人播放地区情况 | |
`viewer_area`中的`fan`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ---- | ------------------ | ---------------- |
| {行政区名} | num | 该地区的粉丝播放量 | 字段名为行政区名 |
| …… | num | …… | …… |
`viewer_area`中的`not_fan`对象:
| 字段 | 类型 | 内容 | 备注 |
| ---------- | ---- | ------------------ | ---------------- |
| {行政区名} | num | 该地区的路人播放量 | 字段名为行政区名 |
| …… | num | …… | …… |
`data`中的`viewer_base`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | ---------------- | ---- |
| fan | obj | 粉丝播放数据情况 | |
| not_fan | obj | 路人播放数据情况 | |
`viewer_base`中的`fan`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------------- | ---- | ------------------ | ---- |
| male | num | 男性粉丝播放数 | |
| female | num | 女性粉丝播放数 | |
| age_one | num | 0-16岁粉丝播放数 | |
| age_two | num | 16-25岁粉丝播放数 | |
| age_three | num | 25-40岁粉丝播放数 | |
| age_four | num | 40+岁粉丝播放数 | |
| plat_pc | num | pc网页端粉丝播放数 | |
| plat_h5 | num | 移动h5端粉丝播放数 | |
| plat_out | num | 站外端粉丝播放数 | |
| plat_ios | num | ios端粉丝播放数 | |
| plat_android | num | 安卓端粉丝播放数 | |
| plat_other_app | num | 其他粉丝播放数 | |
`viewer_base`中的`not_fan`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------------- | ---- | ------------------ | ---- |
| male | num | 男性路人播放数 | |
| female | num | 女性路人播放数 | |
| age_one | num | 0-16岁路人播放数 | |
| age_two | num | 16-25岁路人播放数 | |
| age_three | num | 25-40岁路人播放数 | |
| age_four | num | 40+岁路人播放数 | |
| plat_pc | num | pc网页端路人播放数 | |
| plat_h5 | num | 移动h5端路人播放数 | |
| plat_out | num | 站外端路人播放数 | |
| plat_ios | num | ios端路人播放数 | |
| plat_android | num | 安卓端路人播放数 | |
| plat_other_app | num | 其他路人播放数 | |
**示例:**
```shell
curl 'https://member.bilibili.com/x/web/data/base' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"period": {
"module_one": "各维度每日12:00 a.m. 更新前一日数据",
"module_two": "每日12:00 a.m. 更新前一日数据",
"module_three": "每周二12:00 a.m. 更新前一周数据",
"module_four": "各维度每日12:00 a.m. 更新前一日数据"
},
"viewer_area": {
"fan": {
"上海": 7,
"中国台湾": 2,
"云南": 6,
"内蒙古": 8,
"北京": 14,
"吉林": 4,
"四川": 4,
"天津": 11,
"宁夏": 1,
"安徽": 8,
"山东": 18,
"山西": 10,
"广东": 50,
"广西": 7,
"新疆": 2,
"江苏": 17,
"江西": 6,
"河北": 13,
"河南": 13,
"浙江": 20,
"海南": 1,
"湖北": 13,
"湖南": 13,
"甘肃": 4,
"福建": 10,
"贵州": 4,
"辽宁": 9,
"重庆": 5,
"陕西": 93,
"香港特别行政区": 1,
"黑龙江": 12
},
"not_fan": {
"上海": 28,
"中国台湾": 3,
"云南": 22,
"内蒙古": 15,
"北京": 53,
"吉林": 20,
"四川": 60,
"天津": 18,
"宁夏": 7,
"安徽": 43,
"山东": 81,
"山西": 31,
"广东": 176,
"广西": 81,
"新疆": 11,
"江苏": 93,
"江西": 26,
"河北": 50,
"河南": 84,
"浙江": 97,
"海南": 10,
"湖北": 43,
"湖南": 43,
"甘肃": 14,
"福建": 54,
"西藏": 1,
"贵州": 16,
"辽宁": 47,
"重庆": 31,
"陕西": 102,
"青海": 2,
"香港特别行政区": 4,
"黑龙江": 25
}
},
"viewer_base": {
"fan": {
"male": 153,
"female": 24,
"age_one": 91,
"age_two": 174,
"age_three": 77,
"age_four": 53,
"plat_pc": 12072,
"plat_h5": 186,
"plat_out": 0,
"plat_ios": 23453,
"plat_android": 87387,
"plat_other_app": 1631
},
"not_fan": {
"male": 462,
"female": 72,
"age_one": 425,
"age_two": 445,
"age_three": 360,
"age_four": 188,
"plat_pc": 64760,
"plat_h5": 660,
"plat_out": 1,
"plat_ios": 111259,
"plat_android": 467767,
"plat_other_app": 3408
}
}
}
}
```
</details>

822
docs/danmaku/action.md Normal file
View File

@ -0,0 +1,822 @@
# 弹幕操作
- [发送视频弹幕](#发送视频弹幕)
- [发送互动弹幕](#发送互动弹幕)
- [撤回弹幕](#撤回弹幕)
- [购买高级弹幕发送权限](#购买高级弹幕发送权限)
- [检测高级弹幕发送权限](#检测高级弹幕发送权限)
- [查询弹幕点赞数](#查询弹幕点赞数)
- [点赞弹幕](#点赞弹幕)
- [举报弹幕](#举报弹幕)
- [保护&删除弹幕](#保护&删除弹幕)
- [修改字幕池](#修改字幕池)
---
## 发送视频弹幕
> https://api.bilibili.com/x/v2/dm/post
*请求方式POST*
认证方式CookieSESSDATA或APP
此接口与漫画弹幕相同
`mode=6`的逆向弹幕与`mode=8`的代码弹幕不可发送
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------------------ | -------------- | ------------------------------------------------------------ |
| access_key | str | APP登录Token | APP方式必要 | |
| type | num | 弹幕类选择 | 必要 | 1视频弹幕 |
| oid | num | 视频cid | 必要 | |
| msg | str | 弹幕内容 | 必要 | 长度小于100字符 |
| bvid | str | 稿件bvid | 必要(可选) | avid与bvid任选一个 |
| aid | num | 稿件avid | 必要(可选) | avid与bvid任选一个 |
| progress | num | 弹幕出现在视频内的时间 | 非必要 | 单位为毫秒<br />默认为0 |
| color | num | 弹幕颜色设置 | 非必要 | 十进制RGB888值<br />默认为16777215#FFFFFF白色 |
| fontsize | num | 弹幕字号设置 | 非必要 | 默认为25<br />极小12<br />超小16<br />18<br />标准25<br />36<br />超大45<br />极大64 |
| pool | num | 弹幕池选择 | 非必要 | 0普通池<br />1字幕池<br />2特殊池代码/BAS弹幕<br />默认为0 |
| mode | num | 弹幕类型选择 | 必要 | 1普通弹幕<br />4底部弹幕<br />5顶部弹幕<br />7高级弹幕<br />9BAS弹幕`pool`必须为2 |
| rnd | num | 当前时间戳*1000000 | 非必要 | **若无此项则发送弹幕冷却时间限制为90s**<br />若有此项则发送弹幕冷却时间限制为5s |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-102账号被封停<br />-111csrf校验失败<br />-400请求错误<br />-404无此项<br />36700系统升级中<br />36701弹幕包含被禁止的内容<br />36702弹幕长度大于100<br />36703发送频率过快<br />36704禁止向未审核的视频发送弹幕<br />36705您的等级不足不能发送弹幕<br />36706您的等级不足不能发送顶端弹幕<br />36707您的等级不足不能发送底端弹幕<br />36708您的等级不足不能发送彩色弹幕<br />36709您的等级不足不能发送高级弹幕<br />36710您的权限不足不能发送这种样式的弹幕<br />36711该视频禁止发送弹幕<br />36712level 1用户发送弹幕的最大长度为20<br />36713稿件未付费<br />36714弹幕发送时间不合法<br />36715当日操作数量超过上限 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | -------- | ------------ |
| action | str | 空 | 作用尚不明确 |
| dmid | num | 弹幕dmid | |
| dmid_str | str | 弹幕dmid | 字串形式 |
| visible | bool | true | 作用尚不明确 |
**示例:**
为视频`av2`/`BV1xx411c7mD`cid为`62131`的5000ms位置发送一条弹幕`前来考古`(颜色为#FFFFFF字号25普通弹幕游动弹幕
```shell
curl 'https://api.bilibili.com/x/v2/dm/post' \
--data-urlencode 'type=1' \
--data-urlencode 'oid=62131' \
--data-urlencode 'msg=前来考古' \
--data-urlencode 'aid=2' \
--data-urlencode 'progress=5000' \
--data-urlencode 'color=16777215' \
--data-urlencode 'fontsize=25' \
--data-urlencode 'pool=0' \
--data-urlencode 'mode=1' \
--data-urlencode 'rnd=3456789987654321' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code":0,
"message":"0",
"ttl":1,
"data":{
"action":"",
"dmid":32161968826613767,
"dmid_str":"32161968826613767",
"visible":true
}
}
```
</details>
## 发送互动弹幕
> https://api.bilibili.com/x/v2/dm/command/post
*请求方式POST*
认证方式CookieSESSDATA或APP
2020-09-25 B站更新了互动弹幕功能包括UP主头像弹幕、关联视频弹幕、视频内嵌引导关注按钮三大功能
详情见:
[【客户端更新】6.10版本更新UP主支持发布关联视频弹幕]( https://www.bilibili.com/read/cv7728299 )
[引导关注卡片]( https://www.bilibili.com/blackboard/activity-c8a0iDRQy.html )
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------------------ | -------------- | ------------------------------------------------------------ |
| access_key | str | APP登录Token | APP方式必要 | |
| type | num | 互动弹幕类型 | 必要 | 1UP主头像弹幕<br />2关联视频弹幕<br />5视频内嵌引导关注按钮 |
| aid | num | 稿件avid | 必要 | |
| cid | num | 视频cid | 必要 | |
| progress | num | 弹幕出现在视频内的时间 | 非必要 | 单位为毫秒<br />默认为0 |
| plat | num | 平台标识 | 必要 | 1web端<br />2安卓端<br />8视频管理页面 |
| data | str | json序列 | 必要 | |
| dmid | num | 修改互动弹幕的弹幕id | 非必要 | 注:修改弹幕`plat`必须为8 |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
`data`参数json序列
类型为【UP主头像弹幕】时
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | -------- | ---- |
| msg | str | 弹幕内容 | |
类型为【关联视频弹幕】时:
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | -------------- | ---- |
| msg | str | 弹幕内容 | |
| bvid | str | 关联视频的bvid | |
类型为【视频内嵌引导关注按钮】时:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | -------- | --------------- |
| duration | num | 持续时间 | 单位为毫秒 |
| posX | num | X坐标 | 区间:[118-549] |
| posY | num | Y坐标 | 区间:[82-293] |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ----------------------------- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-102账号被封停<br />-111csrf校验失败<br />-400请求错误<br />-404无此项<br />-500服务器错误<br />36711该视频禁止发送弹幕<br />79026发送失败请勿填写当前稿件bvid<br />79024发送失败请输入正确的bvid<br />79036该指令弹幕超出限制<br />79037关注弹幕坐标溢出 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | 正确时obj<br />错误时null | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | ---------------------- | ------------------------------------------------------------ |
| command | str | 指令? | UP主头像弹幕#UP#<br />关联视频弹幕:#LINK#<br />视频内嵌引导关注按钮:#ATTENTION# |
| content | str | 弹幕内容 | |
| extra | str | 弹幕数据 | json序列 |
| id | num | 弹幕dmid | |
| idStr | str | 弹幕dmid | 字串形式 |
| mid | num | 用户mid | |
| oid | num | 视频cid | |
| progress | num | 弹幕出现在视频内的时间 | |
| type | num | 互动弹幕类型 | 1UP主头像弹幕<br />2关联视频弹幕<br />5视频内嵌引导关注按钮 |
`extra`序列数据:
类型为【UP主头像弹幕】时
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ----------- | ---- |
| icon | str | UP主头像url | |
类型为【关联视频弹幕】时:
| 字段 | 类型 | 内容 | 备注 |
| ----- | ---- | -------------- | ---- |
| aid | num | 关联视频的avid | |
| title | str | 关联视频的标题 | |
| bvid | str | 关联视频的bvid | |
类型为【视频内嵌引导关注按钮】时:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | ------------ | ------------------------------------------ |
| duration | num | 持续时间 | 单位为毫秒 |
| posX | num | X坐标 | 区间:[118-549] |
| posY | num | Y坐标 | 区间:[82-293] |
| icon | str | 按钮图片url | 不应该是关注按钮吗,但这个是圆形的 |
| type | num | 关注按钮类型 | 0仅关注<br />1仅三联<br />2关注+三联 |
**示例:**
为视频`av201947622`cid为`230709860`的5000ms位置发送一条UP主头像弹幕`test`
```shell
curl 'https://api.bilibili.com/x/v2/dm/command/post' \
--data-urlencode 'type=1' \
--data-urlencode 'aid=201947622' \
--data-urlencode 'cid=230709860' \
--data-urlencode 'progress=5000' \
--data-urlencode 'plat=1' \
--data-urlencode 'data={"msg":"test"}' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"id": 39053842117558279,
"oid": 230709860,
"mid": 293793435,
"type": 1,
"command": "#UP#",
"content": "test",
"extra": "{\"icon\":\"http://i0.hdslb.com/bfs/face/aebb2639a0d47f2ce1fec0631f412eaf53d4a0be.jpg\"}",
"idStr": "39053842117558279"
}
}
```
</details>
为视频`av201947622`cid为`230709860`的5000ms位置发送一条发送关联视频弹幕`测试1234`关联视频为`BV1kz4y1X7XP`
```shell
curl 'https://api.bilibili.com/x/v2/dm/command/post' \
--data-urlencode 'type=2' \
--data-urlencode 'aid=201947622' \
--data-urlencode 'cid=230709860' \
--data-urlencode 'progress=5000' \
--data-urlencode 'plat=1' \
--data-urlencode 'data={"bvid":"BV1kz4y1X7XP","msg":"测试1234"}' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"id": 39054383689236483,
"oid": 230709860,
"mid": 293793435,
"type": 2,
"command": "#LINK#",
"content": "测试1234",
"progress": 11925,
"extra": "{\"aid\":583785685,\"title\":\"【cmd】访问api 命令行也能上B站\",\"bvid\":\"BV1kz4y1X7XP\"}",
"idStr": "39054383689236483"
}
}
```
</details>
为视频`av201947622`cid为`230709860`的5000ms位置发送视频内嵌引导关注按钮X坐标为118Y坐标为82持续时间为5000ms
```shell
curl 'https://api.bilibili.com/x/v2/dm/command/post' \
--data-urlencode 'type=5' \
--data-urlencode 'aid=201947622' \
--data-urlencode 'cid=230709860' \
--data-urlencode 'progress=5000' \
--data-urlencode 'plat=1' \
--data-urlencode 'data={"duration":5000,"posX":118,"posY":82}' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"id": 39055158405496839,
"oid": 230709860,
"mid": 293793435,
"type": 5,
"command": "#ATTENTION#",
"progress": 5000,
"extra": "{\"duration\":5000,\"posX\":118,\"posY\":82}",
"idStr": "39055158405496839"
}
}
```
</details>
## 撤回弹幕
> https://api.bilibili.com/x/dm/recall
*请求方式POST*
认证方式CookieSESSDATA或APP
仅能撤回自己两分钟内的弹幕且每天只有3次机会
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------------------ | -------------- | ---- |
| access_key | str | APP登录Token | APP方式必要 | |
| dmid | num | 弹幕dmid | 必要 | |
| cid | num | 视频cid | 必要 | |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-102账号被封停<br />-111csrf校验失败<br />-400请求错误<br />-404无此项<br />36301撤回失败弹幕发送已过2分钟<br />36302撤回失败弹幕已经被删除或撤回<br />36303撤回失败今天撤回的机会已经用完<br />36304撤回失败服务器出错 |
| message | str | 错误信息 | 成功后显示剩余次数 |
| ttl | num | 1 | |
**示例:**
撤回`cid=168901231`下的弹幕`32310301474947077`的弹幕
```shell
curl 'https://api.bilibili.com/x/dm/recall' \
--data-urlencode 'cid=168901231' \
--data-urlencode 'dmid=32310301474947077' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "撤回成功你还有3次撤回机会"
}
```
</details>
## 购买高级弹幕发送权限
> https://api.bilibili.com/x/dm/adv/buy
*请求方式POST*
认证方式CookieSESSDATA或APP
购买一次需要2硬币同时向up主发送请求
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------------------ | -------------- | ---- |
| access_key | str | APP登录Token | APP方式必要 | |
| mode | str | sp | 必要 | |
| cid | num | 视频cid | 必要 | |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-102账号被封停<br />-111csrf校验失败<br />-107硬币不足<br />-400请求错误<br />36007不允许购买<br />36009正在确认中<br />36010已购买 |
| message | str | 返回信息 | |
| ttl | num | 1 | |
示例:
购买视频cid为`168901231`的高级弹幕发送权限
```shell
curl 'https://api.bilibili.com/x/dm/adv/buy' \
--data-urlencode 'cid=168901231' \
--data-urlencode 'mode=sp' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code":0,
"message":"已成功购买"
}
```
</details>
## 检测高级弹幕发送权限
> https://api.bilibili.com/x/dm/adv/state
*请求方式GET*
认证方式CookieSESSDATA或APP
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------ | ----------- | ---- |
| access_key | str | APP登录Token | APP方式必要 | |
| mode | str | sp | 必要 | |
| cid | num | 视频cid | 必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ----------------------------- | ---------------- | -------------------------------------------------- |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />--400请求错误 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | 有效时obj<br />无效时null | 有效时:信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | ---------------- | ------------------------------------------ |
| coins | num | 需要支付的硬币数 | |
| confirm | num | 是否同意 | 1同意<br />2未同意<br />未购买时无此项 |
| accept | bool | 是否允许申请 | true允许<br />false不允许 |
| hasBuy | bool | 是否已购买 | true已购买<br />未购买时无此项 |
**示例:**
查询视频cid为`168901231`的视频高级弹幕权限购买状态
当前状态为已购买且同意
```shell
curl -G 'https://api.bilibili.com/x/dm/adv/state' \
--data-urlencode 'cid=168901231' \
--data-urlencode 'mode=sp' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"coins": 2,
"confirm": 1,
"accept": true,
"hasBuy": true
}
}
```
</details>
## 查询弹幕点赞数
> https://api.bilibili.com/x/v2/dm/thumbup/stats
*请求方式GET*
认证方式CookieSESSDATA或APP
**url参数**
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------ | ----------- | ------------------- |
| access_key | str | APP登录Token | APP方式必要 | |
| oid | num | 视频cid | 必要 | |
| ids | nums | 弹幕dmid列表 | 必要 | 多个id之间用`,`分隔 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | --------------------------- |
| code | num | 返回值 | 0成功<br />-400请求错误 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
| data | obj | 信息本体 | |
`data`对象:
| 字段 | 类型 | 内容 | 备注 |
| -------- | ---- | ---------------- | --------------------------------- |
| {弹幕id} | obj | 弹幕id对应的信息 | id分别对应请求参数中的`ids`,下同 |
| …… | obj | 弹幕id对应的信息 | |
`{弹幕id}`对象:
| 字段 | 类型 | 内容 | 备注 |
| --------- | ---- | -------- | ------------------------------------------------------------ |
| likes | num | 点赞数 | |
| user_like | num | 是否点赞 | 0未点赞<br />1已点赞<br />需要登录(Cookie或APP) <br />未登录恒为0 |
| id_str | str | 弹幕dmid | |
**示例**
查询`cid=236871317`下的弹幕`35600074482384899`、`38880975220375559`、`39052528418553863`点赞数
```shell
curl -G 'https://api.bilibili.com/x/v2/dm/thumbup/stats' \
--data-urlencode 'oid=236871317' \
--data-urlencode 'ids=39019145405661191,38880975220375559,39052528418553863' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code": 0,
"message": "0",
"ttl": 1,
"data": {
"38880975220375559": {
"likes": 1,
"user_like": 1,
"id_str": "38880975220375559"
},
"39019145405661191": {
"likes": 3,
"user_like": 1,
"id_str": "39019145405661191"
},
"39052528418553863": {
"likes": 2,
"user_like": 0,
"id_str": "39052528418553863"
}
}
}
```
</details>
## 点赞弹幕
> https://api.bilibili.com/x/v2/dm/thumbup/add
*请求方式POST*
认证方式CookieSESSDATA或APP
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------------------ | -------------- | ------------------------ |
| access_key | str | APP登录Token | APP方式必要 | |
| dmid | num | 弹幕dmid | 必要 | |
| oid | num | 视频cid | 必要 | |
| op | num | 操作 | 必要 | 1点赞<br />2取消点赞 |
| platform | str | 平台 | 非必要 | |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
|---------|-----|------|------------------------------------------------------------------------------------------------------------------------------------|
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-111csrf 校验失败<br />-400请求错误<br />36106该弹幕已被删除<br/>36805该视频禁止点赞弹幕<br/>65004取消赞失败 未点赞过<br />65006已赞过 |
| message | str | 错误信息 | 默认为0 |
| tll | num | 1 | |
**示例**
为`cid=145928946`下的弹幕`35600074482384899`点赞
```shell
curl 'https://api.bilibili.com/x/v2/dm/thumbup/add' \
--data-urlencode 'dmid=35600074482384899' \
--data-urlencode 'oid=145928946' \
--data-urlencode 'op=1' \
--data-urlencode 'platform=web_player' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code":0,
"message":"0",
"ttl":1
}
```
</details>
## 举报弹幕
> https://api.bilibili.com/x/dm/report/add
*请求方式POST*
认证方式CookieSESSDATA或APP
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------------------ | -------------- | ------------------ |
| access_key | str | APP登录Token | APP方式必要 | |
| cid | num | 视频cid | 必要 | |
| dmid | num | 弹幕dmid | 必要 | |
| reason | num | 举报类型 | 必要 | **类型代码见下表** |
| content | str | 其他举报备注 | 非必要 | `reason=11`时有效 |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
举报类型`reason`
| 代码 | 含义 |
| ---- | ---------- |
| 1 | 违法违禁 |
| 2 | 色情低俗 |
| 3 | 赌博诈骗 |
| 4 | 人身攻击 |
| 5 | 侵犯隐私 |
| 6 | 垃圾广告 |
| 7 | 引战 |
| 8 | 剧透 |
| 9 | 恶意刷屏 |
| 10 | 视频无关 |
| 11 | 其他 |
| 12 | 青少年不良 |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-111csrf 校验失败<br />-400请求错误<br />36201举报弹幕不存在<br />36203举报原因类型错误<br />36204已举报 |
| message | str | 错误信息 | 默认为空 |
| tll | num | 1 | 举报失败时 |
**示例**
举报`cid=145928946`下的弹幕`35600074482384899`,理由是`引战`
```shell
curl 'https://api.bilibili.com/x/dm/report/add' \
--data-urlencode 'cid=145928946' \
--data-urlencode 'dmid=35600074482384899' \
--data-urlencode 'reason=7' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code":0,
"message":""
}
```
</details>
## 保护&删除弹幕
> https://api.bilibili.com/x/v2/dm/edit/state
*请求方式POST*
认证方式CookieSESSDATA 或APP
注:只能操作自己的稿件或有骑士权限的稿件
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------------------ | -------------- | --------------------------------------------- |
| access_key | str | APP登录Token | APP方式必要 | |
| type | num | 弹幕类选择 | 必要 | 1视频弹幕 |
| oid | num | 视频cid | 必要 | |
| dmids | nums | 弹幕dmid | 必要 | 多个id之间用`,`分隔 |
| state | num | 操作代码 | 必要 | 1删除弹幕<br />2弹幕保护<br />3取消保护 |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-111csrf 校验失败<br />-400请求错误<br />-403访问权限不足 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
**示例**
删除`cid=145928946`下的弹幕`35600074482384899`、`39067304918515717`、`39082777041174531`
```shell
curl 'https://api.bilibili.com/x/v2/dm/edit/state' \
--data-urlencode 'type=1' \
--data-urlencode 'oid=145928946' \
--data-urlencode 'dmids=35600074482384899,39067304918515717,39082777041174531' \
--data-urlencode 'state=1' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code":0,
"message":"0",
"ttl":1
}
```
</details>
## 修改字幕池
> https://api.bilibili.com/x/v2/dm/edit/pool
*请求方式POST*
认证方式CookieSESSDATA 或APP
注:只能操作自己的稿件或有骑士权限的稿件
**正文参数( application/x-www-form-urlencoded **
| 参数名 | 类型 | 内容 | 必要性 | 备注 |
| ---------- | ---- | ------------------------ | -------------- | -------------------------------- |
| access_key | str | APP登录Token | APP方式必要 | |
| type | num | 弹幕类选择 | 必要 | 1视频弹幕 |
| oid | num | 视频cid | 必要 | |
| dmids | nums | 弹幕dmid | 必要 | 多个id之间用`,`分隔 |
| pool | num | 操作代码 | 必要 | 0移出字幕池<br />1移入字幕池 |
| csrf | str | CSRF Token位于cookie | Cookie方式必要 | |
**json回复**
根对象:
| 字段 | 类型 | 内容 | 备注 |
| ------- | ---- | -------- | ------------------------------------------------------------ |
| code | num | 返回值 | 0成功<br />-101账号未登录<br />-111csrf 校验失败<br />-400请求错误<br />-403访问权限不足 |
| message | str | 错误信息 | 默认为0 |
| ttl | num | 1 | |
**示例**
将`cid=145928946`下的弹幕`35600074482384899`、`39067304918515717`、`39082777041174531`移入字幕池
```shell
curl 'https://api.bilibili.com/x/v2/dm/edit/state' \
--data-urlencode 'type=1' \
--data-urlencode 'oid=145928946' \
--data-urlencode 'pool=1' \
--data-urlencode 'dmids=35600074482384899,39067304918515717,39082777041174531' \
--data-urlencode 'csrf=xxx' \
-b 'SESSDATA=xxx'
```
<details>
<summary>查看响应示例:</summary>
```json
{
"code":0,
"message":"0",
"ttl":1
}
```
</details>

Some files were not shown because too many files have changed in this diff Show More