@@ -1053,6 +1053,51 @@ def restore_colors(self):
10531053 def player_instance(self):
10541054 return self.player
10551055
1056+ def _update_bitrate(self, bitrate):
1057+ if self.playing > -1:
1058+ if self._last_played_station == self.stations[self.playing]:
1059+ # make sure mplayer is installed
1060+ go_on = False
1061+ for a_player in self._cnf.AVAILABLE_PLAYERS:
1062+ if a_player.PLAYER_NAME == 'mplayer':
1063+ go_on = True
1064+ break
1065+ if not go_on:
1066+ if logger.isEnabledFor(logging.DEBUG):
1067+ logger.debug('mplayer not installed, aborting!')
1068+ return
1069+ br = self.stations[self.playing][Station.buffering]
1070+ new_br = br
1071+ if br:
1072+ sp = br.split('@')
1073+ if sp[-1] == '128':
1074+ sp[-1] = bitrate
1075+ new_br = '@'.join(sp)
1076+ if br != new_br:
1077+ self.stations[self.playing][Station.buffering] = new_br
1078+ if not self._cnf.browsing_station_service:
1079+ self._cnf.dirty_playlist = True
1080+ if logger.isEnabledFor(logging.INFO):
1081+ logger.info('saving current playlist: {} - "{}" -> "{}"'.format(
1082+ self._cnf.station_title, br, new_br)
1083+ )
1084+ self.saveCurrentPlaylist(report_success=False)
1085+ else:
1086+ if logger.isEnabledFor(logging.DEBUG):
1087+ logger.debug('online browser is active, not saving playlist!')
1088+ else:
1089+ if logger.isEnabledFor(logging.DEBUG):
1090+ logger.debug('we have the same bitrate, aborting!')
1091+ else:
1092+ if logger.isEnabledFor(logging.DEBUG):
1093+ logger.debug('current buffering value is empty, aborting!')
1094+ else:
1095+ if logger.isEnabledFor(logging.DEBUG):
1096+ logger.debug('last played station is different from currently playing station, aborting!')
1097+ else:
1098+ if logger.isEnabledFor(logging.DEBUG):
1099+ logger.debug('currently not in playback, aborting!')
1100+
10561101 def setup(self, stdscr):
10571102 if logger.isEnabledFor(logging.INFO):
10581103 if self.program_restart:
@@ -1166,6 +1211,7 @@ def setup(self, stdscr):
11661211 self.player.buffering_lock = self._buffering_lock
11671212 self.player.log = self.log
11681213 self.player.handle_old_referer = self._handle_old_referer
1214+ self.player.update_bitrate = self._update_bitrate
11691215 if self._cnf.check_playlist:
11701216 if logger.isEnabledFor(logging.INFO):
11711217 logger.info('******* registering check playlist callback functions')
@@ -2887,14 +2933,15 @@ def _ask_to_remove_station(self):
28872933 self.ws.operation_mode = self.ws.REMOVE_STATION_MODE
28882934 self._remove_station()
28892935
2890- def saveCurrentPlaylist(self, stationFile=''):
2936+ def saveCurrentPlaylist(self, stationFile='', report_success=True ):
28912937 ret = self._cnf.save_playlist_file(stationFile)
28922938 self.refreshBody()
28932939 if ret == 0 and not self._cnf.is_register:
2894- self._show_notification_with_delay(
2895- txt='___Playlist saved!!!___',
2896- mode_to_set=self.ws.NORMAL_MODE,
2897- callback_function=self.refreshBody)
2940+ if report_success:
2941+ self._show_notification_with_delay(
2942+ txt='___Playlist saved!!!___',
2943+ mode_to_set=self.ws.NORMAL_MODE,
2944+ callback_function=self.refreshBody)
28982945 elif ret == -1:
28992946 self._open_simple_message_by_key(
29002947 'M_PLAYLIST_SAVE_ERR_1',
@@ -6435,6 +6482,7 @@ def _activate_player(self, player_name):
64356482 self.player.params = self._cnf.params[self.player.PLAYER_NAME][:]
64366483 self.player.buffering_change_function = self._show_recording_status_in_header
64376484 self.player.buffering_lock = self._buffering_lock
6485+ self.player.update_bitrate = self._update_bitrate
64386486 self.player.log = self.log
64396487 self.player.handle_old_referer = self._handle_old_referer
64406488 if self._cnf.check_playlist:
0 commit comments