44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
from gui.gui import Ui_MainWindow
|
|
import json
|
|
import pysher
|
|
from gui.modules.core.popup import popup
|
|
import base64
|
|
from modules.player.player import Player
|
|
|
|
|
|
def on_url_music(url: str, p: Player, ui: Ui_MainWindow):
|
|
ui.collab_connect_logs.append(f"Received {url}")
|
|
p.set_media(url)
|
|
p.play(ui)
|
|
|
|
|
|
def handle_connection_to_server(ui: Ui_MainWindow, p: Player):
|
|
ui.collab_connect_logs.append(f'Connected to {ui.receiver_creds["name"]}')
|
|
channel = ui.receiver.subscribe(ui.collab_session_key_box.text())
|
|
channel.bind('sound', lambda _: on_url_music(_, p, ui))
|
|
channel.bind('stop', lambda _: (p.mediaplayer_preview.stop(),
|
|
p.mediaplayer_out.stop()))
|
|
|
|
|
|
def on_connect_clicked(ui: Ui_MainWindow, p: Player):
|
|
try:
|
|
creds = dict(json.loads(
|
|
base64.decodebytes(bytes(ui.collab_session_key_box.text().replace('-', '\n'), encoding='utf-8')
|
|
).decode('utf-8').replace("'", '"')
|
|
))
|
|
ui.collab_connect_logs.append(f'Loaded {creds["name"]}')
|
|
except Exception as e:
|
|
print(e)
|
|
popup("Error", 'Invalid connection key')
|
|
return
|
|
|
|
ui.receiver_creds = creds
|
|
|
|
ui.receiver = pysher.Pusher(
|
|
key=creds["key"],
|
|
cluster=creds["cluster"]
|
|
)
|
|
ui.receiver.connection.bind('pusher:connection_established', lambda _: handle_connection_to_server(ui, p))
|
|
ui.receiver.connect()
|
|
ui.collab_disconnect_button.setEnabled(True)
|