From dba3388567818cb5c60be9d406d3e1cccc84b3ea Mon Sep 17 00:00:00 2001 From: salmonik Date: Wed, 29 Apr 2026 14:22:03 +0200 Subject: Refactor database connections and add integration tests - Use context managers for sqlite3 connections in cron, vclogs, and database utils - Add URL helper utility for yt-dlp with clean_url_for_ytdlp function - Add slow integration test markers and new integration test files - Fix test imports to use conftest directly instead of tests.conftest - Improve downloader error handling and use COPYPARTY_URL_UPLOAD env var - Update pytest.ini with slow test markers and warning filters - Document slow test usage in AGENTS.md --- cogs/downloader.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'cogs/downloader.py') diff --git a/cogs/downloader.py b/cogs/downloader.py index d829ed7..900bafb 100644 --- a/cogs/downloader.py +++ b/cogs/downloader.py @@ -12,6 +12,7 @@ import re import yt_dlp from discord.ext import commands import aiofiles +from cogs.utils.url_helper import clean_url_for_ytdlp logger = logging.getLogger(__name__) @@ -61,6 +62,10 @@ class Downloader(commands.Cog): file_data = response["content"] await ctx.respond(file=discord.File(file_data)) else: + error_msg = response["content"] + if 'details' in response: + error_msg += f"\n{response['details']}" + await ctx.respond(f"Błąd: {error_msg}", ephemeral=True) logger.error(f"Error: {response['content']}") if 'details' in response: logger.error(f"Details: {response['details']}") @@ -68,6 +73,7 @@ class Downloader(commands.Cog): @staticmethod async def download_standalone(url: str, catbox: bool = False, fformat: str = "mp4", filename_user: str | None = None): try: + url = clean_url_for_ytdlp(url) logger.info(f"Downloading {url} as {fformat}") with tempfile.TemporaryDirectory(delete=False) as temp_dir: @@ -157,12 +163,18 @@ class Downloader(commands.Cog): files = {'f': (filename, content, 'application/octet-stream')} headers = {'Cookie': f'cppwd={os.getenv("COPYPARTY_PASSWORD")}'} params = {'j': '1', 'ck': 'b2'} - base_url = "https://catbox.2137697.xyz/sperma/" + base_url = os.getenv("COPYPARTY_URL_UPLOAD") response = requests.post(base_url, files=files, headers=headers, params=params) if response.status_code in [200, 201]: return Downloader._handle_upload_success(response, filename, temp_dir) + elif response.status_code == 413: + return Downloader._create_error_response( + "File too large for upload", + "Plik jest za duży, by wysłać go na serwer (limit to ok. 100MB)", + temp_dir + ) else: return Downloader._create_error_response( f"Server returned {response.status_code}", -- cgit v1.2.3