该项目会在你的电脑上启动一个本地文件服务器。你可以直接在浏览器(手机或电脑)中打开它,它会把本地文件夹里的图片转换成类似“禁漫天堂”的章节观看页面。
核心优势:
- 原生支持连续下拉、单页翻页、无缝双页三种阅读模式,无需额外安装阅读插件。
- 仍可配合各种浏览器插件和用户脚本,继续扩展个性化阅读能力。
- 一键开启局域网共享,电脑下载,躺在床上用手机看。
从 v0.2.4 起,本项目正式更名为
jm-view-server,原名plugin-jm-server,安装了旧包的老用户请参考文末的 老用户迁移指南 进行升级。
🗂️ v0.3.1 文件管理体验升级
这次更新把文件浏览、管理操作和设置中心进一步整合,让大型本地漫画库更容易查找和维护:
- Finder 分栏浏览:最多同时展示四层目录,继续深入时自动向左推进;刷新后按当前路径恢复目录链,窄屏自动切换为单列导航。
- 操作入口可控:分栏每行使用紧凑的
⋯菜单,并可在首页或设置页统一隐藏;偏好会在多个浏览器标签页之间同步。 - 批量操作更顺手:多选模式下点击列表行或网格卡片的普通区域即可选择,链接、按钮和管理操作仍保持优先。
- 文件管理更一致:删除已浏览到的共享根外普通文件时保留盘符根、默认共享根和系统目录安全护栏;上传始终使用页面明确展示的目标目录。
- 设置页不再跳动:阅读开关、主题、范围控件和侧栏操作均保持当前内容锚点,分类菜单与移动端动态视口不会把页面滚出 App Shell。
📖 v0.3.0 阅读器大升级
这次更新把原本以连续下拉为主的看本页面,升级成了一套完整的本地漫画阅读器:
| 阅读模式 | 适合场景 | 主要能力 |
|---|---|---|
| 连续下拉 | 条漫、快速浏览 | 顺滑滚动、懒加载、阅读进度记忆 |
| 单页 | 传统漫画、键盘操作 | 左右点击翻页、方向键 / PageUp / PageDown / 空格翻页、适应窗口或自定义尺寸 |
| 双页 | 横屏桌面阅读 | 纵图自动成对、横图自动跨页、左右与上下无缝衔接、支持从左到右或从右到左 |
- 双页画面比例:可在
50%–100%之间调整画面占比,在满屏冲击力和舒适留白之间自由选择。 - 独立设置中心:进入漫画前即可配置默认阅读模式、图片尺寸、阅读方向、主题、侧栏、消息昵称等浏览器偏好。
- 更顺手的工具栏:桌面端可固定展开,也可恢复悬停自动收起;移动端使用轻量抽屉,避免遮挡画面。
- 阅读辅助完善:缩略图总览、跳页、护眼、进度记忆、首次使用引导、快捷键表和长按旋转菜单全部内置。
- 滚动更容易抓取:桌面滚动条更宽、更醒目;拖动滑块时显示实时阅读百分比,普通滚动时保持画面纯净。
(电脑端:无缝双页模式、快捷工具栏与阅读进度)
🌟 效果展示
1. 文件夹管理
- 快捷查找:支持列表、网格和 Finder 分栏三种布局;列表与网格可通过文件夹封面快速识别内容,分栏适合连续深入多层目录。
- 书签直达:一键将常看的目录收纳至侧边栏书签,下次打开无需一层层寻找。
- 日夜间模式:内置深浅双色主题,自动记住你的偏好,夜间使用不刺眼。
Finder 分栏浏览:桌面端最多同时显示四层目录,继续深入时会将较早的列向左推进;移动端自动切换为更适合触控的单列导航。刷新页面后,会根据当前路径恢复最近四列目录,并重新选中对应的父级条目,方便从原位置继续浏览。
| 分栏能力 | 使用说明 |
|---|---|
| 紧凑操作菜单 | 每行只保留一个 ⋯ 入口,按文件类型显示进入、下载、看本、打包、重命名、移动、定位和删除等操作。 |
| 操作入口开关 | 视图切换旁的“操作”开关可隐藏每行入口,为文件名释放更多空间;默认开启并自动记忆,也可在设置页修改,多个标签页会同步更新。 |
| 键盘与触控 | 支持方向键、Enter 等键盘导航;移动端使用单列布局,返回和操作入口保留至少 44px 的触控区域。 |
| 快捷方式处理 | 点击快捷方式时进入它指向的目标位置,但重命名、移动和删除等管理操作始终作用于快捷方式本体。 |
(电脑端:Finder 分栏视图)
(电脑端:列表视图)
(电脑端:网格视图)
(手机端:文件夹列表)
2. 看本模式(模仿JM章节阅读页面)
- 进度无缝接续:自动记住上次读到了哪一页,下次点开时会直接提示,一键接着看。
- 三种阅读方式:连续下拉、单页翻页和无缝双页随时切换,并可在设置中心选择默认模式。
- 操作顺手:单页模式在电脑端支持键盘快捷键和左右点击画面翻页,连续下拉与双页模式保持自然滚动;手机端则专门优化了触屏排版和单手操作,还能随时切换暖色护眼模式。
- 看大长篇也不卡:智能分段加载图片,几十甚至上百张大图的章节也能顺畅向下滑动,无需等待全部下载完毕。
(电脑端:看本模式)
(手机端:看本模式)
3. 其他功能
- 隐私防护:怕被同路由器的室友或家人看到?开启登录密码,或者只允许特定的设备 IP 访问。
- 多端互动:不仅可以直接把文件拖进网页传到电脑里,还能在内置的“消息中心”和其他连入的设备互相发文字消息。
(登录密码验证)
(局域网消息界面)
🚀 小白快速上手指南
如果你不懂编程,请严格按照以下两步操作即可:
第一步:环境准备
本项目基于 Python 开发,因此你的电脑必须先安装 Python。
- 请前往 Python 官网 下载并安装最新版 Python(安装时请务必勾选
Add Python to PATH)。
第二步:一键安装与启动
打开你电脑的命令行终端,复制并执行对应的命令:
- Windows (PowerShell):
pip install jm-view-server ; jms
- macOS / Linux:
pip3 install jm-view-server && jms
提示:这行命令会帮你自动下载安装必要的组件,并以默认配置启动服务器。如果提示 80 端口无权限,可以参考下方进阶参数指定高位端口(如
-p 8080)。
启动成功后怎么用? 终端里会打印出两行地址,例如:
- 本机访问:
http://127.0.0.1:80 - 局域网访问:
http://192.168.1.100:80
你只需要在电脑的浏览器里打开第一个地址,或者在连着同一个 WiFi 的手机浏览器里打开第二个地址,就可以开始看漫画了!
提示:如果在终端没看清局域网地址也没关系,当你用电脑打开本机地址后,网页的主页顶部也会直接显示并智能识别当前的局域网地址,你可以一键复制发给手机直接访问。
⚙️ 进阶使用(针对有经验的用户)
安装后系统会注册 jms 命令,无需写代码即可通过丰富的参数进行个性化启动:
# 共享指定目录 ~/comics,并使用 8080 端口(高位端口无需管理员权限)
jms ~/comics -p 8080
# 设置登录密码为 123,并启用 HTTPS
jms ~/comics -P 123 -s
# 仅允许指定 IP 的设备访问
jms ~/comics --ip-whitelist 192.168.1.10,192.168.1.11
# 加载 jmcomic 配置开启在线下载
jms ~/comics -o op.yml
全部参数说明(可通过 jms -h 查看):
| 参数 | 说明 | 默认值 |
|---|---|---|
path |
要共享的根目录(位置参数) | 当前目录 |
-P, --password |
登录密码,空表示免密 | 空 |
-H, --host |
监听地址 | 0.0.0.0 |
-p, --port |
监听端口 | 80 |
-s, --ssl |
启用 HTTPS(adhoc 自签名) | 关闭 |
-o, --option |
jmcomic 配置文件路径,开启在线下载 | 无 |
--ip-whitelist |
IP 白名单,逗号分隔 | 不限制 |
--current-path |
初始当前路径 | 同 path |
-e, --env |
设置环境变量 KEY=VALUE,可重复 |
无 |
--debug |
开启 Flask debug 模式 | 关闭 |
注:如果你在 Linux/macOS 上启动报错没有权限,是因为绑定默认的 80 端口需要管理员权限。建议加上
-p 8080参数改用其他端口。
👨💻 开发者专属区域
如果你想在自己的 Python 脚本中集成或二次开发该服务,可以通过代码进行调用。
1. HTTP / HTTPS 原生调用
from jm_view_server import *
# 启动 HTTP 服务
server = JmServer('D:/', 'password')
server.run(host='0.0.0.0', port=80)
# 启动 HTTPS 服务 (需要安装 cryptography)
server.run(host='0.0.0.0', port=443, ssl_context='adhoc')
2. 作为 jmcomic 的插件集成
你可以在 jmcomic 的 op.yml 配置文件中配置它:
plugins:
after_init:
- plugin: jm_server
kwargs:
password: ''
对应的启动脚本注意事项:
from jmcomic import *
op = create_option('op.yml')
op.download_album(123)
# 注意:虽然爬虫主线程执行完毕,但 Web 服务器线程仍在运行中。
# 需要用户手动按 Ctrl+C 退出。
# Python 3.12+ 特别注意:必须插入下面这行代码,Web 服务器才能继续处理请求!
op.wait_all_plugins_finish()
老用户迁移指南
原名 plugin-jm-server 里的 plugin- 前缀会让人误以为它必须搭配 jmcomic 才能用。其实它首先是一个可独立运行的本地看本服务器,jmcomic 插件只是附加能力,因此更名为 jm-view-server。
老用户迁移 —— 一行搞定:
pip uninstall -y plugin_jm_server && pip install jm-view-server
命令行 jms 和 jmcomic 插件 key jm_server 都不变;脚本里把 import plugin_jm_server 换成 import jm_view_server 即可(不换也行,旧包名仍能用)。
旧包
plugin_jm_server仍保留在 PyPI 上做重定向薄壳:安装它会自动带上jm-view-server,旧的import和jms命令继续可用,仅在导入时打印一条弃用提示。建议尽快迁移到新包名。
💡 想法起源
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jm_view_server-0.3.1.tar.gz.
File metadata
- Download URL: jm_view_server-0.3.1.tar.gz
- Upload date:
- Size: 5.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
72176c8e12d575f3b76e81c1c739c97777ad76f1f3994938451b75b1a29bd418
|
|
| MD5 |
d8d61387d9b2fd9bd5519482d1028989
|
|
| BLAKE2b-256 |
9eec9164d3eb101aeb22db5178d7a600c0ecbabc085622b98ea6f42851cd8e97
|
Provenance
The following attestation bundles were made for jm_view_server-0.3.1.tar.gz:
Publisher:
release_auto.yml on hect0x7/jm-view-server
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
jm_view_server-0.3.1.tar.gz -
Subject digest:
72176c8e12d575f3b76e81c1c739c97777ad76f1f3994938451b75b1a29bd418 - Sigstore transparency entry: 2364475249
- Sigstore integration time:
-
Permalink:
hect0x7/jm-view-server@230327ad3e7ec29d4162ffabc2afaae1be3a677c -
Branch / Tag:
refs/heads/master - Owner: https://github.com/hect0x7
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release_auto.yml@230327ad3e7ec29d4162ffabc2afaae1be3a677c -
Trigger Event:
push
-
Statement type:
File details
Details for the file jm_view_server-0.3.1-py3-none-any.whl.
File metadata
- Download URL: jm_view_server-0.3.1-py3-none-any.whl
- Upload date:
- Size: 306.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bbd4c980f26da551107b8b26996cdac46616db431aa59c2fd5b31b0756c23459
|
|
| MD5 |
7a32b5849bd49fb501f10d360590a164
|
|
| BLAKE2b-256 |
9dcb238208ab1467c116fc0da9de4c7542953fdf03cce6f6b39a5fa65a18f7d6
|
Provenance
The following attestation bundles were made for jm_view_server-0.3.1-py3-none-any.whl:
Publisher:
release_auto.yml on hect0x7/jm-view-server
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
jm_view_server-0.3.1-py3-none-any.whl -
Subject digest:
bbd4c980f26da551107b8b26996cdac46616db431aa59c2fd5b31b0756c23459 - Sigstore transparency entry: 2364475328
- Sigstore integration time:
-
Permalink:
hect0x7/jm-view-server@230327ad3e7ec29d4162ffabc2afaae1be3a677c -
Branch / Tag:
refs/heads/master - Owner: https://github.com/hect0x7
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release_auto.yml@230327ad3e7ec29d4162ffabc2afaae1be3a677c -
Trigger Event:
push
-
Statement type: