From edc498c5107b3a765120c1949affb008244ffa8c Mon Sep 17 00:00:00 2001 From: Wiktor Zykubek Date: Sun, 18 Jun 2023 17:37:10 +0200 Subject: [PATCH] Print podcasts and episodes --- form.ui | 43 +++++++++++++++++++++++++---------------- openfm_qt/mainwindow.py | 38 ++++++++++++++++++++++++++++++++++-- 2 files changed, 62 insertions(+), 19 deletions(-) diff --git a/form.ui b/form.ui index 006c599..4aad757 100644 --- a/form.ui +++ b/form.ui @@ -99,27 +99,36 @@ Podcasty - + - 0 - 0 - 150 - 400 + -1 + -1 + 151 + 401 - - - 150 - 400 - - - - - 150 - 400 - - + + + + + + + + + 0 + 195 + + + + + 16777215 + 195 + + + + + diff --git a/openfm_qt/mainwindow.py b/openfm_qt/mainwindow.py index ad9da21..6019ebd 100644 --- a/openfm_qt/mainwindow.py +++ b/openfm_qt/mainwindow.py @@ -30,7 +30,7 @@ class MainWindow(QMainWindow): self.__stations = self.getData( "https://open.fm/radio/api/v2/ofm/stations_slug.json" ) - self.__podcasts = self.getData( + self.__podcasts_groups = self.getData( "https://open.fm/api/podcasts/categories" ) self.__player = QMediaPlayer() @@ -41,6 +41,8 @@ class MainWindow(QMainWindow): self.printPodcastGroups() self.ui.radioGroupsListWidget.itemClicked.connect(self.printRadioStations) + self.ui.podcastGroupsListWidget.itemClicked.connect(self.printPodcasts) + self.ui.podcastListWidget.itemClicked.connect(self.printPodcastEpisodes) self.ui.stationsListWidget.itemClicked.connect(self.playRadio) self.ui.playbackToolButton.clicked.connect(self.togglePlayer) self.ui.volumeHorizontalSlider.valueChanged.connect(self.setVolume) @@ -69,7 +71,7 @@ class MainWindow(QMainWindow): def printPodcastGroups(self) -> None: """Print groups (categories) in podcastGroupsListWidget.""" self.ui.podcastGroupsListWidget.addItems( - [e["name"] for e in self.__podcasts] + [e["name"] for e in self.__podcasts_groups] ) def printRadioStations(self) -> None: @@ -89,6 +91,38 @@ class MainWindow(QMainWindow): ] ) + def printPodcasts(self) -> None: + """Print podcasts in podcastListWidget.""" + group = self.ui.podcastGroupsListWidget.selectedItems()[0].text() + group_name = None + for e in self.__podcasts_groups: + if e["name"] == group: + group_name = e["slug"] + + self.podcasts = self.getData( + f"https://open.fm/api/podcasts/category/{group_name}" + )["podcasts"]["content"] + self.ui.podcastListWidget.clear() + self.ui.podcastListWidget.addItems( + [e["title"] for e in self.podcasts] + ) + + def printPodcastEpisodes(self) -> None: + """Print podcast episodes in stationsListWidget.""" + podcast_name = self.ui.podcastListWidget.selectedItems()[0].text() + podcast_id = None + for e in self.podcasts: + if e["title"] == podcast_name: + podcast_id = e["id"] + + episodes = self.getData( + f"https://open.fm/api/podcast/{podcast_id}/episodes" + ) + self.ui.stationsListWidget.clear() + self.ui.stationsListWidget.addItems( + [e["title"] for e in episodes["content"]] + ) + def setVolume(self, volume: int = None) -> None: """Set playback volume to given number or slider value.""" if not volume: