X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;f=google_assistant.py;h=b767df75f4a56f4b4ec84be3abedd16b2e8a591b;hb=532df2c5b57c7517dfb3dddd8c1358fbadf8baf3;hp=b0aabf37095ef986b35b726d02700f55d017f78b;hpb=6e8e3458d9641394b8f061d55ba569a72e6a8493;p=python_utils.git diff --git a/google_assistant.py b/google_assistant.py index b0aabf3..b767df7 100644 --- a/google_assistant.py +++ b/google_assistant.py @@ -1,9 +1,16 @@ #!/usr/bin/env python3 +# © Copyright 2021-2022, Scott Gasch + +"""A module to serve as a local client library around HTTP calls to +the Google Assistant via a local gateway. + +""" + import logging -import sys import warnings -from typing import NamedTuple, Optional +from dataclasses import dataclass +from typing import Optional import requests import speech_recognition as sr # type: ignore @@ -32,11 +39,14 @@ parser.add_argument( ) -class GoogleResponse(NamedTuple): - success: bool - response: str - audio_url: str - audio_transcription: Optional[str] # None if not available. +@dataclass +class GoogleResponse: + """A response wrapper.""" + + success: bool = False + response: str = '' + audio_url: str = '' + audio_transcription: Optional[str] = None # None if not available. def __repr__(self): return f""" @@ -57,7 +67,7 @@ def ask_google(cmd: str, *, recognize_speech=True) -> GoogleResponse: is True, perform speech recognition on the audio response from Google so as to translate it into text (best effort, YMMV). """ - logging.debug(f"Asking google: '{cmd}'") + logging.debug("Asking google: '%s'", cmd) payload = { "command": cmd, "user": config.config['google_assistant_username'], @@ -76,7 +86,7 @@ def ask_google(cmd: str, *, recognize_speech=True) -> GoogleResponse: if success: logger.debug('Google request succeeded.') if len(response) > 0: - logger.debug(f"Google said: '{response}'") + logger.debug("Google said: '%s'", response) audio = f"{config.config['google_assistant_bridge']}{j['audio']}" if recognize_speech: recognizer = sr.Recognizer() @@ -92,7 +102,7 @@ def ask_google(cmd: str, *, recognize_speech=True) -> GoogleResponse: audio_transcription = recognizer.recognize_google( speech, ) - logger.debug(f"Transcription: '{audio_transcription}'") + logger.debug("Transcription: '%s'", audio_transcription) except sr.UnknownValueError as e: logger.exception(e) msg = 'Unable to parse Google assistant\'s response.' @@ -114,4 +124,3 @@ def ask_google(cmd: str, *, recognize_speech=True) -> GoogleResponse: audio_url=audio, audio_transcription=audio_transcription, ) - sys.exit(-1)