72 lines
1.6 KiB
Python
72 lines
1.6 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()
|
|
print(player.mediaStatus())
|
|
|
|
|
|
# Asigna las acciones de las emisoras
|
|
iconPlay = QIcon("play.png")
|
|
for i, item in enumerate(jsonObject):
|
|
globals()['action%s' % i] = QAction(iconPlay, item["nombre"])
|
|
globals()['action%s' % i].triggered.connect(
|
|
lambda checked, url=item["url"]: escuchar(url)
|
|
)
|
|
menu.addAction(globals()['action%s' % i])
|
|
|
|
|
|
# Pausar
|
|
iconPausar = QIcon("pause.png")
|
|
pausar = QAction(iconPausar, "Pausar")
|
|
pausar.triggered.connect(
|
|
lambda:
|
|
player.pause()
|
|
)
|
|
menu.addAction(pausar)
|
|
|
|
|
|
# Parar
|
|
iconParar = QIcon("stop.png")
|
|
parar = QAction(iconParar, "Parar")
|
|
parar.triggered.connect(lambda: player.stop())
|
|
menu.addAction(parar)
|
|
|
|
|
|
# To quit the app
|
|
iconExit = QIcon("exit.png")
|
|
quit = QAction(iconExit, "Quit")
|
|
quit.triggered.connect(app.quit)
|
|
menu.addAction(quit)
|
|
# Adding options to the System Tray
|
|
tray.setContextMenu(menu)
|
|
app.exec()
|