尤其是给楼中楼评论点赞,在平板上那个折叠的功能键简直是处于一个不可观测态
恢復幾天看看反應。
我有意见,平板点赞双指缩放页面即可,没有楼中楼帖子太长,我也看不懂谁在评论谁
而且整个楼长的离大谱
之前歪楼还容易翻过去,现在得在一大坨史里边找一点好东西
然而展开了下面的帖子也还在
想看看对某个特定帖子的新回复还是得翻半天
匡扶漢室!
再發給三國殺打好評了(笑)
许个愿,能不能让bilibili也有和YouTube一样的站内播放器
据我所知bilibili是有这样的插件的
誰去寫個插件我就接進來:)
有,但之前實測不能用。
让grok写的插件能用吗(?)
grok
我来帮你创建一个可以在 Discourse 论坛中直接播放 Bilibili 视频的插件。以下是实现方案的完整说明和代码。
解决方案概述
Discourse 是一个开源的论坛软件,支持通过插件扩展功能。为了在 Discourse 中播放 Bilibili 视频,我们可以利用 Discourse 的 Onebox 系统。Onebox 是一种自动将特定链接转换为嵌入内容的功能(例如 YouTube 视频、Twitter 帖子等)。我们将为 Bilibili 视频开发一个自定义 Onebox 引擎,使其能够识别 Bilibili 视频链接并生成嵌入式播放器(iframe)。
插件的主要功能是:
- 识别用户在 Discourse 帖子中粘贴的 Bilibili 视频 URL。
- 从 URL 中提取视频标识(BV号或av号)。
- 生成对应的 iframe 嵌入代码,实现在论坛页面直接播放视频。
Bilibili 视频 URL 和嵌入代码格式
Bilibili 视频有两种常见的 URL 格式:
- BV号格式:
https://www.bilibili.com/video/BV1abcdef123 - av号格式(旧格式,但仍有效):
https://www.bilibili.com/video/av12345678
此外,URL 中可能包含 ?p=2 参数,表示多部分视频的第几部分(例如 https://www.bilibili.com/video/BV1abcdef123?p=2)。
Bilibili 提供官方的嵌入代码,格式如下:
- 对于 BV号:
<iframe src="https://player.bilibili.com/player.html?bvid=BV1abcdef123&page=1" ...></iframe> - 对于 av号:
<iframe src="https://player.bilibili.com/player.html?aid=12345678&page=1" ...></iframe>
我们的插件需要支持这两种格式,并正确处理页面参数。
插件实现步骤
1. 插件目录结构
在 Discourse 中,插件通常以 Ruby 语言编写,并遵循特定的目录结构。我们将创建一个名为 discourse-bilibili-onebox 的插件,结构如下:
discourse-bilibili-onebox/
├── plugin.rb
└── lib/
└── onebox/
└── engine/
└── bilibili_onebox.rb
plugin.rb:插件的入口文件,包含插件的基本信息。bilibili_onebox.rb:自定义 Onebox 引擎的实现代码。
2. 编写 Onebox 引擎代码
在 lib/onebox/engine/bilibili_onebox.rb 中,我们定义一个 BilibiliOnebox 类,继承自 Onebox::Engine,并实现以下核心功能:
- URL 匹配:使用正则表达式识别 Bilibili 视频 URL。
- HTML 生成:根据提取的视频标识生成嵌入代码。
代码如下:
module Onebox
module Engine
class BilibiliOnebox
include Engine
# 匹配 Bilibili 视频 URL,支持 BV 和 av 格式,以及可选的 page 参数
matches_regexp(/^https?:\/\/(?:www\.)?bilibili\.com\/video\/(BV\w+|av\d+)(?:\?p=(\d+))?/)
# 生成嵌入 HTML 代码
def to_html
# 从 URL 中提取视频 ID 和页面参数
match = @url.match(/^https?:\/\/(?:www\.)?bilibili\.com\/video\/(BV\w+|av\d+)(?:\?p=(\d+))?/)
video_id = match[1]
page = match[2] || "1" # 默认页面为 1
# 根据视频 ID 类型(BV 或 av)设置参数
if video_id.start_with?("BV")
param = "bvid=#{video_id}"
else
param = "aid=#{video_id[2..-1]}" # 移除 "av" 前缀
end
# 返回嵌入 iframe 代码
<<~HTML
<iframe src="https://player.bilibili.com/player.html?#{param}&page=#{page}"
scrolling="no"
border="0"
frameborder="no"
framespacing="0"
allowfullscreen="true"
width="560"
height="315"></iframe>
HTML
end
end
end
end
代码说明:
matches_regexp:正则表达式匹配 Bilibili 视频 URL,捕获 BV号或 av号,以及可选的p参数。to_html:从 URL 中提取视频 ID 和页面号,生成对应的 iframe 嵌入代码。iframe 使用 HTTPS 协议,确保安全性。
3. 编写插件入口文件
在 plugin.rb 中,定义插件的基本信息。Discourse 会自动加载 lib/onebox/engine 目录下的 Onebox 引擎,因此通常无需额外注册代码。文件内容如下:
# name: discourse-bilibili-onebox
# version: 0.1
# authors: [你的名字]
# url: https://github.com/[你的用户名]/discourse-bilibili-onebox
# description: 在 Discourse 中嵌入 Bilibili 视频的 Onebox 插件
# 可选:显式加载 Onebox 引擎(通常 Discourse 会自动加载)
require_relative 'lib/onebox/engine/bilibili_onebox'
安装和使用
安装步骤
- 将插件上传到 GitHub 仓库(例如
https://github.com/[你的用户名]/discourse-bilibili-onebox)。 - 在 Discourse 服务器的
app.yml文件中添加插件:hooks: after_code: - exec: cd: $home/plugins cmd: - git clone https://github.com/[你的用户名]/discourse-bilibili-onebox.git - 重建 Discourse 容器:
cd /var/discourse ./launcher rebuild app
使用方法
- 在 Discourse 帖子中粘贴 Bilibili 视频链接,例如:
https://www.bilibili.com/video/BV1abcdef123https://www.bilibili.com/video/av12345678?p=2
- 插件会自动将链接转换为嵌入式播放器,用户可以直接在论坛页面播放视频。
注意事项
- 兼容性:此插件适用于近期版本的 Discourse,因为它依赖 Onebox 系统和 Ruby 的自动加载机制。
- 安全性:确保 Discourse 的 Content Security Policy (CSP) 允许来自
https://player.bilibili.com的 iframe。默认情况下,Discourse 支持嵌入视频,应该不会有问题。 - 响应式设计:当前 iframe 使用固定宽高(560x315)。如需自适应布局,可在 Discourse 的 CSS 中为
.onebox类添加样式。
结论
通过以上步骤,你可以创建一个 Discourse 插件,使其支持在论坛页面直接播放 Bilibili 视频。插件利用 Onebox 引擎,识别 Bilibili 视频链接并生成嵌入代码,支持 BV号和 av号格式,并能处理多部分视频的页面参数。用户只需安装插件并粘贴视频链接即可享受嵌入式播放体验。
如果你需要进一步优化(例如添加视频标题或调整样式),可以告诉我,我会帮你扩展代码!
但是这种直接用url嵌入会被易控干掉应该
不用URL直接嵌入
回答用户查询:不在 Discourse 中直接使用 URL 嵌入 Bilibili 视频
您的需求是不直接使用 URL 嵌入 Bilibili 视频,而是通过其他方式实现在 Discourse 论坛中播放。为了满足这一要求,我将为您设计一个 Discourse 插件,通过识别帖子中的 Bilibili 视频链接并将其转换为嵌入式播放器(iframe)来实现功能,而无需用户手动嵌入 URL 或依赖默认的 URL 渲染机制。
以下是完整的解决方案:
解决方案概述
我们将开发一个名为 discourse-bilibili-video 的 Discourse 插件,利用 Discourse 的 cooked post processor(帖子内容处理器)来实现以下功能:
- 自动识别用户在帖子中粘贴的 Bilibili 视频链接。
- 从链接中提取视频标识(BV号或 av号)及页面参数。
- 将链接转换为嵌入式播放器,而不是保留原始 URL 或依赖 Discourse 的默认链接渲染。
这种方法避免了直接使用 URL 嵌入,而是通过插件动态生成播放器,用户只需粘贴链接即可在页面上直接观看视频。
实现步骤
1. 插件的基本结构
插件将包含以下文件:
plugin.rb:插件的入口文件,定义插件信息并注册处理器。lib/bilibili_video_processor.rb:自定义处理器,负责解析链接并生成嵌入代码。
目录结构如下:
discourse-bilibili-video/
├── plugin.rb
└── lib/
└── bilibili_video_processor.rb
2. 编写视频链接处理器
在 lib/bilibili_video_processor.rb 中,我们创建一个处理器来识别 Bilibili 链接并生成播放器代码:
module BilibiliVideoProcessor
def self.process!(doc)
# 遍历帖子中的所有 <a> 标签
doc.css('a').each do |link|
url = link['href']
# 检查是否为 Bilibili 视频链接
next unless url&.match?(/^https?:\/\/(?:www\.)?bilibili\.com\/video\/(BV\w+|av\d+)(?:\?p=(\d+))?/)
# 提取视频 ID 和页面参数
match = url.match(/^https?:\/\/(?:www\.)?bilibili\.com\/video\/(BV\w+|av\d+)(?:\?p=(\d+))?/)
video_id = match[1]
page = match[2] || "1" # 默认页面为 1
# 根据视频 ID 类型生成参数
if video_id.start_with?("BV")
param = "bvid=#{video_id}"
else
param = "aid=#{video_id[2..-1]}" # 移除 "av" 前缀
end
# 生成嵌入式播放器代码
iframe = <<~HTML
<iframe src="https://player.bilibili.com/player.html?#{param}&page=#{page}"
scrolling="no"
border="0"
frameborder="no"
framespacing="0"
allowfullscreen="true"
width="560"
height="315"></iframe>
HTML
# 用播放器替换原始链接
link.replace(iframe)
end
end
end
代码说明:
- 使用正则表达式匹配 Bilibili 视频链接(支持 BV号 和 av号 格式)。
- 提取视频 ID 和页面参数(如
?p=2表示第 2 部分)。 - 生成 iframe 播放器代码,并替换掉原始的
<a>标签。
3. 注册处理器到 Discourse
在 plugin.rb 中,将处理器集成到 Discourse 的帖子渲染流程中:
# name: discourse-bilibili-video
# version: 0.1
# authors: [你的名字]
# url: https://github.com/[你的用户名]/discourse-bilibili-video
# description: 在 Discourse 中嵌入 Bilibili 视频的插件
require_relative 'lib/bilibili_video_processor'
after_initialize do
# 添加自定义处理方法
add_to_class(:cooked_post_processor, :process_bilibili_videos) do
BilibiliVideoProcessor.process!(@doc)
end
# 在帖子渲染时调用
add_to_class(:cooked_post_processor, :post_process) do
process_bilibili_videos
super
end
end
代码说明:
after_initialize在 Discourse 初始化后运行。- 将
process_bilibili_videos方法添加到cooked_post_processor,在帖子内容渲染时自动处理 Bilibili 链接。
安装和使用
安装步骤
- 将插件代码上传至 GitHub 仓库,例如
https://github.com/[你的用户名]/discourse-bilibili-video。 - 编辑 Discourse 服务器的
app.yml文件,添加插件:hooks: after_code: - exec: cd: $home/plugins cmd: - git clone https://github.com/[你的用户名]/discourse-bilibili-video.git - 重建 Discourse 容器:
cd /var/discourse ./launcher rebuild app
使用方法
- 在 Discourse 帖子中直接粘贴 Bilibili 视频链接,例如:
https://www.bilibili.com/video/BV1abcdef123https://www.bilibili.com/video/av12345678?p=2
- 插件会自动将链接转换为嵌入式播放器,用户无需手动操作即可在页面上播放视频。
优势与特点
- 无需 URL 嵌入:插件直接将链接转换为播放器,而不是依赖 Discourse 默认的 URL 渲染或手动嵌入 iframe。
- 支持多种格式:兼容 Bilibili 的 BV号 和 av号 链接,并能处理多部分视频的页面参数。
- 无缝集成:用户体验自然,只需粘贴链接即可,无需额外配置。
注意事项
- 兼容性:确保您的 Discourse 版本支持 cooked post processor(通常为近期版本)。
- 安全性:Discourse 默认允许嵌入视频 iframe,但请检查 Content Security Policy (CSP) 是否允许
https://player.bilibili.com。 - 样式调整:当前播放器宽高固定为 560x315,如需响应式设计,可在 Discourse 的自定义 CSS 中添加样式。
通过这种方式,您可以在 Discourse 中实现不直接使用 URL 嵌入的 Bilibili 视频播放功能。插件会自动处理链接并呈现播放器,为用户提供便捷的体验。如果您需要进一步优化(例如添加视频标题或调整布局),请告诉我,我可以进一步完善方案!
Google更新調用次數:
AI高考
AI論語
AI紅樓
AI課文
以上網站繼續使用 Free ,增加到25個帳號輪循,還會不理人,但會少很多。
| Model | RPM | TPM | RPD |
|---|---|---|---|
| Gemini 2.5 Pro Experimental | 5 | 1,000,000 | 25 |
論壇
繼續使用付費Tier 1:
| Model | RPM | TPM | RPD |
|---|---|---|---|
| Gemini 2.5 Pro Experimental | 20 | 2,000,000 | 100 |
日常對話,應該不會不理人了。
超多輪對話
建議大家使用自己帳號直接在 ai.dev 展開,既可以直接保存在個人雲盤,且幾乎不會斷流。
为何有时自动保存会自己跳回去。。。导致有些对话没保存上(
以及推荐大家用chrome,edge的网页格式混乱
增加至30個API。
重設API邏輯:全部輪循使用完gemini-2.5-pro-exp-03-25所有額度後,自動轉到gemini-2.0-flash-thinking-exp-01-21,gemini-2.5-pro-exp-03-25重置後自動回歸。
高密度對話測試下,出錯率極小了;
但整體回覆速度因文本長度仍舊不好,說人話,回覆慢慢慢⋯⋯



