痛点

喜欢读小说,但是现在的小说吧,特吸引人,还特别长!作者更慢了吧,期待更新。作者更快了吧,一下子好多章,要读完很耗费时间。

我就想,是不是可以有个软件,可以帮我把小说的内容缩写出来,这样读起来就快多了。毕竟经常读小说的都知道,现在的小说动不动就是几十万字起步,两三章铺一个场景,十几章才推进一点点主线,更新还时不时拉胯,水字数、重复桥段、无意义对话一股脑往上堆。看着是过瘾,但时间不够的日子里,真的想要一个“速读版”。

解决痛点

现在有了AI 编程辅助软件,比如Comate,我的想法终于可以落地了。于是用Cmoate花两天时间,帮我做了一个读小说神器,帮我把几千字的小说章节,缩写到几百个字,内容一目了然!

当然这只是个demo版,缩写功能使用的是jieba分词,还没有调用大模型的API,所以归纳缩写的没有那么完美。

后期的改进计划,就是看看有没有合适的AI API可以挂载上,我认为合适的大模型,首先要免费的,因为我不想一个小巧的神器,还要到处注册账户,配置token啥的。小巧精干,用户拿来就能用,才是它的核心竞争力。

小说阅读神器 - Novel Reader Helper

简介

小说阅读神器是一款功能强大的在线小说阅读辅助工具,集成了智能浏览器、内容提取、OCR识别和AI总结等多项功能。帮助您更高效地阅读和理解网络小说内容。

该项目使用文心快码Comate辅助编程实现(其实大部分脏活累活都是Comate干的,我就是帮着把把关,指指点点,外加人工测试)

源码:GitCode - 全球开发者的开源社区,开源代码托管平台

核心功能

智能浏览器

  • 多站点支持:内置起点中文网、纵横中文网、17K小说网等主流小说网站快捷链接
  • 完整浏览功能:支持前进、后退、刷新、停止等标准浏览器操作
  • 快捷导航:工具栏一键访问常用小说网站
  • 本地文件支持:可打开本地HTML/MHTML格式的小说文件

快速开始

先下载源代码

git clone https://gitcode.com/skywalk163/novel_reader_helper

1. 安装依赖

您可以选择快速安装(不包含OCR功能)或完整安装:

# 快速安装 - 不包含OCR功能
python install.py --quick

# 完整安装 - 包含OCR功能
python install.py --full

python install.py --quick 可以简化为python install.py

主要依赖包括:

  • PyQt5 >= 5.15.0
  • PyQtWebEngine >= 5.15.0
  • requests >= 2.28.0
  • beautifulsoup4 >= 4.11.0
  • paddleocr >= 2.6.0 (仅完整安装时安装,用于OCR功能)

2. 启动浏览器

python browser.py

或使用启动脚本:

python start.py

3. 使用步骤

浏览小说网站
  1. 点击工具栏上的网站快捷按钮(起点、纵横等)
  2. 或在地址栏输入网址,按回车键访问
提取小说内容
  1. 在浏览器中打开小说章节页面
  2. 等待页面完全加载
  3. 点击工具栏的"📄 提取内容"按钮
  4. 系统会自动识别并提取章节标题和正文
AI总结功能
  1. 先使用"📄 提取内容"功能提取小说内容
  2. 点击工具栏的"📝 AI总结"按钮
  3. 查看自动生成的内容摘要
  4. 可以复制总结或保存到文件
OCR识别(可选)
  1. 在包含图片的小说页面
  2. 点击"🖼️ 识别图片"按钮
  3. 系统会自动下载图片并识别文字
  4. 识别结果会与提取的文本内容合并显示

Comate编程记录

按部就班的提需求就行,后面就交给Comate的zulu来执行就行了。

不过生成快,调试要花10倍的精力

当然我也在反思,自己有些地方prompt技巧不足,让AI绕了很多弯路。

好消息是:1 我也在成长 2 Comate新推出了Spec Mode,以成果导向,可控执行。

调试

git push报错

git push -u origin main
error: src refspec main does not match any
error: failed to push some refs to 'https://gitcode.com/skywalk163/novel_reader_helper'

E:\comatework\novel_reader_helper>git branch -a
* master

原来是没有main这个分支啊,创建一个分支

有些机器安装的时候报urlib3依赖库找不到

正在处理中

安装后启动报错缺库请安装依赖:

python browser.py
警告: PyQt5/PyQtWebEngine 未安装: No module named 'PyQt5.sip'
错误: PyQt5/PyQtWebEngine 不可用: No module named 'PyQt5.sip'

请安装依赖:
pip install PyQt5 PyQtWebEngine

将install.py文件加上这两个库

    basic_requirements = [
        "PyQt5>=5.15.0",
        "PyQt5_qt5>=5.15.0",
        "PyQtWebEngine>=5.15.0",
        "PyQtWebEngine-Qt5>=5.15.0,<5.16.0",
        "requests>=2.28.0",
        "beautifulsoup4>=4.11.0",
        "jieba>=0.42.1",
    ]

但是后面碰到报错:

报错failed to open swrast: /usr/lib/dri/swrast_dri.so: 

python main.py 
libGL error: MESA-LOADER: failed to open swrast: /usr/lib/dri/swrast_dri.so: cannot open shared object file: No such file or directory (search paths /usr/lib/x86_64-linux-gnu/dri:\$${ORIGIN}/dri:/usr/lib/dri, suffix _dri)
libGL error: failed to load driver: swrast
WebEngineContext used before QtWebEngine::initialize() or OpenGL context creation failed.
QGLXContext: Failed to create dummy context
Failed to create OpenGL context for format QSurfaceFormat(version 2.0, options QFlags<QSurfaceFormat::FormatOption>(), depthBufferSize 24, redBufferSize -1, greenBufferSize -1, blueBufferSize -1, alphaBufferSize -1, stencilBufferSize 8, samples 0, swapBehavior QSurfaceFormat::DefaultSwapBehavior, swapInterval 1, colorSpace QSurfaceFormat::DefaultColorSpace, profile  QSurfaceFormat::NoProfile) 
Aborted (core dumped)

想办法用ln -s链接lib库的方法解决,但是后面还是会有很多报错。

AI说是pyqt和系统的pyqt冲突导致的,解决的方法是用系统的python,或者用系统的pythong创建一个虚拟环境。具体参见start_browser_venv:

#!/bin/bash
# 小说阅读器浏览器 - 虚拟环境启动脚本
# 使用专门创建的虚拟环境来避免PyQt5库冲突

SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
VENV_DIR="$HOME/novel_browser_venv"

echo "===== 小说阅读器浏览器启动 ====="

# 检查虚拟环境是否存在
if [ ! -d "$VENV_DIR" ]; then
    echo "❌ 错误: 虚拟环境不存在: $VENV_DIR"
    echo ""
    echo "请先运行以下命令创建虚拟环境:"
    echo "/usr/bin/python3 -m venv --system-site-packages $VENV_DIR"
    exit 1
fi

# 激活虚拟环境
echo "📦 激活虚拟环境: $VENV_DIR"
source "$VENV_DIR/bin/activate"

# 确保使用系统Qt库
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH

# 显示Python版本信息
echo "🐍 Python版本: $(python --version)"
echo "📍 Python路径: $(which python)"
echo ""

# 启动浏览器
echo "🚀 正在启动浏览器..."
cd "$SCRIPT_DIR"
python browser.py "$@"

# 保存退出状态码
EXIT_CODE=$?

# 停用虚拟环境
deactivate

if [ $EXIT_CODE -eq 0 ]; then
    echo "✅ 浏览器正常退出"
else
    echo "❌ 浏览器退出,状态码: $EXIT_CODE"
fi

exit $EXIT_CODE

另外启动的时候可以用这个run_browser.sh:

#!/bin/bash
# 小说阅读器浏览器启动脚本
# 用于解决Qt和OpenGL库冲突问题

echo "正在启动小说阅读器浏览器..."

# 确保使用系统的图形库,而不是Python环境中的库
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH

# 移除Python环境中可能冲突的库路径
if [ -n "$CONDA_PREFIX" ]; then
    export LD_LIBRARY_PATH=$(echo $LD_LIBRARY_PATH | tr ':' '\n' | grep -v "$CONDA_PREFIX" | tr '\n' ':')
fi

# 设置Qt平台为xcb(X11)
export QT_QPA_PLATFORM=xcb

# 禁用Qt的xcb日志,减少干扰
export QT_LOGGING_RULES="qt.qpa.*=false"

# 强制使用系统Python3而不是虚拟环境中的Python
PYTHON_CMD=python3

# 清除PYTHONPATH,避免使用虚拟环境中的包
export PYTHONPATH=""

# 使用系统PyQt5启动浏览器
echo "尝试使用系统Python3和系统PyQt5启动..."
$PYTHON_CMD browser.py "$@"

# 如果上面失败了,尝试直接导入浏览器模块功能
if [ $? -ne 0 ]; then
    echo "尝试替代方案..."
    $PYTHON_CMD -c "
import sys
sys.path.insert(0, '.')
try:
    from browser import create_browser_window, get_qapplication
    app = get_qapplication()
    browser = create_browser_window()
    browser.show()
    browser.go_home()
    sys.exit(app.exec_())
except Exception as e:
    print(f'启动失败: {e}')
    "
fi

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐