From b6965971ac09a5922be94e4a6eca78b7a800afda Mon Sep 17 00:00:00 2001 From: data Date: Sun, 16 Mar 2025 18:33:48 +0100 Subject: [PATCH] Komplett WebSocket Server soweit fertig --- __main__.py | 4 +++ app/main_server.py | 30 +++++++++++++++++++ .../share/kio/servicemenus/send.path.sh | 9 ++++++ .../servicemenus/videos_to_new_server.desktop | 10 +++++++ 4 files changed, 53 insertions(+) create mode 100644 __main__.py create mode 100644 app/main_server.py create mode 100755 kde_context_plugin/share/kio/servicemenus/send.path.sh create mode 100755 kde_context_plugin/share/kio/servicemenus/videos_to_new_server.desktop diff --git a/__main__.py b/__main__.py new file mode 100644 index 0000000..ca2ad3d --- /dev/null +++ b/__main__.py @@ -0,0 +1,4 @@ +from app.main_server import Server + +if __name__ == "__main__": + obj_server = Server() \ No newline at end of file diff --git a/app/main_server.py b/app/main_server.py new file mode 100644 index 0000000..b75674b --- /dev/null +++ b/app/main_server.py @@ -0,0 +1,30 @@ +import websockets +import asyncio + +class Server: + def __init__(self): + self.ip = "0.0.0.0" + self.port = 8000 + + try: + asyncio.run(self.start()) + except KeyboardInterrupt: + print("Server sagt: Server wurde beendet.") + + @staticmethod + async def handle_client(websocket): + print("Server sagt: Client verbunden") + try: + async for message in websocket: + print(f"Server hat Empfangen: {message}") + + response = f"Server antwortet: {message.upper()}" + await websocket.send(response) + + except websockets.exceptions.ConnectionClosed: + print("Server sagt: Client getrennt") + + async def start(self): + server = await websockets.serve(self.handle_client, self.ip, self.port) + print(f"Websocket Server läuft auf IP: {self.ip} Port: {self.port}") + await server.wait_closed() \ No newline at end of file diff --git a/kde_context_plugin/share/kio/servicemenus/send.path.sh b/kde_context_plugin/share/kio/servicemenus/send.path.sh new file mode 100755 index 0000000..9ecb617 --- /dev/null +++ b/kde_context_plugin/share/kio/servicemenus/send.path.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +SERVER="ws://localhost:8000/" + +for FILE in "$@"; do + JSON=$(printf '{"data_path: "%s"}' "$FILE") + echo "$JSON" | websocat "$SERVER" + +done \ No newline at end of file diff --git a/kde_context_plugin/share/kio/servicemenus/videos_to_new_server.desktop b/kde_context_plugin/share/kio/servicemenus/videos_to_new_server.desktop new file mode 100755 index 0000000..862e2a7 --- /dev/null +++ b/kde_context_plugin/share/kio/servicemenus/videos_to_new_server.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Service +ServiceTypes=KonqPopupMenu/Plugin +MimeType=video/* +Actions=sendToWebSocket + +[Desktop Action sendToWebSocket] +Name=Video to New Server +Exec=/home/data/.local/share/kio/servicemenus/send.path.sh %F +Icon=video-x-generic