Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于富文本转换中链接转换的一个问题 #614

Closed
GD-Slime opened this issue May 3, 2024 · 6 comments
Closed

关于富文本转换中链接转换的一个问题 #614

GD-Slime opened this issue May 3, 2024 · 6 comments
Assignees
Labels
bug Something isn't working 已完成
Milestone

Comments

@GD-Slime
Copy link

GD-Slime commented May 3, 2024

Bug 描述

该问题会导致xaml转换失败,整个程序崩溃或卡住。#608

操作步骤

1. 打开https://space.bilibili.com/364677437
2. 其5月3日的一篇专栏内容会导致崩溃

期望结果

不崩溃

截图

No response

日志

2024-05-03 10:36:11.6989|ERROR|3|DynamicParseExtensions.UserDynamicStringToRichText|用户动态文本转富文本失败|无法找到与此错误代码关联的文本。

wfc: no '<' in attribute value [Line: 5 Position: 256]    at Windows.UI.Xaml.Markup.XamlReader.Load(String xaml)
   at BiliLite.Extensions.DynamicParseExtensions.UserDynamicStringToRichText(String txt, String id, List`1 emote, JObject extend_json, List`1 wordNodes, String title, String bindingCommands)

已定位描述

用户的专栏在发布时会转发到动态中。但因为专栏过长,api返回的内容中不会取全部内容,而会截取前面的一部分。
比如:

禁言群:661657137 VX聊天群:IChater3700 加群第一时间买到神车! 复制打开tb超级补贴限时抢 49¥ HU9046 I8kqWHkJO55¥  https://m.tb.cn/h.gYGwbgy 五一假期美团吃吃吃吃!!  好利来183代205代金券! 一次核销使用,5.18前有效!最近要买生日蛋糕的超划算 [图片] 肯德基五一小食桶【55】 到店或外卖(免配送費) [图片] KFC超级全家桶!一桶10件【59】  [图片] KFC肯德基 青春团团桶三人餐【59】 http://dpurl.cn/4RquSVhz  [图片] 【8.8】库迪咖啡畅销爆品16选1 单杯电子券 直充到账 全国通用 49¥ HU9046 I8kqWHkJO55¥  https://m.tb.cn/h.gYGwbgy [图片] 【9.9】电子券码 肯德基 1杯茶饮随心选(4选1)兑换券 https://m.tb.cn/h.gY7NCVQ 4覆ZHI7$8o29WHkuGZu$:// CA1831,打開/ 更多超值补贴1亓起 49¥ HU9046 I8kqWHkJO55¥  https://m.tb.cn/h.gYGw

其中https://m.tb.cn/h.gYGwbgy为一正确链接,而尾部的https://m.tb.cn/h.gYGw则为一错误截断的链接。
当进行url的富文本转换时,会先将第一个链接转换为

<InlineUIContainer><HyperlinkButton x:Name="btn" Command="{Binding Parent.LaunchUrlCommand}"  IsEnabled="True" Margin="0 -4 0 -4" Padding="0"  CommandParameter="https://m.tb.cn/h.gYGwbgy" ><TextBlock>🔗网页链接</TextBlock></HyperlinkButton></InlineUIContainer>

而其中仍然含有链接https://m.tb.cn/h.gYGwbgy, 会被后面这个错误截断的链接https://m.tb.cn/h.gYGw错误地匹配并转换,导致xaml格式层级出现混乱。

可能的修复方式:
计算转换完毕后的内容的index范围,称为"保护范围",在进行接下来的转换时不去转换这些范围内的内容

希望予以修复! @ywmoyue

应用来源

Github/其他Github镜像站

安装方式

No response

其它来源

No response

系统版本

No response

其它系统版本

No response

设备类型

No response

设备架构

No response

应用架构

No response

备注

No response

代码贡献

我更擅长发现问题

@GD-Slime GD-Slime added bug Something isn't working 待规划 labels May 3, 2024
@ywmoyue
Copy link
Owner

ywmoyue commented May 3, 2024

要不干脆不对专栏动态做富文本转换或者不显示内容了?

@ywmoyue
Copy link
Owner

ywmoyue commented May 3, 2024

看起来网页上没有点进专栏时也没有在动态页做转换

@GD-Slime
Copy link
Author

GD-Slime commented May 3, 2024

也可以,就是不知道这个问题到底是只存在于专栏动态还是其他类型也有

@GD-Slime
Copy link
Author

GD-Slime commented May 3, 2024

看起来网页上没有点进专栏时也没有在动态页做转换

是有的 https://www.bilibili.com/read/cv34255001/ 这个专栏的动态会做链接转换(可能是其专栏内容已经被转换了?因为是站内链接的原因)

@ywmoyue ywmoyue added this to the 待发布4.6.31 milestone May 3, 2024
@GD-Slime
Copy link
Author

GD-Slime commented May 3, 2024

@ywmoyue 是否可以做一个检测文本是否是格式正确的xaml的方法?毕竟错误的文本一转换就崩溃

@ywmoyue
Copy link
Owner

ywmoyue commented May 3, 2024

这个可以做

@ywmoyue 是否可以做一个检测文本是否是格式正确的xaml的方法?毕竟错误的文本一转换就崩溃

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working 已完成
Projects
None yet
Development

No branches or pull requests

2 participants