diff options
| author | Pratyush Desai | 2025-12-05 19:39:55 +0100 |
|---|---|---|
| committer | Pratyush Desai | 2025-12-05 19:39:55 +0100 |
| commit | 3e721da37f56000a5e4e44fe26b51a2455a9a0aa (patch) | |
| tree | a91a61ad63e869c9488f75d65cf49876e249671e | |
| parent | ff2bbfcc250450829a9a1978871643c6d214e071 (diff) | |
| parent | c21d972266e0aa996a027a27aaca84acdcbfee45 (diff) | |
| download | listenbrainz-3e721da37f56000a5e4e44fe26b51a2455a9a0aa.tar.gz listenbrainz-3e721da37f56000a5e4e44fe26b51a2455a9a0aa.tar.bz2 listenbrainz-3e721da37f56000a5e4e44fe26b51a2455a9a0aa.zip | |
| -rw-r--r-- | plugin.py | 39 |
1 files changed, 30 insertions, 9 deletions
@@ -29,6 +29,7 @@ ### import liblistenbrainz +from liblistenbrainz.errors import ListenBrainzAPIException from supybot import utils, plugins, ircutils, callbacks from supybot.commands import * @@ -43,8 +44,7 @@ class ListenBrainz(callbacks.Plugin): threaded = True def __init__(self, irc): - self.__parent = super(ListenBrainz, self) - self.__parent.__init__(irc) + super().__init__(irc) self.client = liblistenbrainz.ListenBrainz() self.DISPLAY_LIMIT = 3 @@ -54,8 +54,16 @@ class ListenBrainz(callbacks.Plugin): Announces the track currently being played by <user>. """ - listen = self.client.get_playing_now(user) - if listen is None: + try: + listen = self.client.get_playing_now(user) + except ListenBrainzAPIException as e: + irc.error(f"ListenBrainz API Error fetching listens for {user}: {e}", Raise=True) + return + except Exception as e: + irc.error(f"An unexpected error occurred: {e}", Raise=True) + return + + if not listen: response = f"{user} doen't seem to be listening to anything" else: response = ( @@ -72,8 +80,16 @@ class ListenBrainz(callbacks.Plugin): Announces total number of tracks scrobbled by <user> """ - count = self.client.get_user_listen_count(user) - if count is None: + try: + count = self.client.get_user_listen_count(user) + except ListenBrainzAPIException as e: + irc.error(f"ListenBrainz API Error fetching listens for {user}: {e}", Raise=True) + return + except Exception as e: + irc.error(f"An unexpected error occurred: {e}", Raise=True) + return + + if not count: response = "Nothing recorded" else: response = (f"{user} has recorded listening to {count} tracks") @@ -89,7 +105,9 @@ class ListenBrainz(callbacks.Plugin): try: data = self.client.get_user_recordings(user) payload = data.get("payload", {}) - + except ListenBrainzAPIException as e: + irc.error(f"ListenBrainz API Error fetching listens for {user}: {e}", Raise=True) + return except Exception as e: irc.error(f"An unexpected error occurred: {e}", Raise=True) return @@ -100,7 +118,7 @@ class ListenBrainz(callbacks.Plugin): irc.reply(f"{user} has no recorded tracks.") return - top_tracks = recordings[:DISPLAY_LIMIT] + top_tracks = recordings[:self.DISPLAY_LIMIT] header = f"{user}'s Top {len(top_tracks)} Tracks (Total unique tracks: {total_tracks:,}):" irc.reply(header) for i, track in enumerate(top_tracks): @@ -129,6 +147,9 @@ class ListenBrainz(callbacks.Plugin): try: data = self.client.get_user_releases(user) payload = data.get("payload", {}) + except ListenBrainzAPIException as e: + irc.error(f"ListenBrainz API Error fetching listens for {user}: {e}", Raise=True) + return except Exception as e: irc.error(f"An unexpected error occurred: {e}", Raise=True) return @@ -140,7 +161,7 @@ class ListenBrainz(callbacks.Plugin): irc.reply(f"{user} has no recorded releases.") return - top_releases = releases[:DISPLAY_LIMIT] + top_releases = releases[:self.DISPLAY_LIMIT] header = f"{user}'s Top {len(top_releases)} Releases (Total unique releases: {total_albums:,}):" irc.reply(header) |
