Stage1st

 找回密码
 立即注册
搜索
查看: 1381|回复: 11
打印 上一主题 下一主题

[软件] KOODO READER 怎么自动判断TXT文件的章节的?

[复制链接]
     
跳转到指定楼层
楼主
发表于 2024-3-24 09:44 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
有没有这东西的说明?    一定的格式还是?

回复

使用道具 举报

     
2#
发表于 2024-3-24 10:35 | 只看该作者
能自动判断就是有分章规则,但具体规则要看软件
回复

使用道具 举报

     
3#
 楼主| 发表于 2024-3-24 11:24 | 只看该作者
汝者 发表于 2024-3-24 10:35
能自动判断就是有分章规则,但具体规则要看软件

我问的就是koodo这个软件啊
回复

使用道具 举报

     
4#
发表于 2024-3-24 11:32 | 只看该作者
没用过你说的这个软件,但是我自己做过阅读软件,TXT又没什么额外信息,分章那就只能读内容然后按照一些分割规则来分章,就是你说的按照一些特定的格式,至于具体可以按照哪些格式来分就只能看源码才能知道了。
回复

使用道具 举报

     
5#
发表于 2024-3-24 11:52 | 只看该作者
txt又没有标准,基本都是按约定俗成来设计,一般都是含有关键字第几章之类或者特殊字符。有些会给你自定义分章的正则表达式。

论坛助手,iPhone
回复

使用道具 举报

     
6#
发表于 2024-3-24 13:34 来自手机 | 只看该作者
瓦格雷 发表于 2024-3-24 11:24
我问的就是koodo这个软件啊

那为啥不去github翻源码这里又不是issue区

—— 来自 vivo V2302A, Android 14上的 S1Next-鹅版 v2.5.2-play
回复

使用道具 举报

     
7#
 楼主| 发表于 2024-3-24 13:46 | 只看该作者
绕指流光 发表于 2024-3-24 13:34
那为啥不去github翻源码这里又不是issue区

—— 来自 vivo V2302A, Android 14上的 S1Nex ...

明显 我是看不懂这些的  我不是超能力者
回复

使用道具 举报

     
8#
发表于 2024-3-24 13:46 | 只看该作者
看了眼代码,大概在这个位置
https://github.com/koodo-reader/ ... s/bookUtil.tsx#L256
里面用到了kookit.js不过看样子作者不打算开源

你可以去翻他说的这个库
https://github.com/johnfactotum/foliate-js
回复

使用道具 举报

     
9#
发表于 2024-3-24 16:31 | 只看该作者
帆影FX 发表于 2024-3-24 13:46
看了眼代码,大概在这个位置
https://github.com/koodo-reader/koodo-reader/blob/fcc8a6f014f20b1bf5c1b2b ...

https://github.com/johnfactotum/foliate/issues/226

简单搜了一下, 如果真的只是简单包装的话, 分章规则应该就是链接里这个回答.

机翻:
我已经添加了对文本文件的基本支持。
需要注意的是,由于文本文件没有唯一的标识符,因此注释目前是禁用的,最后的位置也不会被记住。
此外,它会将 3 个或更多换行符视为分章符,将 2 个换行符视为分段符,而忽略单个换行符。显然,这对某些文本文件比对其他文本文件更有效。
回复

使用道具 举报

     
10#
 楼主| 发表于 2024-3-24 17:07 来自手机 | 只看该作者
糊状物 发表于 2024-3-24 16:31
https://github.com/johnfactotum/foliate/issues/226

简单搜了一下, 如果真的只是简单包装的话, 分章规 ...

谢谢啊   不过 感觉很奇怪  我都是连续6个回车分章节  但是有些地方有效 有些地方就没用
回复

使用道具 举报

     
11#
发表于 2024-3-24 17:57 | 只看该作者
瓦格雷 发表于 2024-3-24 17:07
谢谢啊   不过 感觉很奇怪  我都是连续6个回车分章节  但是有些地方有效 有些地方就没用 ...
  1.     const chapters = data.split(/(\r\n){3,}/g)
  2.         .filter(x => x && x !== '\r\n')
  3.         .map(c => {
  4.             const ps = c.split(/(\r\n){2}/g)
  5.                 .filter(x => x && x !== '\r\n')
  6.             const blob = new Blob(
  7.                 [ps.map(p => `<p>${p}</p>`).join('')],
  8.                 { type: 'text/html' })
  9.             const url = URL.createObjectURL(blob)
  10.             return {
  11.                 href: url,
  12.                 type: 'text/html',
  13.                 title: ps[0].replace(/\r\n/g, '')
  14.             }
  15.         })
复制代码


简单看了一下代码他是识别\r\n不是单个\n
或许你需要换一个方便输入\r\n的文本编辑器
\r和\n得介绍:
https://blog.csdn.net/lqy971966/article/details/108355292
回复

使用道具 举报

     
12#
 楼主| 发表于 2024-3-24 21:07 | 只看该作者
糊状物 发表于 2024-3-24 17:57
简单看了一下代码他是识别\r\n不是单个\n
或许你需要换一个方便输入\r\n的文本编辑器
\r和\n得介绍:

谢谢 再去研究下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|stage1st 沪ICP备13020230号-1 沪公网安备 31010702007642号

GMT+8, 2024-4-28 05:47 , Processed in 0.023679 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表