More cleanup.
[python_utils.git] / google_assistant.py
index b0aabf37095ef986b35b726d02700f55d017f78b..adfdca49afb99bc3862611649ad5661ab558249c 100644 (file)
@@ -1,9 +1,12 @@
 #!/usr/bin/env python3
 
 #!/usr/bin/env python3
 
+"""A module to serve as a local client library around HTTP calls to
+the Google Assistant via a local gateway."""
+
 import logging
 import logging
-import sys
 import warnings
 import warnings
-from typing import NamedTuple, Optional
+from dataclasses import dataclass
+from typing import Optional
 
 import requests
 import speech_recognition as sr  # type: ignore
 
 import requests
 import speech_recognition as sr  # type: ignore
@@ -32,11 +35,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"""
 
     def __repr__(self):
         return f"""
@@ -57,7 +63,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).
     """
     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'],
     payload = {
         "command": cmd,
         "user": config.config['google_assistant_username'],
@@ -76,7 +82,7 @@ def ask_google(cmd: str, *, recognize_speech=True) -> GoogleResponse:
         if success:
             logger.debug('Google request succeeded.')
             if len(response) > 0:
         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()
         audio = f"{config.config['google_assistant_bridge']}{j['audio']}"
         if recognize_speech:
             recognizer = sr.Recognizer()
@@ -92,7 +98,7 @@ def ask_google(cmd: str, *, recognize_speech=True) -> GoogleResponse:
                     audio_transcription = recognizer.recognize_google(
                         speech,
                     )
                     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.'
                 except sr.UnknownValueError as e:
                     logger.exception(e)
                     msg = 'Unable to parse Google assistant\'s response.'
@@ -114,4 +120,3 @@ def ask_google(cmd: str, *, recognize_speech=True) -> GoogleResponse:
             audio_url=audio,
             audio_transcription=audio_transcription,
         )
             audio_url=audio,
             audio_transcription=audio_transcription,
         )
-        sys.exit(-1)