Closed zhanbao2000 closed 3 years ago
描述: 解析部分以JSON消息(即[CQ:json,...],包括分享和小程序)构造的分享链接时发生错误
环境: Windows10 和 Ubuntu Server 20.04.2 LTS Python 3.9
复现: 使用安卓哔哩哔哩客户端,点击任一视频,然后分享到QQ内,将有概率触发下述错误 aiohttp.client_exceptions.ClientConnectorError: Cannot connect to host b23.tv\:443 ssl:default [Name or service not known] log.txt
aiohttp.client_exceptions.ClientConnectorError: Cannot connect to host b23.tv\:443 ssl:default [Name or service not known]
分析: 使用json消息段分享视频时,某些视频在构造url时采用以下方式 [CQ:json, ... , "jumpUrl":"https://b23.tv/hW3asF... 而也有某些视频采用如下方式: [CQ:json, ... , "jumpUrl":"https:\/\/b23.tv\/9hj9Dt...
[CQ:json, ... , "jumpUrl":"https://b23.tv/hW3asF...
[CQ:json, ... , "jumpUrl":"https:\/\/b23.tv\/9hj9Dt...
若仍然使用该正则表达式b23.tv(\\)?/(\w+)|(bili(22|23|33|2233).cn)(\\)?/(\w+),即 https://github.com/mengshouer/nonebot_plugin_analysis_bilibili/blob/9da2b040c51d539fab04db239d5aba1be4003aba/nonebot_plugin_analysis_bilibili/analysis_bilibili.py#L53 会导致前者能正常解析为https://b23.tv/hW3asF,后者会被解析为https://b23.tv\/9hj9Dt,因此后者会使aiohttp将b23.tv\当作hostname处理,最终会导致找不到主机名引发该错误
b23.tv(\\)?/(\w+)|(bili(22|23|33|2233).cn)(\\)?/(\w+)
https://b23.tv/hW3asF
https://b23.tv\/9hj9Dt
b23.tv\
可能的解决方式:
b23 = re.compile(r'b23.tv(\\)?/(\w+)|(bili(22|23|33|2233).cn)(\\)?/(\w+)').search(text) url = f'https://b23.tv/{b23[2]}'
这样可以同时解决https://b23.tv/和https:\/\/b23.tv\/的问题
https://b23.tv/
https:\/\/b23.tv\/
a59e8db59ec08a40aba6c7f947f1d05e7436eade
描述: 解析部分以JSON消息(即[CQ:json,...],包括分享和小程序)构造的分享链接时发生错误
环境: Windows10 和 Ubuntu Server 20.04.2 LTS Python 3.9
复现: 使用安卓哔哩哔哩客户端,点击任一视频,然后分享到QQ内,将有概率触发下述错误
aiohttp.client_exceptions.ClientConnectorError: Cannot connect to host b23.tv\:443 ssl:default [Name or service not known]
log.txt分析: 使用json消息段分享视频时,某些视频在构造url时采用以下方式
[CQ:json, ... , "jumpUrl":"https://b23.tv/hW3asF...
而也有某些视频采用如下方式:[CQ:json, ... , "jumpUrl":"https:\/\/b23.tv\/9hj9Dt...
若仍然使用该正则表达式
b23.tv(\\)?/(\w+)|(bili(22|23|33|2233).cn)(\\)?/(\w+)
,即 https://github.com/mengshouer/nonebot_plugin_analysis_bilibili/blob/9da2b040c51d539fab04db239d5aba1be4003aba/nonebot_plugin_analysis_bilibili/analysis_bilibili.py#L53 会导致前者能正常解析为https://b23.tv/hW3asF
,后者会被解析为https://b23.tv\/9hj9Dt
,因此后者会使aiohttp将b23.tv\
当作hostname处理,最终会导致找不到主机名引发该错误可能的解决方式:
这样可以同时解决
https://b23.tv/
和https:\/\/b23.tv\/
的问题