From 005b78f350d785517e139566136d0f22123a6aaf Mon Sep 17 00:00:00 2001 From: morpheus65535 <5130500+morpheus65535@users.noreply.github.com> Date: Thu, 29 Nov 2018 21:24:48 -0500 Subject: [PATCH 01/13] Initial commit --- bazarr/logger.py | 1 + bazarr/main.py | 25 +++++++++++++++++++++---- views/menu.tpl | 7 +++++++ 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/bazarr/logger.py b/bazarr/logger.py index 22a4f7b8a..3f540df72 100644 --- a/bazarr/logger.py +++ b/bazarr/logger.py @@ -78,6 +78,7 @@ def configure_logging(debug=False): logging.getLogger("guessit").setLevel(logging.WARNING) logging.getLogger("rebulk").setLevel(logging.WARNING) logging.getLogger("stevedore.extension").setLevel(logging.CRITICAL) + logging.getLogger("geventwebsocket.handler").setLevel(logging.WARNING) fh.setLevel(log_level) logger.addHandler(fh) diff --git a/bazarr/main.py b/bazarr/main.py index 3ea960f4f..dd1f6db5f 100644 --- a/bazarr/main.py +++ b/bazarr/main.py @@ -37,7 +37,7 @@ if get_proxy_settings()[0] != 'None': os.environ['HTTPS_PROXY'] = str(proxy) os.environ['NO_PROXY'] = str(get_proxy_settings()[5]) -from bottle import route, run, template, static_file, request, redirect, response, HTTPError, app, hook +from bottle import route, run, template, static_file, request, redirect, response, HTTPError, app, hook, abort import bottle bottle.TEMPLATE_PATH.insert(0, os.path.join(os.path.dirname(__file__), '../views/')) if "PYCHARM_HOSTED" in os.environ: @@ -46,7 +46,10 @@ if "PYCHARM_HOSTED" in os.environ: else: bottle.ERROR_PAGE_TEMPLATE = bottle.ERROR_PAGE_TEMPLATE.replace('if DEBUG and', 'if') -from cherrypy.wsgiserver import CherryPyWSGIServer +from gevent.pywsgi import WSGIServer +from geventwebsocket import WebSocketError +from geventwebsocket.handler import WebSocketHandler +#from cherrypy.wsgiserver import CherryPyWSGIServer from beaker.middleware import SessionMiddleware from cork import Cork @@ -1729,14 +1732,28 @@ def test_url(protocol, url): else: return dict(status=True, version=result) +@route(base_url + 'websocket') +def handle_websocket(): + wsock = request.environ.get('wsgi.websocket') + if not wsock: + abort(400, 'Expected WebSocket request.') + + while True: + try: + message = wsock.receive() + wsock.send("Your message was: %r" % message) + except WebSocketError: + break + + import warnings # Mute DeprecationWarning warnings.simplefilter("ignore", DeprecationWarning) -server = CherryPyWSGIServer((str(ip), int(port)), app) +server = WSGIServer((str(ip), int(port)), app, handler_class=WebSocketHandler) try: logging.info('BAZARR is started and waiting for request on http://' + str(ip) + ':' + str(port) + str(base_url)) # print 'Bazarr is started and waiting for request on http://' + str(ip) + ':' + str(port) + str(base_url) - server.start() + server.serve_forever() except KeyboardInterrupt: shutdown() diff --git a/views/menu.tpl b/views/menu.tpl index 997b1a452..4ec0516c7 100644 --- a/views/menu.tpl +++ b/views/menu.tpl @@ -206,4 +206,11 @@ } }); } + + + \ No newline at end of file From 82793da4366988b51e7a1c652d81e024942dcb1f Mon Sep 17 00:00:00 2001 From: morpheus65535 <5130500+morpheus65535@users.noreply.github.com> Date: Wed, 12 Dec 2018 21:50:05 -0500 Subject: [PATCH 02/13] Continuing development --- bazarr/get_series.py | 6 ++++++ bazarr/main.py | 11 +++++------ views/menu.tpl | 11 ++++++++++- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/bazarr/get_series.py b/bazarr/get_series.py index 74fa6b2c9..466fd8d34 100644 --- a/bazarr/get_series.py +++ b/bazarr/get_series.py @@ -1,4 +1,6 @@ from get_argv import config_dir +from queue import q4ws +import datetime import os import sqlite3 @@ -9,6 +11,7 @@ from get_settings import get_general_settings from list_subtitles import list_missing_subtitles def update_series(): + q4ws.put("Update series list from Sonarr is running...") from get_settings import get_sonarr_settings url_sonarr = get_sonarr_settings()[6] apikey_sonarr = get_sonarr_settings()[4] @@ -51,6 +54,7 @@ def update_series(): series_to_add = [] for show in r.json(): + q4ws.put("Getting data for this show: " + show['title']) try: overview = unicode(show['overview']) except: @@ -105,6 +109,8 @@ def update_series(): db.commit() db.close() + q4ws.put("Update series list from Sonarr is ended.") + def get_profile_list(): from get_settings import get_sonarr_settings url_sonarr = get_sonarr_settings()[6] diff --git a/bazarr/main.py b/bazarr/main.py index dd1f6db5f..808745323 100644 --- a/bazarr/main.py +++ b/bazarr/main.py @@ -1,5 +1,7 @@ bazarr_version = '0.6.9' +from gevent import monkey; monkey.patch_all() + import gc gc.enable() @@ -20,6 +22,7 @@ from update_db import * from notifier import update_notifier update_notifier() +import queue from get_settings import get_general_settings, get_proxy_settings import logging @@ -1739,12 +1742,8 @@ def handle_websocket(): abort(400, 'Expected WebSocket request.') while True: - try: - message = wsock.receive() - wsock.send("Your message was: %r" % message) - except WebSocketError: - break - + while not q4ws.empty(): + wsock.send(q4ws.get_nowait()) import warnings # Mute DeprecationWarning diff --git a/views/menu.tpl b/views/menu.tpl index 4ec0516c7..b533038d4 100644 --- a/views/menu.tpl +++ b/views/menu.tpl @@ -1,6 +1,8 @@
+ +