plugin-jm-server


Nameplugin-jm-server JSON
Version 0.1.24 PyPI version JSON
download
home_pagehttps://github.com/hect0x7/plugin-jm-server
Summaryplugin_jm_server, a plugin for jmcomic that can be used to view comics in a web browser.
upload_time2025-08-13 10:08:15
maintainerNone
docs_urlNone
authorhect0x7
requires_python>=3.7
licenseNone
keywords python jmcomic 18comic 禁漫天堂 nsfw
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # plugin-jm-server

“离线版”禁漫天堂

该项目会在本地起一个`文件服务器`,支持用浏览器查看文件夹内的图片,界面模仿禁漫的章节观看页面,并适配手机端。

用浏览器的好处就是支持很多浏览器插件和脚本,例如:

* 双页阅读插件:https://sleazyfork.org/zh-CN/scripts/374903-comicread

#  想法起源

想法起源:https://github.com/hect0x7/JMComic-Crawler-Python/issues/192

基于原项目:https://github.com/AiCorein/Flask-Files-Server

为了方便修改,将原项目中的文件复制到本项目中,然后进行修改


# 可优化点

1. 前端优化。目前项目架构是`前后端不分离架构`,前端使用原始的html三件套。可以优化为前后端分离架构,基于Vue等开发框架,复用组件库,优化界面。

2. 后端优化。支持提供调用jmcomic功能的后端接口。


# 使用方式


## 1. pip安装

```shell
pip install plugin_jm_server
```



## 2. 运行代码

* **HTTP版**

```python
from plugin_jm_server import *

# http
server = JmServer(
    'D:/',
    'password',
)
server.run(
    host='0.0.0.0',
    port=80,
)
```

* **HTTPS版**

```python
from plugin_jm_server import *

# https
server = JmServer(
    'D:/',
    'password',
)
server.run(
    host='0.0.0.0',
    port=443,
    ssl_context='adhoc',
)
```

* 作为jmcomic的插件

```yml
# 配置文件
plugins:
  after_init: 
#  after_album:
    - plugin: jm_server
      kwargs:
        password: ''

```

```python
# 代码
from jmcomic import *

op = create_option('op.yml')
op.download_album(123)
# 运行到这里,虽然主线程代码执行完毕,但程序不会退出,因为服务器线程还没有结束。
# 控制台会输出提示信息如下(atexit时输出的):
# “主线程执行完毕,但插件jm_server的服务器线程仍运行中,可按下ctrl+c结束程序”
# 此时需要你主动按下ctrl+c终止程序。

# python 3.12 特别注意:需要插入下面这行代码,服务器才能继续处理请求
op.wait_all_plugins_finish()
```


# 效果图(文件浏览、整章看图)

## 1. 电脑浏览器访问
![](images/3.png)
![](images/4.png)
![](images/5.png)

## 2. 手机浏览器访问
![](images/1.jpeg)
![](images/2.jpeg)
![](images/7.jpeg)


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/hect0x7/plugin-jm-server",
    "name": "plugin-jm-server",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "python, jmcomic, 18comic, \u7981\u6f2b\u5929\u5802, NSFW",
    "author": "hect0x7",
    "author_email": "93357912+hect0x7@users.noreply.github.com",
    "download_url": "https://files.pythonhosted.org/packages/f3/c7/822c27eb2e9fa1a157d535da02af0e6cd20f20dc16618445a89dae11c0bf/plugin_jm_server-0.1.24.tar.gz",
    "platform": null,
    "description": "# plugin-jm-server\n\n\u201c\u79bb\u7ebf\u7248\u201d\u7981\u6f2b\u5929\u5802\n\n\u8be5\u9879\u76ee\u4f1a\u5728\u672c\u5730\u8d77\u4e00\u4e2a`\u6587\u4ef6\u670d\u52a1\u5668`\uff0c\u652f\u6301\u7528\u6d4f\u89c8\u5668\u67e5\u770b\u6587\u4ef6\u5939\u5185\u7684\u56fe\u7247\uff0c\u754c\u9762\u6a21\u4eff\u7981\u6f2b\u7684\u7ae0\u8282\u89c2\u770b\u9875\u9762\uff0c\u5e76\u9002\u914d\u624b\u673a\u7aef\u3002\n\n\u7528\u6d4f\u89c8\u5668\u7684\u597d\u5904\u5c31\u662f\u652f\u6301\u5f88\u591a\u6d4f\u89c8\u5668\u63d2\u4ef6\u548c\u811a\u672c\uff0c\u4f8b\u5982\uff1a\n\n* \u53cc\u9875\u9605\u8bfb\u63d2\u4ef6\uff1ahttps://sleazyfork.org/zh-CN/scripts/374903-comicread\n\n#  \u60f3\u6cd5\u8d77\u6e90\n\n\u60f3\u6cd5\u8d77\u6e90\uff1ahttps://github.com/hect0x7/JMComic-Crawler-Python/issues/192\n\n\u57fa\u4e8e\u539f\u9879\u76ee\uff1ahttps://github.com/AiCorein/Flask-Files-Server\n\n\u4e3a\u4e86\u65b9\u4fbf\u4fee\u6539\uff0c\u5c06\u539f\u9879\u76ee\u4e2d\u7684\u6587\u4ef6\u590d\u5236\u5230\u672c\u9879\u76ee\u4e2d\uff0c\u7136\u540e\u8fdb\u884c\u4fee\u6539\n\n\n# \u53ef\u4f18\u5316\u70b9\n\n1. \u524d\u7aef\u4f18\u5316\u3002\u76ee\u524d\u9879\u76ee\u67b6\u6784\u662f`\u524d\u540e\u7aef\u4e0d\u5206\u79bb\u67b6\u6784`\uff0c\u524d\u7aef\u4f7f\u7528\u539f\u59cb\u7684html\u4e09\u4ef6\u5957\u3002\u53ef\u4ee5\u4f18\u5316\u4e3a\u524d\u540e\u7aef\u5206\u79bb\u67b6\u6784\uff0c\u57fa\u4e8eVue\u7b49\u5f00\u53d1\u6846\u67b6\uff0c\u590d\u7528\u7ec4\u4ef6\u5e93\uff0c\u4f18\u5316\u754c\u9762\u3002\n\n2. \u540e\u7aef\u4f18\u5316\u3002\u652f\u6301\u63d0\u4f9b\u8c03\u7528jmcomic\u529f\u80fd\u7684\u540e\u7aef\u63a5\u53e3\u3002\n\n\n# \u4f7f\u7528\u65b9\u5f0f\n\n\n## 1. pip\u5b89\u88c5\n\n```shell\npip install plugin_jm_server\n```\n\n\n\n## 2. \u8fd0\u884c\u4ee3\u7801\n\n* **HTTP\u7248**\n\n```python\nfrom plugin_jm_server import *\n\n# http\nserver = JmServer(\n    'D:/',\n    'password',\n)\nserver.run(\n    host='0.0.0.0',\n    port=80,\n)\n```\n\n* **HTTPS\u7248**\n\n```python\nfrom plugin_jm_server import *\n\n# https\nserver = JmServer(\n    'D:/',\n    'password',\n)\nserver.run(\n    host='0.0.0.0',\n    port=443,\n    ssl_context='adhoc',\n)\n```\n\n* \u4f5c\u4e3ajmcomic\u7684\u63d2\u4ef6\n\n```yml\n# \u914d\u7f6e\u6587\u4ef6\nplugins:\n  after_init: \n#  after_album:\n    - plugin: jm_server\n      kwargs:\n        password: ''\n\n```\n\n```python\n# \u4ee3\u7801\nfrom jmcomic import *\n\nop = create_option('op.yml')\nop.download_album(123)\n# \u8fd0\u884c\u5230\u8fd9\u91cc\uff0c\u867d\u7136\u4e3b\u7ebf\u7a0b\u4ee3\u7801\u6267\u884c\u5b8c\u6bd5\uff0c\u4f46\u7a0b\u5e8f\u4e0d\u4f1a\u9000\u51fa\uff0c\u56e0\u4e3a\u670d\u52a1\u5668\u7ebf\u7a0b\u8fd8\u6ca1\u6709\u7ed3\u675f\u3002\n# \u63a7\u5236\u53f0\u4f1a\u8f93\u51fa\u63d0\u793a\u4fe1\u606f\u5982\u4e0b\uff08atexit\u65f6\u8f93\u51fa\u7684\uff09\uff1a\n# \u201c\u4e3b\u7ebf\u7a0b\u6267\u884c\u5b8c\u6bd5\uff0c\u4f46\u63d2\u4ef6jm_server\u7684\u670d\u52a1\u5668\u7ebf\u7a0b\u4ecd\u8fd0\u884c\u4e2d\uff0c\u53ef\u6309\u4e0bctrl+c\u7ed3\u675f\u7a0b\u5e8f\u201d\n# \u6b64\u65f6\u9700\u8981\u4f60\u4e3b\u52a8\u6309\u4e0bctrl+c\u7ec8\u6b62\u7a0b\u5e8f\u3002\n\n# python 3.12 \u7279\u522b\u6ce8\u610f\uff1a\u9700\u8981\u63d2\u5165\u4e0b\u9762\u8fd9\u884c\u4ee3\u7801\uff0c\u670d\u52a1\u5668\u624d\u80fd\u7ee7\u7eed\u5904\u7406\u8bf7\u6c42\nop.wait_all_plugins_finish()\n```\n\n\n# \u6548\u679c\u56fe\uff08\u6587\u4ef6\u6d4f\u89c8\u3001\u6574\u7ae0\u770b\u56fe\uff09\n\n## 1. \u7535\u8111\u6d4f\u89c8\u5668\u8bbf\u95ee\n![](images/3.png)\n![](images/4.png)\n![](images/5.png)\n\n## 2. \u624b\u673a\u6d4f\u89c8\u5668\u8bbf\u95ee\n![](images/1.jpeg)\n![](images/2.jpeg)\n![](images/7.jpeg)\n\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "plugin_jm_server, a plugin for jmcomic that can be used to view comics in a web browser.",
    "version": "0.1.24",
    "project_urls": {
        "Homepage": "https://github.com/hect0x7/plugin-jm-server"
    },
    "split_keywords": [
        "python",
        " jmcomic",
        " 18comic",
        " \u7981\u6f2b\u5929\u5802",
        " nsfw"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "763e46d3001425b26168fe3d18c16a89d0cd1923cdccd6751e1a022103346809",
                "md5": "9a9d4b6a9c9ae15ebc55bab6ca7e8e10",
                "sha256": "8154983af36064e95e4729077d91d5bd0ca4a313aa08e698cc66917938e67f43"
            },
            "downloads": -1,
            "filename": "plugin_jm_server-0.1.24-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "9a9d4b6a9c9ae15ebc55bab6ca7e8e10",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 805896,
            "upload_time": "2025-08-13T10:08:13",
            "upload_time_iso_8601": "2025-08-13T10:08:13.940942Z",
            "url": "https://files.pythonhosted.org/packages/76/3e/46d3001425b26168fe3d18c16a89d0cd1923cdccd6751e1a022103346809/plugin_jm_server-0.1.24-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f3c7822c27eb2e9fa1a157d535da02af0e6cd20f20dc16618445a89dae11c0bf",
                "md5": "ebd182c041f03762f7ef77f849ac48ee",
                "sha256": "0b5c5b8179fd16bcadbe6c7cd6285d84e0d82e897db588f81dd04656ece69d11"
            },
            "downloads": -1,
            "filename": "plugin_jm_server-0.1.24.tar.gz",
            "has_sig": false,
            "md5_digest": "ebd182c041f03762f7ef77f849ac48ee",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 795266,
            "upload_time": "2025-08-13T10:08:15",
            "upload_time_iso_8601": "2025-08-13T10:08:15.612387Z",
            "url": "https://files.pythonhosted.org/packages/f3/c7/822c27eb2e9fa1a157d535da02af0e6cd20f20dc16618445a89dae11c0bf/plugin_jm_server-0.1.24.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-13 10:08:15",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "hect0x7",
    "github_project": "plugin-jm-server",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "plugin-jm-server"
}
        
Elapsed time: 2.16221s