From 08cc3817045ea65de2217c83aa63d0f038c6cf06 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Wed, 1 Apr 2026 22:19:52 +0000 Subject: [PATCH] Optimize Qobuz secret testing using asyncio.as_completed Co-authored-by: davidjuarezdev <230496599+davidjuarezdev@users.noreply.github.com> --- streamrip/client/qobuz.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/streamrip/client/qobuz.py b/streamrip/client/qobuz.py index 734e2b82..c9163a03 100644 --- a/streamrip/client/qobuz.py +++ b/streamrip/client/qobuz.py @@ -409,14 +409,17 @@ async def _test_secret(self, secret: str) -> Optional[str]: return None async def _get_valid_secret(self, secrets: list[str]) -> str: - results = await asyncio.gather( - *[self._test_secret(secret) for secret in secrets], - ) - working_secrets = [r for r in results if r is not None] - if len(working_secrets) == 0: + tasks = [asyncio.create_task(self._test_secret(secret)) for secret in secrets] + try: + for coro in asyncio.as_completed(tasks): + result = await coro + if result is not None: + return result raise InvalidAppSecretError(secrets) - - return working_secrets[0] + finally: + for task in tasks: + if not task.done(): + task.cancel() async def _request_file_url( self,