FishHawk / auto-novel

轻小说机翻网站,支持网络小说/文库小说/本地小说
https://books.fishhawk.top/
GNU General Public License v3.0
368 stars 40 forks source link

特殊字符文库小说上传下载问题及竖排小说无 P 标签导致的翻译退化问题。 #9

Open 2Loong6 opened 9 months ago

2Loong6 commented 9 months ago

1.特殊字符文库小说上传下载问题 https://books.fishhawk.top/wenku/6450c25684972153850fa45b 重装武器第15卷 2.竖排小说无 P 标签导致的翻译退化问题。 https://books.fishhawk.top/wenku/6450c4c084972153850fa92f 如GJ部中等部amazon排版特殊的epub小说,不以P标签为分割

FishHawk commented 9 months ago

1.确实

2.乱排版的epub我没什么思路,除了这个单个p标签的,还有没有p标签的。还没想出来一个统一处理的思路。

2Loong6 commented 9 months ago

1.确实

2.乱排版的epub我没什么思路,除了这个单个p标签的,还有没有p标签的。还没想出来一个统一处理的思路。

乱排版的问题,body内容提取出文本后,只需要考虑换行就可以,我自己对kotlin不太熟,可以做个参考

val path = Path("")
val doc = Jsoup.parse(path.readBytes().decodeToString(), Parser.xmlParser())
doc.select("rt").remove()
val body = doc.body().toString().lines()
val lines = StringBuilder()
body.forEach { line ->
    //替换html标签
    val appendLine = line.replace("<[^>]+>".toRegex(), "")
    if (appendLine.isNotBlank()) {
        lines.append(appendLine)
        if (line.contains("<br") || line.contains("</p>")) {
                lines.append("\n")
        }
    }
}

println(lines)
FishHawk commented 9 months ago

1.确实 2.乱排版的epub我没什么思路,除了这个单个p标签的,还有没有p标签的。还没想出来一个统一处理的思路。

乱排版的问题,body内容提取出文本后,只需要考虑换行就可以,我自己对kotlin不太熟,可以做个参考

val path = Path("")
val doc = Jsoup.parse(path.readBytes().decodeToString(), Parser.xmlParser())
doc.select("rt").remove()
val body = doc.body().toString().lines()
val lines = StringBuilder()
body.forEach { line ->
    //替换html标签
    val appendLine = line.replace("<[^>]+>".toRegex(), "")
    if (appendLine.isNotBlank()) {
        lines.append(appendLine)
        if (line.contains("<br") || line.contains("</p>")) {
                lines.append("\n")
        }
    }
}

println(lines)

难点不在于提取文本,而在于提取的文本之后还要注入回去生成中日对比版,同时不损害图片等奇怪样式。 文库小说的epub解析器升级优先级很高,但是得排在支持sakura版本覆盖后面,而且最近很忙,可能得等到春节了。

当然,如果有人有兴趣自己试试开发,但又不熟悉kotlin的话,可以先从文件翻译里的前端epub解析开始,按照epubParserV1做一个V2就行了。

FishHawk commented 8 months ago

第一个问题修了。