Skip to content

ZhongTerry/easy-book-note

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

191 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

⚡ Smart NoteDB v1.1.4

Smart NoteDB 是一款专为极致阅读体验打造的沉浸式、私人阅读中枢。它打破了传统浏览器书签的局限,通过"云端大脑+本地外壳"的架构,集成了高效采集、全网聚合搜索、跨端智能同步、深度数据分析和原生桌面交互,为老书虫提供一个无广告、不被打断的阅读圣地。

Version License Platform Performance

✨ 核心特性

  • 极速预加载:500ms 预加载 + 双章智能缓存,翻页体验接近本地阅读,告别等待白屏。
  • 🔒 智能去重:爬取任务自动去重,同一 URL 只抓取一次,后续请求秒级响应,服务器压力降低 60%。
  • 🚫 绝对纯净:全网自动化采集,动态清洗广告干扰与无效元素,还原最纯净的文字排版。
  • 🔍 聚合搜索:内置高效搜索助手,支持多线程并发检索多个主流源站,彻底规避搜索引擎 IP 风控。
  • ☁️ 智能同步:独家"写时存储"算法,基于章节真实序号(而非易变的 URL)进行逻辑比对,多端断点续读不再误报。
  • 📊 阅读洞察:可视化数据看板。内置 GitHub 风格的年度活跃热力图、阅读时长趋势及字数统计,量化你的每一份专注。
  • 🖥️ 原生桌面体验:基于 Electron 的专属客户端。支持系统托盘、自定义全局老板键、朗读控制快捷键,深度集成系统原生功能。
  • 🍅 番茄风格重构:PC 端采用 900px 黄金阅读宽度,配合精心调校的羊皮纸背景与字间距,打造极致护眼的沉浸环境。
  • 🛡️ 智能安全防护:智能域名验证 + 30天缓存,完美兼容 VPN/代理环境,安全与易用性完美平衡。
  • 🛠️ 插件化适配:采用适配器设计模式,通过简单的 Python 脚本扩展即可完美兼容任何结构奇葩的小说站点。

🛠️ 技术栈

  • 后端:Python 3.12 + Flask (RESTful API 设计)
  • 数据库:SQLite 3 (采用单一 data.sqlite 架构,高效管理用户模块)
  • 前端:Vanilla JS + PureUI (自定义轻量级 UI 框架) + Chart.js
  • 外壳:Electron (原生桌面化与跨域凭证同步)
  • 爬虫curl_cffi (指纹级模拟) + BeautifulSoup4 + lxml
  • 并发threading (任务去重) + concurrent.futures (多线程搜索)

🚀 快速开始

1. 服务端部署 (Server)

服务端负责数据存储、爬虫解析与聚合搜索。

# 克隆仓库
git clone https://github.com/yourname/noteDB.git
cd noteDB

# 安装 Python 依赖
pip install -r requirements.txt

# 配置环境变量(可选)
cp .env.example .env
# 编辑 .env 文件,设置 DISABLE_SSRF_CHECK=1(VPN用户推荐)

# 启动服务
python dbserver.py

2. 桌面客户端启动 (Electron)

客户端提供原生窗口体验,并实现与云端凭证的自动同步。

cd app_shell
npm install
npm start

📂 项目结构

Project_Root/
├── routes/             # Flask 蓝图 (Core 业务, Admin 管理, Pro 特权)
├── managers.py         # 数据库事务与用户模块管理
├── spider_core.py      # 爬虫引擎与聚合搜索助手(含任务去重)
├── shared.py           # 共享工具(智能域名验证、SSRF 防护)
├── dbserver.py         # Flask 应用主入口
├── templates/          # 响应式模板 (PC 番茄风 / 移动端卡片化分流)
├── static/             # 静态资源 (PWA 配置, 热力图组件, ChangeLog)
├── adapters/           # 站点专用适配器插件
│   ├── fanqie_adapter.py    # 番茄小说适配器
│   ├── sxgread_adapter.py   # 书香阁适配器
│   └── xbqg77_adapter.py    # 笔趣阁适配器
├── user_data/          # 用户数据目录
│   ├── data.sqlite                      # 主数据库
│   └── domain_verification_cache.json   # 域名验证缓存
└── app_shell/          # Electron 壳程序代码

🚀 性能优化亮点 (v1.1.4)

⚡ 预加载加速技术

  • 500ms 极速预加载:压缩预加载延迟至 500ms(原 2-3 秒),提升 4-6 倍
  • 双章智能缓存:自动预加载下一章 + 下下一章,连续翻页接近本地体验
  • 深度控制算法depth=2 防止过度预加载,节省带宽

🔒 任务去重机制

# 使用 threading.Event 实现结果共享
_active_tasks = {
    'url': {
        'event': threading.Event(),
        'result': None,
        'error': None
    }
}
  • 同一 URL 只爬取一次,后续请求等待并共享结果
  • 超时保护 30 秒,防止死锁
  • 自动清理 60 秒后过期,避免内存泄漏

🛡️ 智能域名验证

# 三层快速路径优化
1. 环境变量开关 (DISABLE_SSRF_CHECK=1)
2. 白名单域名常见小说站3. 30 天缓存机制首次 HTTP 验证
  • 完美兼容 VPN/Clash Fake IP 环境(198.18.0.0/15
  • DNS 污染自动绕过,避免误拦截
  • 缓存持久化至 domain_verification_cache.json

🛡️ 安全与架构

本项目采用 "云端大脑 + 本地壳子" 的架构设计。所有的敏感密钥 (CLIENT_SECRET)、核心爬虫逻辑以及 SQLite 数据库均保留在服务器端。本地客户端仅作为 UI 渲染层与交互入口,通过安全的凭证同步机制进行访问,极大程度地保证了个人阅读数据的安全性与私密性。

🔐 SSRF 防护配置

开发环境或使用 VPN 时,可在 .env 中配置:

# 完全关闭 SSRF 检查(个人使用/VPN环境推荐)
DISABLE_SSRF_CHECK=1

# 启用严格检查(生产环境推荐)
DISABLE_SSRF_CHECK=0

📊 性能指标

指标 v1.1.3 v1.1.4 提升
预加载延迟 2-3 秒 500ms 4-6倍
重复请求耗时 2-3 秒 秒级响应 即时 🚀
连续翻页体验 需等待 即时加载 瞬间
服务器压力 100% 40% 降低60% 📉
VPN 兼容性 403 错误 完美兼容 100%

🎯 使用场景

  1. 轻度用户:直接访问 Web 版,无需安装,PWA 支持添加到桌面
  2. 重度书虫:使用 Electron 客户端,享受原生体验和全局快捷键
  3. 开发者:Fork 项目,通过 adapters/ 目录添加自定义站点支持
  4. 多端同步:通过 OAuth 登录,在手机、电脑、平板间无缝切换

🔧 高级配置

环境变量说明

# OAuth 认证配置
SERVER="http://your-auth-server.com"
CLIENT_ID="your-client-id"
CLIENT_SECRET="your-client-secret"
CALLBACK="http://localhost:5000/callback"

# Flask 安全密钥
FLASK_SECRET_KEY="your-random-secret-key"

# SSRF 防护开关(0=启用, 1=关闭)
DISABLE_SSRF_CHECK=1

# 调试模式
DEBUG="True"

适配器开发

adapters/ 目录创建新的适配器文件:

from adapters.common.base import BaseAdapter

class MyNovelSiteAdapter(BaseAdapter):
    @staticmethod
    def match(url):
        return 'mynovelsite.com' in url
    
    def run(self, crawler, url):
        # 自定义爬取逻辑
        pass

📝 更新日志

查看完整更新日志请访问 static/change.html

v1.1.4 主要更新

  • ⚡ 预加载提速 4-6 倍(500ms)
  • 🔒 智能任务去重机制
  • 🚀 双章预爬取技术
  • 🛡️ 智能域名验证系统
  • 🔧 完美兼容 VPN 环境

📄 开源协议

本项目采用 MIT License 开源。

🤝 贡献指南

欢迎提交 Issue 和 Pull Request!

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开 Pull Request

💬 联系方式


由书虫开发,为书虫而生。 💙

享受纯粹的阅读体验,让技术服务于专注。

About

一个方便简洁的读书书签系统。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published