Created
September 24, 2022 11:32
-
-
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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