From ac505f51d3dc2fa9d3a5b2e4357d18ab7bda81f1 Mon Sep 17 00:00:00 2001 From: Azide Date: Fri, 23 Sep 2022 23:17:58 +0800 Subject: [PATCH 1/5] =?UTF-8?q?fix(platform-bilibili/bilibililive):?= =?UTF-8?q?=E4=B8=BA=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?UA,=20=E4=BF=AE=E5=A4=8D=E6=8E=A5=E5=8F=A3=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=A4=B1=E8=B4=A5=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plugins/nonebot_bison/platform/bilibili.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/plugins/nonebot_bison/platform/bilibili.py b/src/plugins/nonebot_bison/platform/bilibili.py index 7d5a763..71e07ac 100644 --- a/src/plugins/nonebot_bison/platform/bilibili.py +++ b/src/plugins/nonebot_bison/platform/bilibili.py @@ -27,11 +27,16 @@ class Bilibili(NewMessage): name = "B站" has_target = True parse_target_promot = "请输入用户主页的链接" + UA = { + "User-Agent": "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko", + } async def get_target_name(self, target: Target) -> Optional[str]: async with http_client() as client: res = await client.get( - "https://api.bilibili.com/x/space/acc/info", params={"mid": target} + "https://api.bilibili.com/x/space/acc/info", + params={"mid": target}, + headers=self.UA, ) res_data = json.loads(res.text) if res_data["code"]: @@ -171,11 +176,16 @@ class Bilibililive(StatusChange): schedule_kw = {"seconds": 10} name = "Bilibili直播" has_target = True + UA = { + "User-Agent": "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko", + } async def get_target_name(self, target: Target) -> Optional[str]: async with http_client() as client: res = await client.get( - "https://api.bilibili.com/x/space/acc/info", params={"mid": target} + "https://api.bilibili.com/x/space/acc/info", + params={"mid": target}, + headers=self.UA, ) res_data = json.loads(res.text) if res_data["code"]: @@ -188,6 +198,7 @@ class Bilibililive(StatusChange): res = await client.get( "https://api.bilibili.com/x/space/acc/info", params=params, + headers=self.UA, timeout=4.0, ) res_dict = json.loads(res.text) From 0a3171689a560dbbdcab1abb64b5dc146b2c592b Mon Sep 17 00:00:00 2001 From: Azide Date: Fri, 23 Sep 2022 23:23:56 +0800 Subject: [PATCH 2/5] =?UTF-8?q?docs:=E4=BC=98=E5=8C=96=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E7=9A=84=E9=85=8D=E7=BD=AE=E9=A1=B9=E9=83=A8?= =?UTF-8?q?=E5=88=86=E7=9A=84=E7=9B=B8=E5=85=B3=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/dev/README.md | 8 ++++---- docs/usage/README.md | 17 ++++++++++++----- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/docs/dev/README.md b/docs/dev/README.md index 38dbd53..e200756 100644 --- a/docs/dev/README.md +++ b/docs/dev/README.md @@ -27,7 +27,7 @@ sidebar: auto 本项目使用了 pre-commit 来进行代码美化和格式化。在`poetry shell`状态下执行`pre-commit install`来安装 git hook,可自动在 commit 时 格式化代码。 -# 适配新网站 +## 适配新网站 本插件需要你的帮助!只需要会写简单的爬虫,就能给本插件适配新的网站。 @@ -41,7 +41,7 @@ Nonebot 项目使用了全异步的处理方式,所以你需要对异步,Pyt - `nonebot_bison.post`: 可以理解为推送内容,其中包含需要发送的文字,图片,链接,平台信息等,分为: - `nonebot_bison.post.Post`: 简单的推送内容格式,需要发送的内容由 bison 处理 - `nonebot_bison.post.CustomPost`: 基于 markdown 语法的,自由度较高的推送内容格式 - - 详细的介绍可参见[生成 bison 的推送文本](#生成bison的推送文本) + - 详细的介绍可参见[生成 bison 的推送文本](#生成-bison-的推送文本) - `nonebot_bison.types.RawPost`: 从站点/平台中爬到的单条信息 - `nonebot_bison.types.Target`: 目标账号,Bilibili,微博等社交媒体中的账号 - `nonebot_bison.types.Category`: 信息分类,例如视频,动态,图文,文章等 @@ -53,7 +53,7 @@ Nonebot 项目使用了全异步的处理方式,所以你需要对异步,Pyt 先明确需要适配的站点类型,先明确两个问题: -#### 我要发送什么样的推送 +### 我要发送什么样的推送 - `nonebot_bison.platform.platform.NewMessage` 最常见的类型,每次爬虫向特定接口爬取一个消息列表, 与之前爬取的信息对比,过滤出新的消息,再根据用户自定义的分类和标签进行过滤,最后处理消息,把 @@ -65,7 +65,7 @@ Nonebot 项目使用了全异步的处理方式,所以你需要对异步,Pyt ,每次发送全部消息 例如:每日榜单定时发送 -#### 这个平台是否有账号的概念 +### 这个平台是否有账号的概念 - 有账号的概念 例如:B 站用户动态,微博用户动态,网易云电台更新 diff --git a/docs/usage/README.md b/docs/usage/README.md index b922589..c65251c 100644 --- a/docs/usage/README.md +++ b/docs/usage/README.md @@ -4,7 +4,7 @@ sidebar: auto # 部署和使用 -本节将教你快速部署和使用一个 nonebot-bison,如果你不知道要选择哪种部署方式,推荐使用[docker-compose](#docker-compose部署-推荐) +本节将教你快速部署和使用一个 nonebot-bison,如果你不知道要选择哪种部署方式,推荐使用[docker-compose](#docker-compose-部署-推荐) ## 部署 @@ -14,13 +14,15 @@ sidebar: auto 额外提供自动同意超级用户的好友申请和同意超级用户的加群邀请的功能 -#### docker-compose 部署(推荐) +#### docker-compose 部署 \[推荐\] 1. 在一个新的目录中下载[docker-compose.yml](https://raw.githubusercontent.com/felinae98/nonebot-bison/main/docker-compose.yml) 将其中的``改成自己的 QQ 号 + ```bash wget https://raw.githubusercontent.com/felinae98/nonebot-bison/main/docker-compose.yml ``` + 2. 运行配置 go-cqhttp ```bash @@ -30,7 +32,7 @@ sidebar: auto 通信方式选择:`3: 反向 Websocket 通信` 编辑`bot-data/config.yml`,更改下面字段: - ``` + ```yml account: # 账号相关 uin: # QQ账号 password: "" # 密码为空时使用扫码登录 @@ -47,12 +49,16 @@ sidebar: auto 3. 登录 go-cqhttp 再次 + ```bash docker-compose run go-cqhttp ``` + 参考[go-cqhttp 文档](https://docs.go-cqhttp.org/faq/slider.html#%E6%96%B9%E6%A1%88a-%E8%87%AA%E8%A1%8C%E6%8A%93%E5%8C%85) 完成登录 + 4. 确定完成登录后,启动 bot: + ```bash docker-compose up -d ``` @@ -96,8 +102,9 @@ sidebar: auto ::: tip INFO -- 所有配置项可参考[源文件](https://github.com/felinae98/nonebot-bison/blob/main/src/plugins/nonebot_bison/plugin_config.py) -- **配置项的配置方法** 请参考[NoneBot 配置方式](https://v2.nonebot.dev/docs/tutorial/configuration#%E9%85%8D%E7%BD%AE%E6%96%B9%E5%BC%8F),在`.env`/`.env.*`文件中写入希望配置的 Bison 配置项 +- 所有可用配置项可参见[源文件](https://github.com/felinae98/nonebot-bison/blob/main/src/plugins/nonebot_bison/plugin_config.py) +- 如果要在在 nonebot 中配置需要的**Bison 配置项**,请参考[NoneBot 配置方式](https://v2.nonebot.dev/docs/tutorial/configuration#%E9%85%8D%E7%BD%AE%E6%96%B9%E5%BC%8F),在`.env`/`.env.*`文件中写入希望配置的 Bison 配置项 +- 请注意,在`.env`/`.env.*`中添加的配置项 **不** 需要声明变量类型 ::: - `BISON_CONFIG_PATH`: 插件存放配置文件的位置,如果不设定默认为项目目录下的`data`目录 From 2c6ff40512c1d568e2842ba1c7e920178c6361a6 Mon Sep 17 00:00:00 2001 From: Azide Date: Sat, 24 Sep 2022 01:08:54 +0800 Subject: [PATCH 3/5] =?UTF-8?q?Revert=20"fix(platform-bilibili/bilibililiv?= =?UTF-8?q?e):=E4=B8=BA=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0UA,=20=E4=BF=AE=E5=A4=8D=E6=8E=A5=E5=8F=A3=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E8=8E=B7=E5=8F=96=E5=A4=B1=E8=B4=A5=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit ac505f51d3dc2fa9d3a5b2e4357d18ab7bda81f1. --- src/plugins/nonebot_bison/platform/bilibili.py | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/src/plugins/nonebot_bison/platform/bilibili.py b/src/plugins/nonebot_bison/platform/bilibili.py index 71e07ac..7d5a763 100644 --- a/src/plugins/nonebot_bison/platform/bilibili.py +++ b/src/plugins/nonebot_bison/platform/bilibili.py @@ -27,16 +27,11 @@ class Bilibili(NewMessage): name = "B站" has_target = True parse_target_promot = "请输入用户主页的链接" - UA = { - "User-Agent": "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko", - } async def get_target_name(self, target: Target) -> Optional[str]: async with http_client() as client: res = await client.get( - "https://api.bilibili.com/x/space/acc/info", - params={"mid": target}, - headers=self.UA, + "https://api.bilibili.com/x/space/acc/info", params={"mid": target} ) res_data = json.loads(res.text) if res_data["code"]: @@ -176,16 +171,11 @@ class Bilibililive(StatusChange): schedule_kw = {"seconds": 10} name = "Bilibili直播" has_target = True - UA = { - "User-Agent": "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko", - } async def get_target_name(self, target: Target) -> Optional[str]: async with http_client() as client: res = await client.get( - "https://api.bilibili.com/x/space/acc/info", - params={"mid": target}, - headers=self.UA, + "https://api.bilibili.com/x/space/acc/info", params={"mid": target} ) res_data = json.loads(res.text) if res_data["code"]: @@ -198,7 +188,6 @@ class Bilibililive(StatusChange): res = await client.get( "https://api.bilibili.com/x/space/acc/info", params=params, - headers=self.UA, timeout=4.0, ) res_dict = json.loads(res.text) From 3510bad1d0695c16af4f29daeebdb6a691f4c286 Mon Sep 17 00:00:00 2001 From: Azide Date: Tue, 27 Sep 2022 14:33:34 +0800 Subject: [PATCH 4/5] =?UTF-8?q?fix:=E8=B0=83=E6=95=B4bilibili-live?= =?UTF-8?q?=E5=B9=B3=E5=8F=B0=E4=B8=ADget=5Fstatus()=E5=87=BD=E6=95=B0rais?= =?UTF-8?q?e=E7=9A=84=E5=BC=82=E5=B8=B8=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/plugins/nonebot_bison/platform/bilibili.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/nonebot_bison/platform/bilibili.py b/src/plugins/nonebot_bison/platform/bilibili.py index 7d5a763..f80635a 100644 --- a/src/plugins/nonebot_bison/platform/bilibili.py +++ b/src/plugins/nonebot_bison/platform/bilibili.py @@ -201,7 +201,7 @@ class Bilibililive(StatusChange): info["cover"] = res_dict["data"]["live_room"]["cover"] return info else: - raise self.ParseTargetException(res.text) + raise self.FetchError(res.text) def compare_status(self, target: Target, old_status, new_status) -> list[RawPost]: if ( From db0a3740d83e58ce5c4b87e066fc62cc44d71f85 Mon Sep 17 00:00:00 2001 From: Azide Date: Sun, 16 Oct 2022 01:17:43 +0800 Subject: [PATCH 5/5] =?UTF-8?q?docs(issue=20#123):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E4=B8=ADnonebot=20=E7=9A=84=E8=BF=90?= =?UTF-8?q?=E8=A1=8C=E6=96=B9=E6=B3=95=E9=93=BE=E6=8E=A5=E5=A4=B1=E6=95=88?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/usage/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/usage/README.md b/docs/usage/README.md index c65251c..bf40a28 100644 --- a/docs/usage/README.md +++ b/docs/usage/README.md @@ -70,7 +70,7 @@ sidebar: auto #### 直接运行(不推荐) -可以参考[nonebot 的运行方法](https://v2.nonebot.dev/guide/getting-started.html) +可以参考[nonebot 的运行方法](https://docs.nonebot.dev/guide/getting-started.html) ::: danger 直接克隆源代码需要自行编译前端,否则会出现无法使用管理后台等情况。 :::