From cd8ed8bc5793985df2c1692072a932ceee517b95 Mon Sep 17 00:00:00 2001 From: salmonik Date: Wed, 8 Jul 2026 02:13:35 +0200 Subject: OPEN THE RUST GATES Signed-off-by: salmonik --- cogs/web.py | 90 ------------------------------------------------------------- 1 file changed, 90 deletions(-) delete mode 100644 cogs/web.py (limited to 'cogs/web.py') diff --git a/cogs/web.py b/cogs/web.py deleted file mode 100644 index fd22f9f..0000000 --- a/cogs/web.py +++ /dev/null @@ -1,90 +0,0 @@ -# This file is part of Senator Sperma -# Licensed under the GPL-3.0 License -# Copyright (C) 2026 Salmonik @ salmonik@tuta.io -# https://codeberg.org/salmonik/senator-sperma - -import discord -from discord import Embed -from discord.ext import commands -import requests -from bs4 import BeautifulSoup -import urllib.parse -import yt_dlp -import logging -from cogs.utils.url_helper import clean_url_for_ytdlp - -logger = logging.getLogger(__name__) - - -class Web(commands.Cog): - def __init__(self, bot): - self.bot = bot - - def _extract_youtube_title(self, url): - """Extract YouTube video title if URL is a YouTube link.""" - if "youtube.com/watch" not in url: - return None - - url = clean_url_for_ytdlp(url) - logger.info("youtube link") - try: - ydl_opts = {"quiet": True, "nowarnings": True} - with yt_dlp.YoutubeDL(ydl_opts) as ydl: - info = ydl.extract_info(url, download=False) - return info.get("title") if info else None - except Exception: - pass - return None - - def _process_search_results(self, links, query): - """Process search results and create embed.""" - embed = Embed(title="Search Results", description=f"Top results for: {query}", color=0x1E90FF) - view = discord.ui.View(disable_on_timeout=True) - - for i, link in enumerate(links[:5], start=1): - title = link.text - youtube_title = self._extract_youtube_title(link.get("href")) - if youtube_title: - title = youtube_title - - embed.add_field(name=f"Result {i}", value=f"[{title}]({link.get('href')})", inline=False) - - return embed, view - - @commands.slash_command( - name="web", - description="Search the web using DuckDuckGo" - ) - async def web( - self, - ctx: discord.ApplicationContext, - query: str - ): - await ctx.defer() - headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"} - encoded_query = urllib.parse.quote_plus(query) - url = f"https://duckduckgo.com/html/?q={encoded_query}" - response = requests.get(url, headers=headers) - - logger.info(f"Query: {query}") - - if response.status_code != 200: - await ctx.respond(content=f"Error: {response.status_code}", ephemeral=True) - logger.error(f"Error: {response.status_code}") - return - - soup = BeautifulSoup(response.text, "html.parser") - links = soup.find_all("a", class_="result__a") - - if not links: - await ctx.respond(content="No results found.", ephemeral=True) - logger.warning("No results found") - return - - embed, view = self._process_search_results(links, query) - await ctx.respond(embed=embed, view=view) - logger.info("Search results sent") - - -def setup(bot): - bot.add_cog(Web(bot)) -- cgit v1.2.3