from flask import Flask, send_from_directory, jsonify, request, Response, make_response import waitress from OnionSVG import check_svg import isimple import isimple.config import isimple.util as util import isimple.util.filedialog import isimple.core.backend as backend import isimple.core.streaming as streaming import isimple.db as db import isimple.video as video import isimple.plugins as plugins log = isimple.get_logger(__name__) UI = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'ui', 'dist') def respond(*args) -> str: return jsonify(*args) def restart_server(host: str, port: int): log.info('restarting server...') subprocess.Popen( f'sleep 1; python .venv.py .server.py --host {host} --port {port}', shell=True, cwd=os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from distutils.util import strtobool from functools import wraps, lru_cache from typing import Any, Generator, Optional from collections import namedtuple import multiprocessing import threading import queue import hashlib from contextlib import contextmanager import diskcache import numpy as np from isimple import get_logger, settings, Logger log = get_logger(__name__) def str2bool(value: str) -> bool: return strtobool(value) def as_string(value: Any) -> str: """Redirect `dbcore` calls to [`beets.util.as_string`](https://github.com/beetbox/beets/blob/545c65d903e38d37fd2c1734ec69eac609bea035/beets/util/__init__.py#L717-L733) Remove Python 2.7 compatibility """ if value is None: return u'' elif isinstance(value, memoryview): return bytes(value).decode('utf-8', 'ignore') elif isinstance(value, bytes):
import argparse import socket import requests import webbrowser from isimple import get_logger from isimple.main import Main, Thread, time log = get_logger('.server.py') parser = argparse.ArgumentParser() parser.add_argument('--host', type=str, default='localhost', required=False) parser.add_argument('--port', type=int, default=7951, required=False) parser.add_argument('--open', action='store_true') if __name__ == '__main__': args = parser.parse_args() def in_use() -> bool: with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: return s.connect_ex((args.host, args.port)) == 0 def open_in_browser(): time.sleep(1) webbrowser.open(f"http://{args.host}:{args.port}/") if in_use(): log.info('address already in use') r = requests.post(f"http://{args.host}:{args.port}/api/quit")