From 59659b1d03395c2b776db9dcc4492974d63ba6b5 Mon Sep 17 00:00:00 2001 From: Drapersniper <27962761+drapersniper@users.noreply.github.com> Date: Tue, 6 Oct 2020 10:26:36 +0100 Subject: [PATCH] update --- redbot/cogs/audio/apis/global_db.py | 8 ++-- redbot/cogs/audio/apis/interface.py | 61 ++++++++++++++----------- redbot/cogs/audio/core/tasks/startup.py | 2 +- 3 files changed, 41 insertions(+), 30 deletions(-) diff --git a/redbot/cogs/audio/apis/global_db.py b/redbot/cogs/audio/apis/global_db.py index cae233bff..fe6f1f5d6 100644 --- a/redbot/cogs/audio/apis/global_db.py +++ b/redbot/cogs/audio/apis/global_db.py @@ -61,6 +61,8 @@ class GlobalCacheWrapper: if any([not query or not query.valid or query.is_spotify or query.is_local]): return {} await self._get_api_key() + if self.api_key is None: + return {} search_response = "error" query = query.lavalink_query with contextlib.suppress(aiohttp.ContentTypeError, asyncio.TimeoutError): @@ -91,6 +93,8 @@ class GlobalCacheWrapper: search_response = "error" params = {"title": title, "author": author} await self._get_api_key() + if self.api_key is None: + return {} with contextlib.suppress(aiohttp.ContentTypeError, asyncio.TimeoutError): async with self.session.get( api_url, @@ -117,16 +121,13 @@ class GlobalCacheWrapper: return query = Query.process_input(query, self.cog.local_folder_current_path) if llresponse.has_error or llresponse.load_type.value in ["NO_MATCHES", "LOAD_FAILED"]: - await asyncio.sleep(0) return if query and query.valid and query.is_youtube: query = query.lavalink_query else: - await asyncio.sleep(0) return None await self._get_api_key() if self.api_key is None: - await asyncio.sleep(0) return None api_url = f"{_API_URL}api/v2/queries" async with self.session.post( @@ -164,6 +165,7 @@ class GlobalCacheWrapper: global_api_user = copy(self.cog.global_api_user) await self._get_api_key() is_enabled = await self.config.global_db_enabled() + await self._get_api_key() if (not is_enabled) or self.api_key is None: return global_api_user with contextlib.suppress(Exception): diff --git a/redbot/cogs/audio/apis/interface.py b/redbot/cogs/audio/apis/interface.py index 665cc1f0f..45d07d456 100644 --- a/redbot/cogs/audio/apis/interface.py +++ b/redbot/cogs/audio/apis/interface.py @@ -516,32 +516,41 @@ class AudioAPIInterface: if isinstance(llresponse, LoadResult): track_object = llresponse.tracks elif val: - try: - (result, called_api) = await self.fetch_track( - ctx, - player, - Query.process_input(val, self.cog.local_folder_current_path), - forced=forced, - should_query_global=not should_query_global, - ) - except (RuntimeError, aiohttp.ServerDisconnectedError): - lock(ctx, False) - error_embed = discord.Embed( - colour=await ctx.embed_colour(), - title=_("The connection was reset while loading the playlist."), - ) - if notifier is not None: - await notifier.update_embed(error_embed) - break - except asyncio.TimeoutError: - lock(ctx, False) - error_embed = discord.Embed( - colour=await ctx.embed_colour(), - title=_("Player timeout, skipping remaining tracks."), - ) - if notifier is not None: - await notifier.update_embed(error_embed) - break + result = None + if should_query_global: + llresponse = await self.global_cache_api.get_call(val) + if llresponse: + if llresponse.get("loadType") == "V2_COMPACT": + llresponse["loadType"] = "V2_COMPAT" + llresponse = LoadResult(llresponse) + result = llresponse or None + if not result: + try: + (result, called_api) = await self.fetch_track( + ctx, + player, + Query.process_input(val, self.cog.local_folder_current_path), + forced=forced, + should_query_global=not should_query_global, + ) + except (RuntimeError, aiohttp.ServerDisconnectedError): + lock(ctx, False) + error_embed = discord.Embed( + colour=await ctx.embed_colour(), + title=_("The connection was reset while loading the playlist."), + ) + if notifier is not None: + await notifier.update_embed(error_embed) + break + except asyncio.TimeoutError: + lock(ctx, False) + error_embed = discord.Embed( + colour=await ctx.embed_colour(), + title=_("Player timeout, skipping remaining tracks."), + ) + if notifier is not None: + await notifier.update_embed(error_embed) + break track_object = result.tracks else: track_object = [] diff --git a/redbot/cogs/audio/core/tasks/startup.py b/redbot/cogs/audio/core/tasks/startup.py index d447396fe..18e01de7b 100644 --- a/redbot/cogs/audio/core/tasks/startup.py +++ b/redbot/cogs/audio/core/tasks/startup.py @@ -138,7 +138,7 @@ class StartUpTasks(MixinMeta, metaclass=CompositeMetaClass): """Hello, this message brings you an important update regarding the core Audio cog: Starting from Audio v2.3.0+ you can take advantage of the **Global Audio API**, a new service offered by the Cog-Creators organization that allows your bot to greatly reduce the amount of requests done to YouTube / Spotify. This reduces the likelihood of YouTube rate-limiting your bot for making requests too often. -See `[p]help audioset globalapi` for more informations. +See `[p]help audioset globalapi` for more information. Access to this service is disabled by default and **requires you to explicitly opt-in** to start using it. An access token is **required** to use this API. To obtain this token you may join and run `?audioapi register` in the #testing channel.