57 lines
1.4 KiB
Python
57 lines
1.4 KiB
Python
import json
|
|
from PyQt6.QtGui import QIcon, QAction
|
|
from PyQt6.QtWidgets import QApplication, QMenu, QSystemTrayIcon
|
|
from PyQt6.QtMultimedia import QAudioOutput, QMediaPlayer
|
|
from PyQt6.QtCore import QUrl
|
|
app = QApplication([])
|
|
app.setQuitOnLastWindowClosed(False)
|
|
# Adding an icon
|
|
icon = QIcon("radio.png")
|
|
# Adding item on the menu bar
|
|
tray = QSystemTrayIcon()
|
|
tray.setIcon(icon)
|
|
tray.setVisible(True)
|
|
# Creating the options
|
|
menu = QMenu()
|
|
# añadimos el json
|
|
f = open("radios.json", "rb")
|
|
jsonObject = json.load(f)
|
|
f.close()
|
|
|
|
|
|
# reproductor
|
|
player = QMediaPlayer()
|
|
audio_output = QAudioOutput()
|
|
player.setAudioOutput(audio_output)
|
|
audio_output.setVolume(100)
|
|
|
|
|
|
# escuchar la radio
|
|
def escuchar(url):
|
|
player.stop()
|
|
player.setSource(QUrl.fromLocalFile(url))
|
|
player.play()
|
|
|
|
|
|
# Asigna las acciones de las emisoras
|
|
for i, item in enumerate(jsonObject):
|
|
print(i, item)
|
|
globals()['action%s' % i] = QAction(item["nombre"])
|
|
globals()['action%s' % i].triggered.connect(
|
|
lambda checked, url=item["url"]: escuchar(url)
|
|
)
|
|
menu.addAction(globals()['action%s' % i])
|
|
|
|
|
|
# TODO: Agregar opciones, pausar, parar, y continuar
|
|
# (cuando esté pausado se pueda continuar y cuando esté reproduciendo
|
|
# que se puede pausar) y con iconos
|
|
|
|
# To quit the app
|
|
quit = QAction("Quit")
|
|
quit.triggered.connect(app.quit)
|
|
menu.addAction(quit)
|
|
# Adding options to the System Tray
|
|
tray.setContextMenu(menu)
|
|
app.exec()
|