Fix video not advancing + media not downloading on same-version startup

BUG-009: _on_video_eos was empty (stub). Added Clock.schedule_once
for next_media() when video reaches end of stream.

BUG-008: download_media_files only ran when server_version >
local_version. Added download check in up-to-date branch so media
files are synced even when playlist version hasn't changed.
This commit is contained in:
ske087
2026-07-24 15:43:56 +03:00
parent c4e8381898
commit a2add88f04
3 changed files with 29 additions and 4 deletions
+12
View File
@@ -454,6 +454,18 @@ def update_playlist_if_needed(config, playlist_dir, media_dir):
return playlist_file return playlist_file
else: else:
logger.info("✓ Playlist is up to date") logger.info("✓ Playlist is up to date")
# Even when the playlist version matches, ensure media files exist locally.
# The media folder might be empty (e.g. fresh install or deleted files).
logger.info("📥 Checking for missing media files...")
ssl_manager = auth.ssl_manager if config.get('use_https', True) else None
server_url = auth.auth_data.get('server_url', '')
downloaded = download_media_files(
server_data.get('playlist', []), media_dir, ssl_manager, server_url
)
if downloaded:
server_data['playlist'] = downloaded
# Re-save playlist with updated URLs if needed
save_playlist(server_data, playlist_dir)
return playlist_file return playlist_file
except Exception as e: except Exception as e:
+3
View File
@@ -1522,6 +1522,9 @@ class SignagePlayer(Widget):
def _on_video_eos(self, instance): def _on_video_eos(self, instance):
"""Callback when video reaches end of stream""" """Callback when video reaches end of stream"""
Logger.debug("SignagePlayer: Video finished playing (EOS)") Logger.debug("SignagePlayer: Video finished playing (EOS)")
# Unschedule any pending timer and advance to next media
Clock.unschedule(self.next_media)
Clock.schedule_once(self.next_media, 0.5)
def _on_video_loaded(self, instance, value): def _on_video_loaded(self, instance, value):
"""Callback when video is loaded - log video information""" """Callback when video is loaded - log video information"""
+14 -4
View File
@@ -99,12 +99,22 @@
- **Files:** `windows/run_win.py`, `windows/cef_browser.py` - **Files:** `windows/run_win.py`, `windows/cef_browser.py`
### [BUG-008] Intro video and media files not found at runtime ### [BUG-008] Intro video and media files not found at runtime
- **Status:** 🟡 **Known** 2026-07-24 - **Status:** **Fixed** 2026-07-24
- **Symptom:** `[ERROR] [Image] Error loading <...intro1.mp4>` — intro - **Symptom:** `[ERROR] [Image] Error loading <...intro1.mp4>` — intro
broken. Also `❌ Media file not found` for playlist items. broken. Also `❌ Media file not found` for playlist items.
- **Root cause:** Media files are not bundled in .exe — must be downloaded - **Root cause:** Media download only ran when `server_version > local_version`.
from server. Player connects (v16 received) but hasn't downloaded files. When versions matched (v16 == v16), `download_media_files` was never called
- **Fix:** Verify server is sending media content and player downloads it. → media folder stayed empty.
- **Fix:** Added download check in the "up to date" branch — now downloads
missing media files even when playlist version hasn't changed.
### [BUG-009] Video never advances to next item (EOS handler empty)
- **Status:****Fixed** 2026-07-24
- **Symptom:** Video plays but never advances to the next playlist item.
- **Root cause:** `_on_video_eos()` callback was a stub — just logged
"Video finished playing (EOS)" but never called `next_media()`.
- **Fix:** Added `Clock.unschedule(self.next_media)` + `Clock.schedule_once`
to advance after 0.5s when a video reaches end of stream.
--- ---