Added downloading from spotify.

TODO: Two playing options - old stream and new download
This commit is contained in:
BarsTiger
2022-12-12 23:04:17 +02:00
parent 9d2bc0aeb6
commit 9dae35a537
15 changed files with 351 additions and 78 deletions

View File

@@ -12,6 +12,6 @@ from modules.restream.restream import Restreamer
def register_handlers(ui: Ui_MainWindow, MainWindow: QMainWindow, p: Player, rs: Restreamer):
menu.register_handlers(ui)
pads.register_handlers(ui, MainWindow, p)
player.register_handlers(ui, MainWindow, p)
player.register_handlers(ui, p)
settings.register_handlers(ui)
restreammic.register_handlers(ui, MainWindow, rs)

View File

@@ -1,6 +1,8 @@
from gui.gui import Ui_MainWindow
from modules.config import Config
from modules.spotify.config import SpotifyConfig
from modules.restream import get_streaming_devices
from modules.player.player import get_devices, get_instance, get_player
def fill_settings(ui: Ui_MainWindow):
@@ -8,7 +10,23 @@ def fill_settings(ui: Ui_MainWindow):
ui.theme_box.setCurrentText(Config.get().theme)
# ui.output_device_play_box.addItems()
play_devices = get_devices(get_player(get_instance()))
ui.output_device_play_box.addItems(play_devices)
ui.preview_device_play_box.addItems(play_devices)
if Config.get().out_device in play_devices.keys():
ui.output_device_play_box.setCurrentText(Config.get().out_device)
else:
for item in play_devices.keys():
if '(VB-Audio Virtual Cable)' in item:
ui.output_device_play_box.setCurrentText(item)
break
if Config.get().preview_device in play_devices.keys():
ui.preview_device_play_box.setCurrentText(Config.get().preview_device)
elif 'Default' in play_devices.keys():
ui.preview_device_play_box.setCurrentText('Default')
ui.restream_micro_checkbox.setChecked(Config.get().restream)
ui.input_device_restream_box.addItems(get_streaming_devices().in_l)
@@ -19,3 +37,6 @@ def fill_settings(ui: Ui_MainWindow):
if Config.get().out_micro in get_streaming_devices().out_l:
ui.output_device_restream_box.setCurrentText(Config.get().out_micro)
ui.spotify_client_id_box.setText(SpotifyConfig.get().client_id)
ui.spotify_client_secret_box.setText(SpotifyConfig.get().client_secret)

View File

@@ -11,12 +11,6 @@ from modules.restream.restream import Restreamer
def on_load(ui: Ui_MainWindow, MainWindow: QMainWindow):
"""
Setup all UI elements
:param ui:
:param MainWindow:
:return:
"""
ui.content.setCurrentIndex(0)
MainWindow.setStyleSheet(styles.centralwidget())
@@ -27,11 +21,11 @@ def on_load(ui: Ui_MainWindow, MainWindow: QMainWindow):
ui.timer = QtCore.QTimer(MainWindow)
ui.timer.start(100)
p = Player()
rs = Restreamer()
fill_settings.fill_settings(ui)
p = Player(ui)
rs = Restreamer()
(lambda: rs.restart(ui) if ui.restream_micro_checkbox.isChecked() else rs.stop())()
register.register_handlers(ui, MainWindow, p, rs)

View File

@@ -3,9 +3,4 @@ from .menu import handle_menu_click
def register_handlers(ui: Ui_MainWindow):
"""
Register this module handlers
:param ui:
:return:
"""
ui.menu.itemClicked.connect(lambda: handle_menu_click(ui.menu.currentItem().text(), ui))

View File

@@ -3,10 +3,6 @@ from gui.gui import Ui_MainWindow
def open_menu(ui: Ui_MainWindow) -> None:
"""
Animates the menu to open and close, using animation from config
:return:
"""
width = ui.menu.geometry().width()
Ui_MainWindow.animation = QtCore.QPropertyAnimation(ui.menu, b"minimumWidth")
Ui_MainWindow.animation.setDuration(300)
@@ -22,12 +18,6 @@ def open_menu(ui: Ui_MainWindow) -> None:
def handle_menu_click(text: str, ui: Ui_MainWindow) -> None:
"""
Handles the click on the menu and changes the page
:param text:
:param ui:
:return:
"""
index = {
"Close menu": [lambda _: open_menu(ui), None],
"Pads": [ui.content.setCurrentWidget, ui.pads_page],

View File

@@ -1,19 +1,10 @@
from gui.gui import Ui_MainWindow
from PyQt5 import QtGui
from PyQt5.QtWidgets import QMainWindow
from modules.player.player import Player
from modules.config import Config
def register_handlers(ui: Ui_MainWindow, MainWindow: QMainWindow, p: Player):
"""
Register this module handlers
:param p:
:param ui:
:param MainWindow:
:return:
"""
def register_handlers(ui: Ui_MainWindow, p: Player):
play_icon = QtGui.QIcon()
play_icon.addPixmap(QtGui.QPixmap(":/img/img/play.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
@@ -27,3 +18,5 @@ def register_handlers(ui: Ui_MainWindow, MainWindow: QMainWindow, p: Player):
ui.play_pause_button.setIcon(play_icon) if not p.mediaplayer_out.is_playing()
else ui.play_pause_button.setIcon(pause_icon)))
ui.player_time_slider.sliderPressed.connect(lambda: p.set_position(ui.player_time_slider.value() / 100.0))
ui.output_device_play_box.currentTextChanged.connect(lambda: p.update_devices(ui))
ui.preview_device_play_box.currentTextChanged.connect(lambda: p.update_devices(ui))

View File

@@ -1,15 +1,10 @@
from gui.gui import Ui_MainWindow
from modules.config import Config
from modules.spotify.config import SpotifyConfig
import shutil
def register_handlers(ui: Ui_MainWindow):
"""
Register this module handlers
:param ui:
:return:
"""
ui.theme_box.currentTextChanged.connect(lambda: Config.update("theme", ui.theme_box.currentText()))
ui.restream_micro_checkbox.clicked.connect(lambda: Config.update("restream",
ui.restream_micro_checkbox.isChecked()))
@@ -21,6 +16,20 @@ def register_handlers(ui: Ui_MainWindow):
lambda: Config.update("in_micro", ui.input_device_restream_box.currentText())
)
ui.output_device_play_box.currentTextChanged.connect(
lambda: Config.update("out_device", ui.output_device_play_box.currentText())
)
ui.preview_device_play_box.currentTextChanged.connect(
lambda: Config.update("preview_device", ui.preview_device_play_box.currentText())
)
ui.spotify_client_id_box.textChanged.connect(
lambda: SpotifyConfig.update("client_id", ui.spotify_client_id_box.text())
)
ui.spotify_client_secret_box.textChanged.connect(
lambda: SpotifyConfig.update("client_secret", ui.spotify_client_secret_box.text())
)
ui.clear_temp_button.clicked.connect(
lambda: shutil.rmtree('temp', ignore_errors=True)
)