Handle empty responses from whisper to prevent JSONDecodeErrors

This commit is contained in:
JayZed 2024-10-30 16:58:33 -04:00 committed by GitHub
parent 4eb09c546d
commit 2c8712f891
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -5,6 +5,7 @@ from datetime import timedelta
from requests import Session
from requests.exceptions import JSONDecodeError
from subliminal_patch.subtitle import Subtitle
from subliminal_patch.providers import Provider
from subliminal import __short_version__
@ -269,10 +270,19 @@ class WhisperAIProvider(Provider):
params={'encode': 'false'},
files={'audio_file': out},
timeout=(self.response, self.timeout))
try:
results = r.json()
except JSONDecodeError:
results = {}
logger.debug(f"Whisper detected language of {path} as {r.json()['detected_language']}")
if len(results) == 0:
logger.info(f"Whisper returned empty response when detecting language")
return None
return whisper_get_language(r.json()["language_code"], r.json()["detected_language"])
logger.debug(f"Whisper detected language of {path} as {results['detected_language']}")
return whisper_get_language(results["language_code"], results["detected_language"])
def query(self, language, video):
if language not in self.languages: