市面上window端阅读小说的软件
- 个人阅读体验不是很好(如 目录和正文的拆分和显示,更偏向于实体书而不是 大屏幕的网文小说)
- 以.txt形式进行小说的本地管理和打开也不是很方便
于是我也根据一些核心需求 另外搓了个本地小说阅读软件:
【亮点】
对比市面上一般的 window 端小说本地阅读软件,本软件除了常见的小说章节解析、目录解析、最近阅读以外,还有以下亮点:
1. 自定义 .nov 文件格式,方便本地小说文件管理和编辑
.nov 是基于 txt 的自定义格式,是一个有显眼专属图标的文本格式,既能像普通文件一样直接双击打开,也能用记事本随手编辑。
解决了什么痛点?
- 本地小说以
.txt 存在为主,容易和其他文本文件混在一起,分不清谁是谁
- 主流 Windows 阅读器需要导入文件才能打开,不符合轻量化使用习惯
- 将
txt转化为epub虽然能够解决前两个问题,但是由于下载的小说难免存在错别字或排版问题,所以经常需要人工轻量级修订, 而 .epub 格式十分复杂,想要修改起来十分十分麻烦
本软件的方案:
|
痛点 |
解决方案 |
| ① |
小说 和其他.txt文件混在一起分不清 |
.nov 使用专属小说图标,一眼认出 |
| ② |
打开需要导入,不够轻量 |
双击 .nov 直接阅读,无需额外导入 |
| ③ |
.epub 编辑订正困难 |
.nov 本质是纯文本,记事本即可轻松编辑订正 |
2. 悬浮目录支持多列显示,支持分卷、分页,方便上千章节的小说的跳转
从底部唤出的目录面板,一行显示多个章节,且所在的分卷、分页划分一目了然。
解决了什么痛点?
- 网文动不动上千章,但是几乎所有window阅读软件
只针对章节较少的实体书进行设计:一行通常只显示一个章节,作为读者目录跳转非常不方便
- 很多小说明明有分卷,但本地阅读器基本都不显示,难以有一个更明晰的目录视角
本软件的方案:
| 痛点 |
解决方案 |
| 一行只显示一个章节,大屏空间浪费 |
一行显示多个章节,充分利用电脑大屏幕,跳转更方便 |
| 缺少分卷/分页划分 |
支持按分卷信息划分
即使小说没有分卷,也自动按章节数分页 |
3. 长段落自动拆分,阅读更舒适
对于长段落,会自动拆分成长短不一的分段,从而得到更好的阅读体验。
解决了什么痛点?
- 不少网文排版粗糙,五六七八行文字揉成一团,密密麻麻的,阅读不是很舒适
- 一些偏老派写法的传统实体风格小说,习惯使用长句长段进行描写,阅读比较拗口难懂
通过自动拆解长段落,使段落长短错落有致,从而提高读者的阅读浏览体验。
4. 更多细节功能
- 键盘 左右键 翻章节,上下键 滚动页面,回车键 唤出目录
- 深度用户:
config.py 里可以自定义更多字体、字号、颜色、间距,怎么习惯怎么来
【使用】
- 打开
.nov 小说:从 Realease里下载 NovReader_Setup.exe 后安装即可
- 将
.txt 转化为 .nov: 单个文件 直接修改文件格式后缀为 .nov即可
多个文件 可以下载Realease里面的 TxtToNov.bat批量修改
- 绑定
NovReader为默认的.nov打开程序:部分window版本由于安全原因,安装后不能自动绑定成功, 需要手动打开.nov文件的右键菜单,选择属性,修改打开方式为NovReader即可
开源地址:GitHub - Super-Cookie/NovReader · GitHub
下载地址:在Releases里下载
非商用AGPL-3.0协议,欢迎Star
似乎就是一个文本浏览器,不过最大的雷点就是那个.nov格式…
能满足需求的场景就行了
作为一个本地小说阅读器,肯定是要文本解析为主啊,你还想怎么发挥?
难道有亿万用户的并发场景?
市面上 对小说文本数据的解析,以及软件内各种不同的交互和显示的逻辑都做得不太好,导致我的阅读体验和文件管理体验都不是很好,这才自己动手了
至于.nov我在说明里面有提到
其实它就是个类似.md的文本格式 这里是方便我区分是不是本地小说罢了以及方便编辑
.md你能接受 .nov你为什么就不能接受?
Remember
(Remember)
5
这么小一个软件,还弄个setup?直接一个exe发布不好么。
主要是为了绑定.nov的默认程序为本程序
如果是单独的exe我也编译过,我之前还另外配置了一个bat专门拿来绑定.nov,但是也是一直绑定不了没搞懂哪里有问题
所以不使用独立的exe的原因是:单独的exe即使配合bat也无法绑定.nov的默认程序为本程序, 那至少能够用户选择.nov的打开方式时 能直接找到本程序,所以无奈只能选择exe_setup 安装的方式,这种方式能够使得.nov的打开方式里能够直接选择本程序
看网上说好像是win11的安全性问题升级了?没有签名的不能直接绑定某类型的文件?
没有安装器的话,就不能把 exe 复制到固定的路径并且写注册表啊。普通的绿色软件一般都做不到文件关联。
话说,你这种本地阅读软件,可以试试“云软盘”或者“openlist + rclone”这些挂载盘,就可以几个人一起阅读了。你上传到云软盘的文件,别人也可以直接阅读。
最近云软盘的群里有好多人拿云软盘存 Obsidian 笔记和 epub/pdf 书籍。
绿色软件可以是可以用另外的bat来写绑定方式 但是也只能写入打开方式 不能绑定文件格式
不能一步到位的情况下,用户除了下载绿色exe,还要运行bat后写入打开方式,然后再手动设置默认, 安装配置太繁琐了
如果使用 exe_setup,用户安装后,只需要手动绑定默认即可
而且绿色软件还有一个问题,就是一旦路径被移动,打开方式那里不会被更新,对于一个需要绑定某种文件格式作为打开方式的软件,不是很合适
(即使你手动重新选择,还是原本的路径,只能用bat来覆盖或者第三方软件修改路径和图标,很麻烦太不符合直觉了)
挂载盘 本来就支持 我这个对比市面上的txt小说阅读软件
区别之一就是 可以双击打开本地的文件(如.nov)
而不需要先导入软件后才能查看这么不灵活
Time
(Time)
9
其实是可以的,我之前有个工具就是利用cmd脚本来实现修改注册表并且未特定的文件类型(比如我这里的是.dfc)设置默认打开方式的
以下是脚本部分,做个参考吧
@echo off
setlocal
set "SCRIPT_DIR=%~dp0"
set "DROPFLOW_EXE=%SCRIPT_DIR%dropfloww.exe"
if not exist "%DROPFLOW_EXE%" set "DROPFLOW_EXE=%SCRIPT_DIR%dropflow.exe"
if not exist "%DROPFLOW_EXE%" set "DROPFLOW_EXE=%SCRIPT_DIR%..\target\release\dropfloww.exe"
if not exist "%DROPFLOW_EXE%" set "DROPFLOW_EXE=%SCRIPT_DIR%..\target\release\dropflow.exe"
if not exist "%DROPFLOW_EXE%" (
echo Could not find dropfloww.exe or dropflow.exe.
echo Put this script next to the executable, or run cargo build --release first.
echo.
pause
exit /b 1
)
echo Registering DropFlow workflow association:
echo %DROPFLOW_EXE%
set "PREVIOUS_PROGID="
for /f "tokens=1,2,*" %%A in ('reg query "HKCU\Software\Classes\.dfc" /ve 2^>nul') do (
if /i "%%B"=="REG_SZ" set "PREVIOUS_PROGID=%%C"
)
if not defined PREVIOUS_PROGID (
for /f "tokens=1,2,*" %%A in ('reg query "HKCR\.dfc" /ve 2^>nul') do (
if /i "%%B"=="REG_SZ" set "PREVIOUS_PROGID=%%C"
)
)
set "BACKUP_PROGID="
for /f "tokens=1,2,*" %%A in ('reg query "HKCU\Software\Classes\DropFlow.Workflow\Backup" /v PreviousProgId 2^>nul') do (
if /i "%%B"=="REG_SZ" set "BACKUP_PROGID=%%C"
)
if not defined BACKUP_PROGID (
if defined PREVIOUS_PROGID (
if /i not "%PREVIOUS_PROGID%"=="DropFlow.Workflow" (
reg add "HKCU\Software\Classes\DropFlow.Workflow\Backup" /v PreviousProgId /d "%PREVIOUS_PROGID%" /f >nul
echo Saved previous .dfc association: %PREVIOUS_PROGID%
)
)
)
reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.dfc" /f >nul 2>nul
reg add "HKCU\Software\Classes\.dfc" /ve /d "DropFlow.Workflow" /f >nul
reg add "HKCU\Software\Classes\DropFlow.Workflow" /ve /d "DropFlow Workflow" /f >nul
reg add "HKCU\Software\Classes\DropFlow.Workflow\shell" /ve /d "open" /f >nul
reg add "HKCU\Software\Classes\DropFlow.Workflow\shell\open" /ve /d "Run workflow" /f >nul
reg add "HKCU\Software\Classes\DropFlow.Workflow\shell\open\command" /ve /d "\"%DROPFLOW_EXE%\" \"%%1\" %%*" /f >nul
reg add "HKCU\Software\Classes\DropFlow.Workflow\shell\edit" /ve /d "Edit with Notepad" /f >nul
reg add "HKCU\Software\Classes\DropFlow.Workflow\shell\edit\command" /ve /d "notepad.exe \"%%1\"" /f >nul
reg add "HKCU\Software\Classes\DropFlow.Workflow\shellex\DropHandler" /ve /d "{86C86720-42A0-1069-A2E8-08002B30309D}" /f >nul
call :refresh_associations
echo Done.
echo.
pause
exit /b 0
:refresh_associations
echo Refreshing Explorer file association cache...
powershell -NoProfile -ExecutionPolicy Bypass -Command "Add-Type -Namespace Win32 -Name Shell -MemberDefinition '[DllImport(\"shell32.dll\")] public static extern void SHChangeNotify(int wEventId, uint uFlags, IntPtr dwItem1, IntPtr dwItem2);'; [Win32.Shell]::SHChangeNotify(0x08000000, 0, [IntPtr]::Zero, [IntPtr]::Zero)" >nul 2>nul
ie4uinit.exe -show >nul 2>nul
exit /b 0
还有恢复部分
@echo off
setlocal
echo Removing DropFlow workflow association.
set "BACKUP_PROGID="
for /f "tokens=1,2,*" %%A in ('reg query "HKCU\Software\Classes\DropFlow.Workflow\Backup" /v PreviousProgId 2^>nul') do (
if /i "%%B"=="REG_SZ" set "BACKUP_PROGID=%%C"
)
reg delete "HKCU\Software\Classes\DropFlow.Workflow" /f >nul 2>nul
reg delete "HKCU\Software\Classes\Applications\dropflow.exe" /f >nul 2>nul
reg delete "HKCU\Software\Classes\Applications\dropfloww.exe" /f >nul 2>nul
reg delete "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.dfc" /f >nul 2>nul
if defined BACKUP_PROGID (
reg add "HKCU\Software\Classes\.dfc" /ve /d "%BACKUP_PROGID%" /f >nul
echo Restored previous .dfc association: %BACKUP_PROGID%
) else (
reg add "HKCU\Software\Classes\.dfc" /ve /d "txtfile" /f >nul
echo Restored .dfc association to txtfile.
)
call :refresh_associations
echo Done.
echo.
pause
exit /b 0
:refresh_associations
echo Refreshing Explorer file association cache...
powershell -NoProfile -ExecutionPolicy Bypass -Command "Add-Type -Namespace Win32 -Name Shell -MemberDefinition '[DllImport(\"shell32.dll\")] public static extern void SHChangeNotify(int wEventId, uint uFlags, IntPtr dwItem1, IntPtr dwItem2);'; [Win32.Shell]::SHChangeNotify(0x08000000, 0, [IntPtr]::Zero, [IntPtr]::Zero)" >nul 2>nul
ie4uinit.exe -show >nul 2>nul
exit /b 0
gigacore
(集核云软盘)
10
问题是,如果这个绿色软件的 exe 移动了位置怎么样啊?这个绑定就失效了。
如果不想失效就需要禁止移动 exe, 这似乎失去了绿色软件的 portable 特性。
Time
(Time)
11
在run一次脚本呗,总不可能每次使用完都要移动一次吧。
不过如果要考虑放在U盘等非固定路径,使用setup也需要再“安装”一次才能重写绑定路径。
而且如果是使用脚本来写入注册表,也更加透明吧,使用者知道脚本干了什么
而且绿色软件的特性也不只是portable,还包括不再其他地方放置数据,写注册表等
不过因为要修改打开方式和绑定文件关联,所以修改注册表也是必要的,不过可以通过脚本移除,也算是广义绿色(单exe,即删即卸)。