Volume adjustments should now save on exit.
This commit is contained in:
+42
-10
@@ -78,6 +78,10 @@ class BookReader:
|
||||
self.speechEngine = SpeechEngine() # UI feedback
|
||||
self.audioPlayer = MpvPlayer() # Used for both audio books and TTS playback
|
||||
|
||||
# Configure audio player from saved settings
|
||||
savedVolume = self.config.get_volume()
|
||||
self.audioPlayer.set_volume(savedVolume)
|
||||
|
||||
# Configure speech engine from saved settings
|
||||
speechRate = self.config.get_speech_rate()
|
||||
self.speechEngine.set_rate(speechRate)
|
||||
@@ -246,6 +250,10 @@ class BookReader:
|
||||
if not self.audioPlayer.load_audio_file(self.book.audioPath, playbackSpeed=playbackSpeed):
|
||||
raise Exception("Failed to load audio file")
|
||||
|
||||
# Restore saved volume setting
|
||||
savedVolume = self.config.get_volume()
|
||||
self.audioPlayer.set_volume(savedVolume)
|
||||
|
||||
# Inform user about navigation capabilities
|
||||
if self.book.get_total_chapters() == 1:
|
||||
print("\nNote: This audio file has no chapter markers.")
|
||||
@@ -1220,20 +1228,32 @@ class BookReader:
|
||||
self.speechEngine.speak("No book loaded")
|
||||
|
||||
elif event.key == pygame.K_0:
|
||||
# Increase volume (audio books only - mpv handles volume control)
|
||||
if self.book and hasattr(self.book, 'isAudioBook') and self.book.isAudioBook:
|
||||
newVolume = self.audioPlayer.increase_volume(5)
|
||||
self.speechEngine.speak(f"Volume {newVolume}")
|
||||
# Increase volume (audio books and Piper-TTS - mpv handles volume control)
|
||||
if self.book:
|
||||
isAudioBook = hasattr(self.book, 'isAudioBook') and self.book.isAudioBook
|
||||
isPiperMode = self.config.get_reader_engine() == 'piper'
|
||||
if isAudioBook or isPiperMode:
|
||||
newVolume = self.audioPlayer.increase_volume(5)
|
||||
self.config.set_volume(newVolume)
|
||||
self.speechEngine.speak(f"Volume {newVolume}")
|
||||
else:
|
||||
self.speechEngine.speak("Volume control only works for audio books and Piper TTS mode")
|
||||
else:
|
||||
self.speechEngine.speak("Volume control only works for audio books")
|
||||
self.speechEngine.speak("No book loaded")
|
||||
|
||||
elif event.key == pygame.K_9:
|
||||
# Decrease volume (audio books only - mpv handles volume control)
|
||||
if self.book and hasattr(self.book, 'isAudioBook') and self.book.isAudioBook:
|
||||
newVolume = self.audioPlayer.decrease_volume(5)
|
||||
self.speechEngine.speak(f"Volume {newVolume}")
|
||||
# Decrease volume (audio books and Piper-TTS - mpv handles volume control)
|
||||
if self.book:
|
||||
isAudioBook = hasattr(self.book, 'isAudioBook') and self.book.isAudioBook
|
||||
isPiperMode = self.config.get_reader_engine() == 'piper'
|
||||
if isAudioBook or isPiperMode:
|
||||
newVolume = self.audioPlayer.decrease_volume(5)
|
||||
self.config.set_volume(newVolume)
|
||||
self.speechEngine.speak(f"Volume {newVolume}")
|
||||
else:
|
||||
self.speechEngine.speak("Volume control only works for audio books and Piper TTS mode")
|
||||
else:
|
||||
self.speechEngine.speak("Volume control only works for audio books")
|
||||
self.speechEngine.speak("No book loaded")
|
||||
|
||||
elif event.key == pygame.K_HOME and shiftPressed:
|
||||
# Shift+Home: Clear bookmark and jump to beginning of book
|
||||
@@ -1905,6 +1925,10 @@ class BookReader:
|
||||
print("Make sure mpv is installed: sudo pacman -S mpv")
|
||||
return
|
||||
|
||||
# Restore saved volume setting
|
||||
savedVolume = self.config.get_volume()
|
||||
self.audioPlayer.set_volume(savedVolume)
|
||||
|
||||
# Success! Start playing
|
||||
self.speechEngine.speak(f"Now streaming {title}. Press space to pause.")
|
||||
print(f"\nNow streaming: {title} by {author}")
|
||||
@@ -2462,6 +2486,14 @@ class BookReader:
|
||||
self.serverLinkManager.clear_session(str(self.bookPath))
|
||||
self.sessionId = None
|
||||
|
||||
# Save current volume setting if audio book or Piper-TTS was used
|
||||
if self.book:
|
||||
isAudioBook = hasattr(self.book, 'isAudioBook') and self.book.isAudioBook
|
||||
isPiperMode = self.config.get_reader_engine() == 'piper'
|
||||
if isAudioBook or isPiperMode:
|
||||
currentVolume = self.audioPlayer.get_volume()
|
||||
self.config.set_volume(currentVolume)
|
||||
|
||||
self._cancel_buffer()
|
||||
# Cleanup audio player (handles both TTS and audio books)
|
||||
self.audioPlayer.cleanup()
|
||||
|
||||
Reference in New Issue
Block a user