Skip to content

Repository files navigation

FishCode · 摸鱼看小说

上班摸鱼看小说神器,把小说藏进代码里。

Looks like work. Reads like fiction.

English · 下载离线版 · 在线模式说明 · 测试记录

FishCode:以 SQL 文本数据形式阅读原创演示小说

你在看数据库里的文本字段。

只不过,这个字段里的主角刚刚收到了来自明天的短信。

FishCode 是一个长得像代码编辑器的小说阅读器。 把 TXT、EPUB 或 ZIP 拖进来,章节变成文件,故事变成 SQL 数据、JSON、YAML 或代码里的文本。按下 Esc,整个工作区立刻切回普通代码;再按一次,接着刚才的位置读。

不注册,不上传书籍,不调用 AI。一个 HTML,就是你的随身阅读工作区。

30 秒开始摸鱼

  1. 下载 dist/workspace-reader.html。从 GitHub 文件页使用下载原始文件按钮,或下载整个仓库 ZIP。
  2. 用 Chrome、Edge 或其他现代桌面浏览器打开。
  3. 点左侧导入图标,或直接把书拖进窗口。
  4. 点击文件树切换章节;在阅读设置中选择喜欢的文件视图。
  5. 点击导出,得到包含正文、界面和依赖的独立 HTML。换一台电脑,断网也能打开。

初次打开自带原创短篇演示,不包含第三方小说。代码视图是阅读排版,不是 SQL/Python/C++ 执行环境。

看起来合理,读起来舒服

满屏绿色注释并不总像一个真正的项目。FishCode 默认选择 SQL 文本数据:表结构、事务、插入语句和查询语句包围正文,长文本有了更自然的出现位置。

文件视图 正文如何出现
SQL(默认) documents 表里的文本字段,带建表、事务与查询语句
JSON 文档对象的 paragraphs 数组
YAML 配置里的多行 content 字段
Markdown 带元数据的文档正文
Python 数据类中的多行字符串
Python · 注释混排(可选) 正文放进短注释,与 2–4 行通用示例代码交替
C++ std::string_view 原始字符串
TypeScript 类型友好的文档数据对象

v1.1:想让屏幕里的代码更多?

打开左下角 阅读设置 → 文件视图 → Python · 注释混排(可选),再选择代码密度:

  • 轻量: 每段正文后插入 2 行代码,阅读更连贯。
  • 均衡(推荐): 每段 3 行代码,兼顾代码占比与阅读节奏。
  • 密集: 每段 4 行代码,让代码占据更多画面。

长正文优先在标点附近拆成短注释,保持原文顺序与内容;短代码带语法高亮,正文使用不倾斜的注释色。文件名变为 pipeline_001.py。切换密度或视图会尽量保持当前正文位置,搜索支持跨注释片段的词句,导出的 HTML 会保留所选视图与密度。

默认仍是 SQL,原有视图和纯净正文都保留。混排代码仅作展示,不执行;它改变屏幕外观,不增加系统安全防护,也不保证旁人无法识别正文。

Python 注释混排:均衡档、深色主题

查看浅色主题效果

切换视图时,文件名、扩展名、图标、目录和语言状态一起更新。默认工程名为 content-service,文件名为 fixture_001.sql,不把书名放在浏览器标题里。需要找章节时,可以搜索真实章节名,也可以在设置里显示它们。

  • 阅读优先: 14–26 px 字号、可调行距和栏宽;石墨、深夜、日光三种主题;可切换纯净正文。
  • 编辑器布局: 活动栏、文件树、标签页、面包屑、行号、小地图、状态栏和命令面板。
  • 接着读: 每章独立记住滚动位置,自动恢复上次打开的书,支持一个快捷书签。
  • 一键切换: Esc 显示普通代码,同时关掉搜索、弹窗和输出面板;再按一次恢复。可选失焦自动切换。
  • 本地优先: 本地导入不上传正文,无追踪、无 CDN、无在线字体;可关闭持久保存或清除本机阅读数据。
  • 中英界面: 右下角一键切换,中英文 README 都有。

你可以带来哪些文件?

输入 支持说明
TXT / Markdown 中文“第 X 章”、英文 Chapter、Markdown 标题自动分章
HTML 提取纯文本;兼容旧版 const NOVEL = [...] 阅读器,以及 FishCode 导出的文件
JSON [{"title":"第一章","body":"正文"}],或含 chapters 数组的对象
DOCX 提取普通文档段落,不保留复杂排版
EPUB 按 spine 顺序读取正文;不支持加密 / DRM
ZIP 按自然文件名顺序导入其中的 TXT、MD、HTML、JSON;忽略无关文件

支持 UTF-8、GBK / GB18030 和带 BOM 的 UTF-16。乱码时可手动选择编码。

单次导入上限 20 MB,ZIP 解压声明内容上限 64 MB、2,000 个条目,最多 5,000 个阅读分段。超长、无章节文本会自动拆页。RAR / 7z 请先解压;ZIP 内的嵌套压缩包、DOCX、EPUB 请先取出再导入。大文件仍会占用浏览器内存,不要导入来源不可信的异常压缩包。

不下载小说,也能读吗?

可以通过本地在线模式读取公开的静态正文页:

python3 server.py

Windows 可双击 start-online.bat(需要 Python 3.10+)。打开终端提示的 http://127.0.0.1:8765,在阅读器中粘贴正文页网址。

FishCode 提取当前页,并识别“下一章 / 下一页”链接。点击下一章时,会向原网站请求下一页,转换后加入文件树;已加载的页面可以回看,也可以导出为离线 HTML。它不会一次爬完整本书。

  • 纯静态 / 单 HTML 版只能直连允许 CORS 的页面。大多数网站应使用本地启动器。
  • 支持正文选择器,例如 #chaptercontent,帮助适配不同网站。
  • 不绕过登录、付费、验证码或访问限制;不执行网站脚本,不支持仅由 JavaScript 动态加载的正文。
  • 不保证兼容所有小说网站。找不到下一章时,可以手动输入下一页网址。
  • 本地服务只监听 127.0.0.1,不提供公共代理;限制公共 HTTP(S) 标准端口、响应大小和重定向,并验证目标 IP。

更多细节见 在线模式说明。

快捷键

按键 动作
Esc 切换代码掩护 / 恢复阅读
Alt + ← / → 上一章 / 下一章
Ctrl / ⌘ + B 显示或隐藏文件树
Ctrl / ⌘ + F 当前章节搜索
Ctrl / ⌘ + K 命令面板
Ctrl / ⌘ + + / − 调整字号

开发与测试

阅读器使用原生 HTML / CSS / JavaScript,ZIP 解析使用仓库内附带的 JSZip。运行和构建不需要下载前端依赖。

python3 build.py          # 重新生成 index.html 与 dist/workspace-reader.html
npm run dev              # 可选:Node.js 静态开发预览
npm test                 # Node.js 解析检查 + Python 本地服务测试

浏览器回归测试:运行 npm run dev 后,打开 /tests/browser.html。测试使用原创和合成内容,会清除该测试站点来源下的 FishCode 阅读缓存,请使用独立浏览器测试环境。覆盖文件导入、视图切换、正文搜索、书签、掩护、导出恢复、在线翻页和进度恢复。完整验证记录见 QA。

分享一个小快乐

如果这个小工具戳中了你,欢迎 Star 收藏,也欢迎 Fork 做出自己的文件视图。

最有帮助的反馈:浏览器版本、文件格式、复现步骤,以及一份不含隐私或受限内容的小样例。在线适配问题请提供可公开访问的页面和正文选择器。

边界与许可

这是一层界面伪装,不会隐藏浏览记录、网络请求、屏幕监控或设备管理记录,也不能保证不被旁观者识别。请合理使用,只导入你有权阅读的内容,不用它绕过网站或单位的访问控制。

本项目不属于、也不隶属于 Microsoft / Visual Studio Code。MIT License;JSZip 许可见 vendor/JSZip-LICENSE.md。内置故事为本项目原创演示。

About

上班摸鱼看小说神器:把 TXT、EPUB、ZIP 变成 VS Code 风格阅读器,支持 SQL、JSON、YAML 等多种视图,一键切换、离线阅读。A code-editor-style novel reader.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages