Næste version
This commit is contained in:
@@ -63,7 +63,9 @@ class Player(QObject):
|
||||
self._demo_mode = False
|
||||
|
||||
if VLC_AVAILABLE and self._media_player:
|
||||
media = self._instance.media_new(path)
|
||||
# Konverter GVFS SMB-sti til SMB URL som VLC kan tilgå direkte
|
||||
vlc_path = self._resolve_path(path)
|
||||
media = self._instance.media_new(vlc_path)
|
||||
self._media_player.set_media(media)
|
||||
self._media_player.audio_set_volume(self._volume)
|
||||
|
||||
@@ -71,6 +73,33 @@ class Player(QObject):
|
||||
self.time_changed.emit(0, self._duration)
|
||||
self.state_changed.emit("stopped")
|
||||
|
||||
def _resolve_path(self, path: str) -> str:
|
||||
"""Konverter platform-specifikke netværksstier til URL'er VLC kan bruge."""
|
||||
import re, sys
|
||||
|
||||
# Linux GVFS SMB: /run/user/1000/gvfs/smb-share:server=X,share=Y/sti/fil.mp3
|
||||
m = re.match(r".*/gvfs/smb-share:server=([^,]+),share=([^/]+)(/.+)$", path)
|
||||
if m:
|
||||
server, share, rest = m.group(1), m.group(2), m.group(3)
|
||||
return f"smb://{server}/{share}{rest}"
|
||||
|
||||
# Windows UNC: \\server\share\sti\fil.mp3
|
||||
if path.startswith("\\\\"):
|
||||
# \\server\share\rest → smb://server/share/rest
|
||||
parts = path.replace("\\", "/").lstrip("/").split("/", 2)
|
||||
if len(parts) >= 2:
|
||||
server = parts[0]
|
||||
share = parts[1]
|
||||
rest = "/" + parts[2] if len(parts) > 2 else ""
|
||||
return f"smb://{server}/{share}{rest}"
|
||||
|
||||
# Lokale stier og drevbogstaver (C:\...) — VLC håndterer dem fint
|
||||
return path
|
||||
|
||||
self.position_changed.emit(0.0)
|
||||
self.time_changed.emit(0, self._duration)
|
||||
self.state_changed.emit("stopped")
|
||||
|
||||
# ── Transport ─────────────────────────────────────────────────────────────
|
||||
|
||||
def play(self):
|
||||
|
||||
Reference in New Issue
Block a user