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()) # para ordenar las emisoras por el nombre def sortFn(dict): return dict['nombre'] # las categorias for tag in sorted(jsonObject[0].keys()): globals()['menu%s' % tag] = QMenu(tag) menu.addMenu(globals()['menu%s' % tag]) # las opciones dentro de las catgorias jsonObject[0][tag].sort(key=sortFn) for i, item in enumerate(jsonObject[0][tag]): iconPlay = QIcon(path + "/play.png") globals()['action%s' % item["nombre"]] = QAction( iconPlay, item["nombre"]) globals()['action%s' % item["nombre"]].triggered.connect( lambda checked, url=item["url"]: escuchar(url) ) globals()['menu%s' % tag].addAction( globals()['action%s' % item["nombre"]]) # 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()