Some fixups

This commit is contained in:
Christoph Stahl 2023-12-18 21:58:12 +01:00
parent d19f974e02
commit ae5d82ce63
3 changed files with 32 additions and 12 deletions

View file

@ -4,10 +4,7 @@ Module for the playback client.
Excerp from the help:: Excerp from the help::
usage: client.py [-h] [--room ROOM] [--secret SECRET] \ usage: client.py [-h] [--room ROOM] [--secret SECRET] \
[--config-file CONFIG_FILE] server [--config-file CONFIG_FILE] [--server server]
positional arguments:
server
options: options:
-h, --help show this help message and exit -h, --help show this help message and exit
@ -15,6 +12,7 @@ Excerp from the help::
--secret SECRET, -s SECRET --secret SECRET, -s SECRET
--config-file CONFIG_FILE, -C CONFIG_FILE --config-file CONFIG_FILE, -C CONFIG_FILE
--key KEY, -k KEY --key KEY, -k KEY
--server
The config file should be a yaml file in the following style:: The config file should be a yaml file in the following style::
@ -25,11 +23,18 @@ The config file should be a yaml file in the following style::
configuration for SOURCE configuration for SOURCE
... ...
config: config:
configuration for the client server: ...
room: ...
preview_duration: ...
secret: ...
last_song: ...
waiting_room_policy: ..
""" """
import asyncio import asyncio
import datetime import datetime
import logging import logging
import os
import secrets import secrets
import string import string
import tempfile import tempfile
@ -39,6 +44,7 @@ from dataclasses import dataclass
from dataclasses import field from dataclasses import field
from traceback import print_exc from traceback import print_exc
from typing import Any, Optional from typing import Any, Optional
import platformdirs
import qrcode import qrcode
@ -425,14 +431,21 @@ def main() -> None:
parser.add_argument("--room", "-r") parser.add_argument("--room", "-r")
parser.add_argument("--secret", "-s") parser.add_argument("--secret", "-s")
parser.add_argument("--config-file", "-C", default="syng-client.yaml") parser.add_argument(
"--config-file",
"-C",
default=f"{os.path.join(platformdirs.user_config_dir('syng'), 'config.yaml')}",
)
parser.add_argument("--key", "-k", default=None) parser.add_argument("--key", "-k", default=None)
parser.add_argument("--server", "-S") parser.add_argument("--server", "-S")
args = parser.parse_args() args = parser.parse_args()
try:
with open(args.config_file, encoding="utf8") as file: with open(args.config_file, encoding="utf8") as file:
config = load(file, Loader=Loader) config = load(file, Loader=Loader)
except FileNotFoundError:
config = {}
if "config" not in config: if "config" not in config:
config["config"] = {} config["config"] = {}

View file

@ -300,9 +300,11 @@ class SyngGui(customtkinter.CTk): # type:ignore
def on_close(self) -> None: def on_close(self) -> None:
if self.syng_server is not None: if self.syng_server is not None:
self.syng_server.kill() self.syng_server.kill()
self.syng_server.join()
if self.syng_client is not None: if self.syng_client is not None:
self.syng_client.kill() self.syng_client.terminate()
self.syng_client.join()
self.withdraw() self.withdraw()
self.destroy() self.destroy()
@ -422,6 +424,7 @@ class SyngGui(customtkinter.CTk): # type:ignore
self.startbutton.configure(text="Stop") self.startbutton.configure(text="Stop")
else: else:
self.syng_client.terminate() self.syng_client.terminate()
self.syng_client.join()
self.syng_client = None self.syng_client = None
self.startbutton.configure(text="Save and Start") self.startbutton.configure(text="Save and Start")

View file

@ -125,6 +125,9 @@ class State:
:type sid: str :type sid: str
:param client: The config for the playback client :param client: The config for the playback client
:type client: Client :type client: Client
:param last_seen: Timestamp of the last connected client. Used to determine
if a room is still in use.
:type last_seen: datetime
""" """
queue: Queue queue: Queue
@ -156,7 +159,6 @@ async def send_state(state: State, sid: str) -> None:
""" """
safe_config = {k: v for k, v in state.client.config.items() if k not in ["secret", "key"]} safe_config = {k: v for k, v in state.client.config.items() if k not in ["secret", "key"]}
print(safe_config)
await sio.emit( await sio.emit(
"state", "state",
@ -1085,10 +1087,12 @@ def main() -> None:
:rtype: None :rtype: None
""" """
root_path = os.path.join(os.path.dirname(__file__), "static")
parser = ArgumentParser() parser = ArgumentParser()
parser.add_argument("--host", "-H", default="localhost") parser.add_argument("--host", "-H", default="localhost")
parser.add_argument("--port", "-p", type=int, default=8080) parser.add_argument("--port", "-p", type=int, default=8080)
parser.add_argument("--root-folder", "-r", default="syng/static/") parser.add_argument("--root-folder", "-r", default=root_path)
parser.add_argument("--registration-keyfile", "-k", default=None) parser.add_argument("--registration-keyfile", "-k", default=None)
args = parser.parse_args() args = parser.parse_args()