Repository: Cog-Creators/Red-DiscordBot

Issue:
Streams | smashcast api appears to be dead
### What Red version are you using?

3.4.9

### Cog name

Streams

### Command name

streamalert smashcast

### What did you expect to happen?

Add a channel and successfully start notifying. 

### What actually happened?

the command errors a name or service does not exist

### How can we reproduce this error?

1. streamalert smashcast testing
2. error will appear


### Anything else?

_No response_


Discussion:

Resolving patch:
diff --git a/redbot/cogs/streams/streams.py b/redbot/cogs/streams/streams.py
--- a/redbot/cogs/streams/streams.py
+++ b/redbot/cogs/streams/streams.py
@@ -6,7 +6,6 @@
 from redbot.core.utils.chat_formatting import escape, pagify
 
 from .streamtypes import (
-    HitboxStream,
     PicartoStream,
     Stream,
     TwitchStream,
@@ -234,12 +233,6 @@ async def youtubestream(self, ctx: commands.Context, channel_id_or_name: str):
             )
         await self.check_online(ctx, stream)
 
-    @commands.command()
-    async def smashcast(self, ctx: commands.Context, channel_name: str):
-        """Check if a smashcast channel is live."""
-        stream = HitboxStream(_bot=self.bot, name=channel_name)
-        await self.check_online(ctx, stream)
-
     @commands.command()
     async def picarto(self, ctx: commands.Context, channel_name: str):
         """Check if a Picarto channel is live."""
@@ -249,7 +242,7 @@ async def picarto(self, ctx: commands.Context, channel_name: str):
     async def check_online(
         self,
         ctx: commands.Context,
-        stream: Union[PicartoStream, HitboxStream, YoutubeStream, TwitchStream],
+        stream: Union[PicartoStream, YoutubeStream, TwitchStream],
     ):
         try:
             info = await stream.is_online()
@@ -323,11 +316,6 @@ async def youtube_alert(self, ctx: commands.Context, channel_name_or_id: str):
         """Toggle alerts in this channel for a YouTube stream."""
         await self.stream_alert(ctx, YoutubeStream, channel_name_or_id)
 
-    @streamalert.command(name="smashcast")
-    async def smashcast_alert(self, ctx: commands.Context, channel_name: str):
-        """Toggle alerts in this channel for a Smashcast stream."""
-        await self.stream_alert(ctx, HitboxStream, channel_name)
-
     @streamalert.command(name="picarto")
     async def picarto_alert(self, ctx: commands.Context, channel_name: str):
         """Toggle alerts in this channel for a Picarto stream."""
diff --git a/redbot/cogs/streams/streamtypes.py b/redbot/cogs/streams/streamtypes.py
--- a/redbot/cogs/streams/streamtypes.py
+++ b/redbot/cogs/streams/streamtypes.py
@@ -435,45 +435,6 @@ def __repr__(self):
         return "<{0.__class__.__name__}: {0.name} (ID: {0.id})>".format(self)
 
 
-class HitboxStream(Stream):
-
-    token_name = None  # This streaming services don't currently require an API key
-
-    async def is_online(self):
-        url = "https://api.smashcast.tv/media/live/" + self.name
-
-        async with aiohttp.ClientSession() as session:
-            async with session.get(url) as r:
-                # data = await r.json(encoding='utf-8')
-                data = await r.text()
-        data = json.loads(data, strict=False)
-        if "livestream" not in data:
-            raise StreamNotFound()
-        elif data["livestream"][0]["media_is_live"] == "0":
-            # self.already_online = False
-            raise OfflineStream()
-        elif data["livestream"][0]["media_is_live"] == "1":
-            # self.already_online = True
-            return self.make_embed(data)
-
-        raise APIError(data)
-
-    def make_embed(self, data):
-        base_url = "https://edge.sf.hitbox.tv"
-        livestream = data["livestream"][0]
-        channel = livestream["channel"]
-        url = channel["channel_link"]
-        embed = discord.Embed(title=livestream["media_status"], url=url, color=0x98CB00)
-        embed.set_author(name=livestream["media_name"])
-        embed.add_field(name=_("Followers"), value=humanize_number(channel["followers"]))
-        embed.set_thumbnail(url=base_url + channel["user_logo"])
-        if livestream["media_thumbnail"]:
-            embed.set_image(url=rnd(base_url + livestream["media_thumbnail"]))
-        embed.set_footer(text=_("Playing: ") + livestream["category_name"])
-
-        return embed
-
-
 class PicartoStream(Stream):
 
     token_name = None  # This streaming services don't currently require an API key


Test patch: