This commit is contained in:
Drapersniper
2020-10-06 10:26:36 +01:00
parent bf6b7a95bb
commit 59659b1d03
3 changed files with 41 additions and 30 deletions

View File

@@ -61,6 +61,8 @@ class GlobalCacheWrapper:
if any([not query or not query.valid or query.is_spotify or query.is_local]): if any([not query or not query.valid or query.is_spotify or query.is_local]):
return {} return {}
await self._get_api_key() await self._get_api_key()
if self.api_key is None:
return {}
search_response = "error" search_response = "error"
query = query.lavalink_query query = query.lavalink_query
with contextlib.suppress(aiohttp.ContentTypeError, asyncio.TimeoutError): with contextlib.suppress(aiohttp.ContentTypeError, asyncio.TimeoutError):
@@ -91,6 +93,8 @@ class GlobalCacheWrapper:
search_response = "error" search_response = "error"
params = {"title": title, "author": author} params = {"title": title, "author": author}
await self._get_api_key() await self._get_api_key()
if self.api_key is None:
return {}
with contextlib.suppress(aiohttp.ContentTypeError, asyncio.TimeoutError): with contextlib.suppress(aiohttp.ContentTypeError, asyncio.TimeoutError):
async with self.session.get( async with self.session.get(
api_url, api_url,
@@ -117,16 +121,13 @@ class GlobalCacheWrapper:
return return
query = Query.process_input(query, self.cog.local_folder_current_path) 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"]: if llresponse.has_error or llresponse.load_type.value in ["NO_MATCHES", "LOAD_FAILED"]:
await asyncio.sleep(0)
return return
if query and query.valid and query.is_youtube: if query and query.valid and query.is_youtube:
query = query.lavalink_query query = query.lavalink_query
else: else:
await asyncio.sleep(0)
return None return None
await self._get_api_key() await self._get_api_key()
if self.api_key is None: if self.api_key is None:
await asyncio.sleep(0)
return None return None
api_url = f"{_API_URL}api/v2/queries" api_url = f"{_API_URL}api/v2/queries"
async with self.session.post( async with self.session.post(
@@ -164,6 +165,7 @@ class GlobalCacheWrapper:
global_api_user = copy(self.cog.global_api_user) global_api_user = copy(self.cog.global_api_user)
await self._get_api_key() await self._get_api_key()
is_enabled = await self.config.global_db_enabled() is_enabled = await self.config.global_db_enabled()
await self._get_api_key()
if (not is_enabled) or self.api_key is None: if (not is_enabled) or self.api_key is None:
return global_api_user return global_api_user
with contextlib.suppress(Exception): with contextlib.suppress(Exception):

View File

@@ -516,6 +516,15 @@ class AudioAPIInterface:
if isinstance(llresponse, LoadResult): if isinstance(llresponse, LoadResult):
track_object = llresponse.tracks track_object = llresponse.tracks
elif val: elif val:
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: try:
(result, called_api) = await self.fetch_track( (result, called_api) = await self.fetch_track(
ctx, ctx,

View File

@@ -138,7 +138,7 @@ class StartUpTasks(MixinMeta, metaclass=CompositeMetaClass):
"""Hello, this message brings you an important update regarding the core Audio cog: """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. 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. 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 <https://discord.gg/red> and run `?audioapi register` in the #testing channel. An access token is **required** to use this API. To obtain this token you may join <https://discord.gg/red> and run `?audioapi register` in the #testing channel.