Files
pyRadioTray/pyradiotray.py
2023-07-06 21:07:26 +02:00

74 lines
1.7 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
import os
path = os.path.dirname(os.path.abspath(__file__))
app = QApplication([])
app.setQuitOnLastWindowClosed(False)
# Adding an icon
icon = QIcon(path + "/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(path + "/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(path + "/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(path + "/pause.png")
pausar = QAction(iconPausar, "Pausar")
pausar.triggered.connect(
lambda:
player.pause()
)
menu.addAction(pausar)
# Parar
iconParar = QIcon(path + "/stop.png")
parar = QAction(iconParar, "Parar")
parar.triggered.connect(lambda: player.stop())
menu.addAction(parar)
# To quit the app
iconExit = QIcon(path + "/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()