From e0072784ca078d3a3c9d757ae773676c833abd86 Mon Sep 17 00:00:00 2001 From: Joinemm Date: Sat, 14 Oct 2023 15:54:50 +0300 Subject: [PATCH] Add preliminary fm server functionality --- cogs/fm.py | 105 +++++++++++++++++++++++++++++++++++++++------ main.py | 3 ++ modules/lastfm.py | 3 +- modules/misobot.py | 5 ++- 4 files changed, 102 insertions(+), 14 deletions(-) diff --git a/cogs/fm.py b/cogs/fm.py index 8e2d080..74817a2 100644 --- a/cogs/fm.py +++ b/cogs/fm.py @@ -10,7 +10,7 @@ import urllib.parse from dataclasses import dataclass from enum import Enum, auto -from typing import TYPE_CHECKING, Annotated, Callable, Literal, Optional, Union +from typing import TYPE_CHECKING, Annotated, Any, Callable, Literal, Optional, Union import arrow import discord @@ -179,11 +179,11 @@ def parse(self, argument: str): class LastFm(commands.Cog): """LastFM commands""" - ICON = "🎵" LASTFM_RED = "e31c23" LASTFM_ICON_URL = "https://i.imgur.com/dMeDkPH.jpg" def __init__(self, bot): + self.icon = "🎵" self.bot: MisoBot = bot self.api = LastFmApi(bot) @@ -654,7 +654,10 @@ async def artist_overview(self, ctx: MisoContext, timeframe: Period, artist: str soup = await self.api.scrape_page(url, authenticated=True) try: - albumsdiv, tracksdiv = soup.select(".chartlist", limit=2) + chartlists = soup.select(".chartlist") + # there are "ghost" chartlists that mess up web scraping + albumsdiv = chartlists[1] + tracksdiv = chartlists[3] except ValueError: return raise_no_artist_plays(artist, timeframe) @@ -674,7 +677,7 @@ async def artist_overview(self, ctx: MisoContext, timeframe: Period, artist: str username = util.displayname(ctx.lfm.target_user, escape=False) content.set_author( - name=f"{username} — {formatted_name} — " + name=f"{username} | {formatted_name} — " + ( f"{timeframe.display().capitalize()} overview" if timeframe != timeframe.OVERALL @@ -750,13 +753,12 @@ def filter_artist(ta_data: dict): inline=render_inline, ) - content.description = ( - artistinfo["bio"]["summary"] - .split(" dict: "format": "json", } | {k: v for k, v in params.items() if v is not None} - print(request_params) + if self.bot.debug: + logger.info(request_params) async with self.bot.session.get( self.API_BASE_URL, params=request_params diff --git a/modules/misobot.py b/modules/misobot.py index edef25a..1c34c09 100644 --- a/modules/misobot.py +++ b/modules/misobot.py @@ -95,6 +95,7 @@ def __init__( self.db = maria.MariaDB() self.cache = cache.Cache(self) self.keychain = Keychain() + self.debug = False self.version = "5.1" self.extensions_loaded = False self.redis: Redis = Redis() @@ -191,7 +192,9 @@ async def cooldown_check(ctx: MisoContext): bucket = ctx.bot.global_cd.get_bucket(ctx.message) if bucket: if retry_after := bucket.update_rate_limit(): - raise commands.CommandOnCooldown(bucket, retry_after, commands.BucketType.member) + raise commands.CommandOnCooldown( + bucket, retry_after, commands.BucketType.member + ) return True @property