Skip to content

Instantly share code, notes, and snippets.

@swapnildroid
Created September 24, 2022 11:32
Show Gist options
  • Save swapnildroid/67aa1439f9905449bd1064d6f783a7bb to your computer and use it in GitHub Desktop.
Save swapnildroid/67aa1439f9905449bd1064d6f783a7bb to your computer and use it in GitHub Desktop.
Speak battery status on Linux (ubuntu/Lubuntu), requires vlc, text to speech, input timeout python libs.
import subprocess, time, vlc
from gtts import gTTS
from inputimeout import inputimeout, TimeoutOccurred
print("Hello, world!\n")
# upower -i /org/freedesktop/UPower/devices/battery_BAT1
language = 'en'
playLines = ""
exitPromptEmpty = ""
while exitPromptEmpty == '':
# Read battery status.
result = subprocess.run(["upower", "-i", "/org/freedesktop/UPower/devices/battery_BAT1"], stdout=subprocess.PIPE).stdout.decode("utf-8")
# Filter battery status.
for line in result.splitlines():
if ("state" in line):
print(line)
playLines = playLines + line
elif ("time to empty" in line):
print(line)
playLines = playLines + line
elif ("percentage" in line):
print(line)
playLines = playLines + line
# Prepare audio from filtered battery status.
myobj = gTTS(text=playLines, lang=language, slow=False)
myobj.save("welcome.mp3")
# Play battery status audio.
player = vlc.MediaPlayer("welcome.mp3")
player.play()
time.sleep(1.5)
duration = player.get_length() / 1000
#Prompt for exit until timeout.
try:
exitPromptEmpty = inputimeout(prompt='Enter any char to exit: ', timeout=120)
except TimeoutOccurred:
exitPromptEmpty = ''
if exitPromptEmpty == '':
print("Continuing reading battery status...")
else:
print("Exiting battery read status")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment