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
[Feature Request] 让阅读能够变得神似正版的段落评论功能 #1963
Comments
|
@qianfanguojin 可以,我写一个flutter应用试试? |
这个需要书源的相关适配,工作量预测会很大 |
都可以啊,你甚至可以用 Java ,只要能写出来大致的展示就行了,验证以下你的想法即可。 不过有一点,你是想正文内的划线评论还是每章后的评论?正文内的工作量估计就大的多了 |
@qianfanguojin 其实不要局限于一本书一个书源的思维。 可以一本书正文用笔趣阁等书源,而评论用起点等网站,可以在右上角加一个“段评书源选择”,让正文书源和评论书源分开。我的构思就是这个样子。 个人感觉其实工作量并没有那么大,每个段落后加个控件?应该是吧? 还有阅读的字符串都是硬编码吗?还是有做本地化的api? |
你的意思还是在段落内添加评论吗?那你需要考虑如何区别某段内容,因为不同的书源参差不齐,每段的内容,换行也可能不一样。。 |
原文我提到了这一点,起点的api里有该段评所评论的段落的内容。所以,可以根据字符串比较来校验该段落评价是不是属于这一行的。 正因为我发现了这一点,才让我的想法成为了可能。 |
所以我说按照字符串比较可能会根据书源的差异而不同,不过试了请求吗,修改 |
@qianfanguojin 😂 不, "quoteContent": "“哪位!”" 这个 所以一比较,就知道这个书源的段落有没有错位了 |
嗯,那是否可以这样理解,在已经登录账号的前提下,假如是起点。 显示阶段: 评论阶段: 这里我还有两个问题,如何知道最开始的 bookId 和 chapterId ?书源自带? |
@qianfanguojin 这是我的想法中很重要的一环: 首先,一本书开始阅读以后,在这里可以弄一个设置让用户选择是否开启段评 自动搜索所有支持段评的书源中是否有这本书,然后根据获取到的 |
这一段 让书源设置的解析规则解析从支持段评的书源获取到的内容并呈现出来 没看懂,根据评论获取正文? |
@qianfanguojin 就是把解析api的任务交给书源的意思 |
也行,那阅读的工作就是设计一套 API 来给书源使用咯 |
是的,大概就是这个意思 |
对了,对于字符串模糊匹配算法,我已经搞到了几个: 1. 字符串向量化这个算法我不是很理解,所以我放不了代码,大佬可以上网搜索一下 2. 莱温斯坦编辑距离算法我已经有了一个js的代码,java的算法在这里 function editDistance (strA, strB) {
// Levenshtein Edit Distance
if (strA === strB) {
return 1.0
}
if (!strA || !strB) {
return 0.0
}
const arr = new Array(strA.length + 1)
for (let i1 = 0; i1 <= strA.length; i1++) {
arr[i1] = new Array(strB.length + 1)
}
for (let i1 = 0; i1 <= strA.length; i1++) {
for (let i2 = 0; i2 <= strB.length; i2++) {
if (i1 === 0) {
arr[0][i2] = i2
} else if (i2 === 0) {
arr[i1][0] = i1
} else if (strA.charAt(i1 - 1) === strB.charAt(i2 - 1)) {
arr[i1][i2] = arr[i1 - 1][i2 - 1]
} else {
arr[i1][i2] = 1 + Math.min(arr[i1 - 1][i2 - 1], Math.min(arr[i1][i2 - 1], arr[i1 - 1][i2]))
}
}
}
return 1 - (arr[strA.length][strB.length] / Math.max(strA.length, strB.length))
} 3. 随机匹配算法如果书源有广告之类的污染了文本,那么如果截取字符串(比如笔趣阁等书源)中的一段,看看截取的这一小段字符串在不在要比较的字符串(比如起点api返回的内容)里,就可以判断这个字符串与原字符串的相似度了。
上源码: function randomlyMatch (strA, strB, minWordSize = 3, maxWordSize = 8, maxMatchCount = 100) {
if (strA === strB) {
return 1.0
}
if (!strA || !strB) {
return 0.0
}
minWordSize = minWordSize / 2
maxWordSize = maxWordSize / 2
let counter = 0
let m = 0
let o = 0
let temp
for (let i = 0; i < maxMatchCount; i++) {
do {
m = Math.random() * (strA.length - 1)
o = Math.random() * (maxWordSize - 0.25 - minWordSize) + 0.25 + minWordSize
temp = strA.slice(m - o, m + o)
} while (!temp)
if (strB.includes(temp)) {
counter++
}
}
return counter / maxMatchCount
} |
可以,我看看 |
@gedoor 大佬有计划了吗? |
你是想要全网付费网站律师函, |
正版网站以外的用户看书,只需要正文啦,其他都是不需要的(最主要是没钱) |
首先,我没钱,如果我有钱肯定会去看正版(当然也不会出现在这里),
可以先看看前面吗? |
由于长期没有状态更新,该问题将于5天后自动关闭。如有需要可重新打开。 |
防止关闭 |
防止关闭 |
由于长期没有状态更新,该问题将于5天后自动关闭。如有需要可重新打开。 |
本功能已经在开发中 |
@Seidko 我确实已经找到了各个功能的api,但是不清楚你是怎么实现的,所以里面的一些参数不知道怎么填进去(比如reviewId这种),你可以帮忙完善一下吗
|
开发进度
功能描述
然后,正版网站的评论api是开放的,无论是不是收费章节,所以不要质疑可行性
期望实现方式
起点的api结构是:
先通过
reviewSummary
获取段评的数量然后通过
reviewList
获取具体的段评如果要获取评论的回复,则要使用
quoteReviewList
据了解,QQ阅读,纵横的api结构也大差不差,因此可以作为通用的框架来判断
还有一个细节,起点的
reviewList
有一个quoteContent
,这个quoteContent
是该段评所评论的段落的内容,可以通过字符串比较来判断这个段落是否属于这个段落甚至有可能通过这个手段来从正版获得内容(幻想附加信息
我已经把起点有关的api扒下来了,下面是api获取到的内容demo,可以作为框架参考:
希望大佬能教教我手机程序的请求拦截,只会用devtools的菜鸟哭了,扒不了QQ阅读的api
reviewSummary
: 获取段评的数量信息,就像是刚刚打开起点阅读界面的时候,每个段落评论数量的信息URL:
https://read.qidian.com/ajax/chapterReview/reviewSummary?_csrfToken={_csrfToken}&bookId={bookId}&chapterId={chapterId}
reviewList
:具体的评论列表URL:
https://read.qidian.com/ajax/chapterReview/reviewList?_csrfToken={_csrfToken}&bookId={bookId}&chapterId=${chapterId}&segmentId={segmentId}&type=2&page={page}&pageSize={maxReviewCount}
起点有一次性请求的段评数量的限制,可以把
maxReviewCount
设置的比较大来解除这个限制也可以分次请求,
page
从1开始计数,如果一个段落的评论已经获取完了,那么isEnd
将会变成1
quoteReviewList
:评论的回复URL:
https://read.qidian.com/ajax/chapterReview/quoteReviewList?_csrfToken={_csrfToken}&reviewId={reviewId}&page={page}&pageSize={maxReviewCount}
和
reviewList
差不多效果演示
QQ阅读的界面:
正如上图,大佬们应该都用过QQ阅读或者起点吧(滑稽)如果加上了这功能,是不是就几乎和正版差不多了?(笑
这个功能我已经构思了很久,本来想自己开发的,结果发现了
阅读
这个宝玉,就希望能够借助这块宝玉,让自己的设想能够得以实现,我很愿意和大佬们探讨这个功能的实现,希望阅读
能够变得更好!The text was updated successfully, but these errors were encountered: