plugin-jm-server 0.1.20__tar.gz → 0.1.22__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/PKG-INFO +1 -1
- plugin_jm_server-0.1.22/src/plugin_jm_server/__init__.py +3 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/app.py +63 -2
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server.egg-info/PKG-INFO +1 -1
- plugin_jm_server-0.1.20/src/plugin_jm_server/__init__.py +0 -3
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/README.md +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/setup.cfg +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/setup.py +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/driver.py +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/files.py +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/css/all.min.css +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/css/bootstrap.css +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/css/download_error.css +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/css/h5/m_download_error.css +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/css/h5/m_index.css +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/css/h5/m_login.css +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/css/h5/m_upload.css +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/css/h5/normalize.css +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/css/index.css +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/css/login.css +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/css/style_photo.css +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/css/upload.css +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/img/bg.jpg +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/img/m_bg.jpeg +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/js/common.js +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/js/h5/m_index.js +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/js/h5/m_upload.js +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/js/index.js +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/js/jquery-3.7.1.min.js +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/js/jquery.album-0.2.js +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/js/upload.js +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/webfonts/fa-regular-400.woff2 +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/webfonts/fa-solid-900.woff2 +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/templates/download_error.html +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/templates/index.html +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/templates/jm_view.html +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/templates/login.html +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/templates/m_download_error.html +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/templates/m_index.html +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/templates/m_jm_view.html +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/templates/m_login.html +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/templates/m_upload.html +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/templates/upload.html +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server.egg-info/SOURCES.txt +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server.egg-info/dependency_links.txt +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server.egg-info/requires.txt +0 -0
- {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server.egg-info/top_level.txt +0 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import threading
|
|
1
2
|
from urllib.parse import quote
|
|
2
3
|
from html import unescape
|
|
3
4
|
import os
|
|
@@ -5,7 +6,7 @@ import re
|
|
|
5
6
|
from typing import Optional
|
|
6
7
|
|
|
7
8
|
import common
|
|
8
|
-
from flask import Flask, abort
|
|
9
|
+
from flask import Flask, abort, Response, stream_with_context
|
|
9
10
|
from flask import render_template, send_from_directory
|
|
10
11
|
from flask import request, session, redirect, flash
|
|
11
12
|
|
|
@@ -21,6 +22,7 @@ class JmServer:
|
|
|
21
22
|
def __init__(self,
|
|
22
23
|
default_path,
|
|
23
24
|
password,
|
|
25
|
+
jm_option=None,
|
|
24
26
|
ip_whitelist=None,
|
|
25
27
|
current_path=None,
|
|
26
28
|
img_overwrite: Optional[dict] = None,
|
|
@@ -52,6 +54,20 @@ class JmServer:
|
|
|
52
54
|
self.file_manager = FileManager(default_path, current_path)
|
|
53
55
|
self.extra = extra
|
|
54
56
|
self.ip_whitelist = ip_whitelist
|
|
57
|
+
self.jm_option = jm_option
|
|
58
|
+
if jm_option is not None:
|
|
59
|
+
import queue
|
|
60
|
+
self.jm_log_msg_queue = queue.Queue()
|
|
61
|
+
self.__hook_jm_logging()
|
|
62
|
+
|
|
63
|
+
def __hook_jm_logging(self):
|
|
64
|
+
import jmcomic
|
|
65
|
+
def executor_log(topic: str, msg: str):
|
|
66
|
+
from common import format_ts, current_thread
|
|
67
|
+
msg = '[{}] [{}]:【{}】{}\n'.format(format_ts(), current_thread().name, topic, msg)
|
|
68
|
+
self.jm_log_msg_queue.put(msg)
|
|
69
|
+
|
|
70
|
+
jmcomic.JmModuleConfig.EXECUTOR_LOG = executor_log
|
|
55
71
|
|
|
56
72
|
def verify(self):
|
|
57
73
|
ip_whitelist = self.ip_whitelist
|
|
@@ -253,6 +269,51 @@ class JmServer:
|
|
|
253
269
|
else:
|
|
254
270
|
return redirect('/login')
|
|
255
271
|
|
|
272
|
+
def stream(self):
|
|
273
|
+
album_id = request.args.get('id', None)
|
|
274
|
+
end = f'-- END [{album_id}] --'
|
|
275
|
+
|
|
276
|
+
# 开线程调用download_album
|
|
277
|
+
threading.Thread(target=self.invoke_jmcomic_download_album, args=(album_id, end)).start()
|
|
278
|
+
|
|
279
|
+
@stream_with_context
|
|
280
|
+
def yield_download_msg():
|
|
281
|
+
while True:
|
|
282
|
+
msg = self.jm_log_msg_queue.get()
|
|
283
|
+
if msg == end:
|
|
284
|
+
break
|
|
285
|
+
yield msg
|
|
286
|
+
|
|
287
|
+
# noinspection PyCallingNonCallable
|
|
288
|
+
return Response(yield_download_msg(), mimetype="text/event-stream", headers={
|
|
289
|
+
'Content-Type': 'text/event-stream',
|
|
290
|
+
'Cache-Control': 'no-cache',
|
|
291
|
+
'X-Accel-Buffering': 'no',
|
|
292
|
+
'Connection': 'keep-alive'
|
|
293
|
+
})
|
|
294
|
+
|
|
295
|
+
def invoke_jmcomic_download_album(self, album_id, end):
|
|
296
|
+
try:
|
|
297
|
+
import jmcomic
|
|
298
|
+
except ImportError:
|
|
299
|
+
self.jm_log_msg_queue.put('未安装 jmcomic')
|
|
300
|
+
self.jm_log_msg_queue.put(end)
|
|
301
|
+
return
|
|
302
|
+
|
|
303
|
+
try:
|
|
304
|
+
|
|
305
|
+
if self.jm_option is None:
|
|
306
|
+
self.jm_log_msg_queue.put('未配置option,使用默认值 (jmcomic.JmOption.default())')
|
|
307
|
+
op = jmcomic.JmOption.default()
|
|
308
|
+
else:
|
|
309
|
+
op = self.jm_option
|
|
310
|
+
|
|
311
|
+
op.download_album(album_id)
|
|
312
|
+
except Exception as e:
|
|
313
|
+
self.jm_log_msg_queue.put(f'下载失败: {e}')
|
|
314
|
+
finally:
|
|
315
|
+
self.jm_log_msg_queue.put(end)
|
|
316
|
+
|
|
256
317
|
def run(self, **kwargs):
|
|
257
318
|
kwargs.setdefault('port', self.DEFAULT_PORT)
|
|
258
319
|
# 添加路由
|
|
@@ -263,7 +324,7 @@ class JmServer:
|
|
|
263
324
|
self.app.add_url_rule('/logout', 'logout', self.logout, methods=['GET', 'POST'])
|
|
264
325
|
self.app.add_url_rule("/download_file/<filename>", 'file_content', self.file_content)
|
|
265
326
|
self.app.add_url_rule("/upload_file", 'upload', self.upload, methods=['GET', 'POST'])
|
|
266
|
-
|
|
327
|
+
self.app.add_url_rule("/stream", 'stream', self.stream, methods=['GET', 'POST'])
|
|
267
328
|
# 监听在所有 IP 地址上
|
|
268
329
|
self.app.run(**kwargs)
|
|
269
330
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/css/all.min.css
RENAMED
|
File without changes
|
{plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/css/bootstrap.css
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/css/h5/m_index.css
RENAMED
|
File without changes
|
{plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/css/h5/m_login.css
RENAMED
|
File without changes
|
{plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/css/h5/m_upload.css
RENAMED
|
File without changes
|
{plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/css/h5/normalize.css
RENAMED
|
File without changes
|
{plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/css/index.css
RENAMED
|
File without changes
|
{plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/css/login.css
RENAMED
|
File without changes
|
{plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/css/style_photo.css
RENAMED
|
File without changes
|
{plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/css/upload.css
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/img/m_bg.jpeg
RENAMED
|
File without changes
|
{plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/js/common.js
RENAMED
|
File without changes
|
{plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/js/h5/m_index.js
RENAMED
|
File without changes
|
{plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/js/h5/m_upload.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/js/upload.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/templates/index.html
RENAMED
|
File without changes
|
{plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/templates/jm_view.html
RENAMED
|
File without changes
|
{plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/templates/login.html
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/templates/m_index.html
RENAMED
|
File without changes
|
{plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/templates/m_jm_view.html
RENAMED
|
File without changes
|
{plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/templates/m_login.html
RENAMED
|
File without changes
|
{plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/templates/m_upload.html
RENAMED
|
File without changes
|
{plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/templates/upload.html
RENAMED
|
File without changes
|
{plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server.egg-info/requires.txt
RENAMED
|
File without changes
|
{plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server.egg-info/top_level.txt
RENAMED
|
File without changes
|