From c599ad632184152ad95ace7efc9f42eda47d395a Mon Sep 17 00:00:00 2001 From: SKE087 Date: Thu, 15 Oct 2026 00:09:42 +0300 Subject: [PATCH] Fix feedback 401 (persist quickconnect_code); silence benign Kivy Image error - player_auth.py: save quickconnect_code in auth_data during authenticate() so send_feedback() no longer posts quickconnect_code=null (was returning 401 on POST /api/player-feedback while /api/auth/verify returned 200). Also carry it through clear_auth() defaults. - main.py: Logger.setLevel('Image', 'CRITICAL') to silence the harmless "Image: Error loading " logged by Kivy's Video widget, which subclasses Image and runs the image loader before the ffpyplayer video load. --- src/main.py | 6 ++++++ src/player_auth.py | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/src/main.py b/src/main.py index 0ecbbd5..972aa4a 100644 --- a/src/main.py +++ b/src/main.py @@ -60,6 +60,12 @@ from kivy.core.window import Window from kivy.properties import BooleanProperty from kivy.logger import Logger +# Kivy's Video widget subclasses Image, so its inherited image loader always +# runs first and logs a harmless "Image: Error loading " for every +# video (the real decoding is done by the ffpyplayer CoreVideo provider). +# Silence just that logger so genuine errors stay visible. +Logger.setLevel('Image', 'CRITICAL') + # Try to import evdev for card reader support (after Logger is available) try: import evdev diff --git a/src/player_auth.py b/src/player_auth.py index 347c7d5..5593805 100644 --- a/src/player_auth.py +++ b/src/player_auth.py @@ -121,6 +121,9 @@ class PlayerAuth: self.auth_data = { 'hostname': hostname, 'auth_code': data.get('auth_code'), + # Persist the quick-connect code: the feedback endpoint + # requires it in the request body (see send_feedback). + 'quickconnect_code': quickconnect_code, 'player_id': data.get('player_id'), 'player_name': data.get('player_name'), 'playlist_id': data.get('playlist_id'), @@ -354,6 +357,7 @@ class PlayerAuth: self.auth_data = { 'hostname': self.auth_data.get('hostname', ''), 'auth_code': '', + 'quickconnect_code': self.auth_data.get('quickconnect_code', ''), 'player_id': None, 'player_name': '', 'playlist_id': None,