Movatterモバイル変換


[0]ホーム

URL:


Bangumi 番组计划
登录注册

用户脚本 · 样式 · 插件 »讨论
开发组件相关的 bangumi 资源


#1 - 2024-12-30 15:51
试下昵称中间能 不能加 空(Hello darkness my old friend)
标题无关但重要:如果你从菜鸟教程之类的地方学完了 JavaScript 基础,知道如何操作页面上的元素,想做组件但无从下手,主要需要学习的 JavaScript
-fetch:使用 API 或获取其他网络资源
-Mutation Observer:检查其他组件对页面的修改/bangumi对页面的动态修改
-localStorage,sessionStorage,IndexedDB:存储组件的设置和缓存等
推荐:现代 JavaScript 教程
-jQuery:简化 DOM 操作和请求
另外不要忘记善用AI!

API

1.公开APIhttps://bangumi.github.io/api/班友总结的使用建议
使用 access token 进行用户认证,GET 请求支持跨域。
获取 access token 的方法:
  - 法一:引导用户到此处创建,粘贴存储到组件里。最好不要用 localStorage 等存储到浏览器中,以免暴露 access token。
  - 法二:创建“应用”,使用获得的 App ID 和 App Secret 进行 OAuth 授权。因为需要后端存储 App Secret,组件难以使用此方法,也可以使用 Pipedream 等 serverless 平台。(参考:用户授权机制
注意很多 API 不需要 access token。
除了上方链接中的建议:
- /v0/search 系列API搜索结果不如旧API /search(https://github.com/bangumi/server/issues/229

2.私有APIhttps://bangumi.github.io/dev-docs/
使用(新站的) cookies session 进行用户认证,目前仍处于开发阶段,无兼容性保证,不支持跨域。如果新站上线后仍有组件功能,可以在新站使用。
  - 实际上应该支持 access token 认证,但文档没有写明(https://github.com/bangumi/server-private/issues/662)。
  - 若只考虑脚本而不发布组件,可使用GM_xmlhttpRequest 绕过跨域限制调用。

3.旧公开 API 等https://github.com/jabbany/dhufufu/tree/master/bangumi /站内查询入口/用户相关(班友整理)
出于兼容考虑旧 API 依旧能访问但已不推荐使用,相关 API 文档已隐藏。

参考:https://github.com/bangumi/dev-docs

4.班友制作的第三方API
4.1VIB数据API
GET https://api.jirehlov.com/vib/{id}
4.2发帖/回帖/贴贴 统计API
POST https://bgm.nyamori.moe/forum-enhance/query
格式: {"users":["304116","trim21","sai"],"type":"group"}
- type可以是group, subject, blog, ep, character, person。
4.3讨论贴历史记录API(https://bgm.nyamori.moe)
GET /history/(subject|group)/:topicId/link
GET /history/(subject|group)/:topicId/latest: 会自动302跳到最新的json
GET /history/(subject|group)/:topicId/:millisecondTimestamp/html: 会显示原始爬下来的html
GET /history/(subject|group)/:topicId/latest/html: 会显示最新爬到的html
GET /history/(subject|group)/:topicId
GET /history/(subject|group)/:topicId/:millisecondTimestamp
4.4查看被删回复API
GET https://bgm.nyamori.moe/forum-enhance/deleted_post/:type/:topicId/:postId
type可以是group, subject , blog。返回的是被删前最后更新的内容的html纯文本。
如果未收录会返回404。
4.5番剧推荐 API(维护中)

5.没有官方 API/不想使用 access token 时
  - 直接获取页面,解析HTML
  - 检查页面 form 标签的 action 属性值(此时 POST 请求需要设为 URLSearchParams)
  - 使用 控制台 - Network/网络 检查是否抓得到

全局变量

0. 可用 jQuery
1. 在组件中使用全局变量的方法:window.变量
  - 若在油猴脚本中,需要在开头加上:
// @grant unsafeWindow
  并使用 unsafeWindow.变量
  - 除了调用,也可以直接覆盖,改变所有使用相关变量的原网站操作
2. 全部全局变量(获得方法:在未开启任何组件的 bangumi 获得的 window 的属性与在空白页获得的 window 的属性不相交的部分,存在不准确)
SHOW_ROBOT
CHOBITS_UID
SITE_URL
CHOBITS_VER
submitPost
submitTip
subReplycancel
eraseSubjectTopic
PostTo
SetTips
eraseSubjectCollect
subReply
chiiLib
getObj
designDefault
fetchInPageSubjectID
eraseClubTopic
erasePM
checkall
MoreElement
switchDisplay
infoboxid
disconnectFriend
eraseEntry
tb_pathToImage
eraseGrpTopic
nowmode
regSetNickName
seditor_ctlent
removeListItem
AJAXtip
infoboxVal
submitError
ignoreUser
checkTsukkomiInput
tb_init
tb_show
tb_showIframe
tb_remove
tb_position
tb_parseQuery
tb_getPageSize
tb_detectMacXFF
sizeContent
AddMSGreceiver
GenInterestBox
switchRobotSpeech
WikiTpl
WCODEParse
WCODEDump
WCODEtoNormal
NormaltoWCODE
addSubProp
stopEnterSubmit
multiKeyRegDel
addoneprop
log
dataLayer
imgLoader
OML2D
Live2DCubismCore

3. 部分可能有用的全局变量
  - CHOBITS_UID:当前登录用户的数字UID
  - SITE_URL:当前域名
  - data_ignore_users:绝交班友列表
  - chiiLib
    - ukagaka
      - toggleDisplay():切换春菜显示
      - presentSpeech(html, auto_dismiss = false, slide_down = true):春菜说话
若无法找到如何使用全局变量中的函数,可尝试查看压缩后的代码:主要内容文本编辑相关还原工具推荐

其他
- 获取用户修改自定义ID后,可通过头像url获取用户数字ID
- 在 console 中输入以下命令可查看组件 log(参考:[Changelog] 组件功能更新记录):
log.setLevel('debug');
使用下方命令取消:
log.disableAll();

- 疑似因为过时的 polyfill,bangumi 的 Promise 不支持 Promise.allSettled、Promise.any 等 2020 后的 Promise 方法

过去相关整理:一些基础的开发参考资料
/ 返回用户脚本 · 样式 · 插件小组
© 2008-2025 Bangumi (a.k.a.Chobits), some rights reserved | r545
注册时我很沉默

[8]ページ先頭

©2009-2025 Movatter.jp