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.
Files changed (47) hide show
  1. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/PKG-INFO +1 -1
  2. plugin_jm_server-0.1.22/src/plugin_jm_server/__init__.py +3 -0
  3. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/app.py +63 -2
  4. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server.egg-info/PKG-INFO +1 -1
  5. plugin_jm_server-0.1.20/src/plugin_jm_server/__init__.py +0 -3
  6. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/README.md +0 -0
  7. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/setup.cfg +0 -0
  8. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/setup.py +0 -0
  9. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/driver.py +0 -0
  10. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/files.py +0 -0
  11. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/css/all.min.css +0 -0
  12. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/css/bootstrap.css +0 -0
  13. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/css/download_error.css +0 -0
  14. {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
  15. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/css/h5/m_index.css +0 -0
  16. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/css/h5/m_login.css +0 -0
  17. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/css/h5/m_upload.css +0 -0
  18. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/css/h5/normalize.css +0 -0
  19. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/css/index.css +0 -0
  20. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/css/login.css +0 -0
  21. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/css/style_photo.css +0 -0
  22. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/css/upload.css +0 -0
  23. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/img/bg.jpg +0 -0
  24. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/img/m_bg.jpeg +0 -0
  25. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/js/common.js +0 -0
  26. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/js/h5/m_index.js +0 -0
  27. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/js/h5/m_upload.js +0 -0
  28. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/js/index.js +0 -0
  29. {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
  30. {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
  31. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/js/upload.js +0 -0
  32. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/webfonts/fa-regular-400.woff2 +0 -0
  33. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/static/webfonts/fa-solid-900.woff2 +0 -0
  34. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/templates/download_error.html +0 -0
  35. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/templates/index.html +0 -0
  36. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/templates/jm_view.html +0 -0
  37. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/templates/login.html +0 -0
  38. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/templates/m_download_error.html +0 -0
  39. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/templates/m_index.html +0 -0
  40. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/templates/m_jm_view.html +0 -0
  41. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/templates/m_login.html +0 -0
  42. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/templates/m_upload.html +0 -0
  43. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server/templates/upload.html +0 -0
  44. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server.egg-info/SOURCES.txt +0 -0
  45. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server.egg-info/dependency_links.txt +0 -0
  46. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server.egg-info/requires.txt +0 -0
  47. {plugin_jm_server-0.1.20 → plugin_jm_server-0.1.22}/src/plugin_jm_server.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: plugin_jm_server
3
- Version: 0.1.20
3
+ Version: 0.1.22
4
4
  Summary: plugin_jm_server, a plugin for jmcomic that can be used to view comics in a web browser.
5
5
  Home-page: https://github.com/hect0x7/plugin-jm-server
6
6
  Author: hect0x7
@@ -0,0 +1,3 @@
1
+ __version__ = '0.1.22'
2
+
3
+ from .app import *
@@ -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
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: plugin_jm_server
3
- Version: 0.1.20
3
+ Version: 0.1.22
4
4
  Summary: plugin_jm_server, a plugin for jmcomic that can be used to view comics in a web browser.
5
5
  Home-page: https://github.com/hect0x7/plugin-jm-server
6
6
  Author: hect0x7
@@ -1,3 +0,0 @@
1
- __version__ = '0.1.20'
2
-
3
- from .app import *