From 18ea01dc33cf5ef8402f4ef9193801bf7288e106 Mon Sep 17 00:00:00 2001 From: salmonik Date: Sat, 28 Mar 2026 00:17:18 +0100 Subject: make it work + visual changes --- cogs/music/audio_playback.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'cogs/music/audio_playback.py') diff --git a/cogs/music/audio_playback.py b/cogs/music/audio_playback.py index 3d4f453..d23809a 100644 --- a/cogs/music/audio_playback.py +++ b/cogs/music/audio_playback.py @@ -5,8 +5,7 @@ import os import logging -from pathlib import Path - +import urllib.parse import discord import mutagen @@ -74,13 +73,17 @@ class AudioPlaybackManager: async def prepare_audio_source(source, is_url, display_name): """Prepare audio source for playback. Returns (source, final_display_name).""" if is_url: - # For URLs, use FFmpeg with the direct URL + # For URLs, use FFmpeg with the direct URL and extract clean filename ffmpeg_options = { 'options': '-reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 5', 'before_options': '-reconnect 1 -reconnect_streamed 1 -reconnect_delay_max 5' } audio_source = discord.FFmpegPCMAudio(source, **ffmpeg_options) - return audio_source, display_name + # Extract clean filename for URL (remove extension and decode URL encoding) + filename = os.path.basename(source.split('?')[0]) # Remove query parameters + filename = urllib.parse.unquote(filename) # Decode URL encoding + clean_filename = os.path.splitext(filename)[0] # Remove file extension + return audio_source, clean_filename else: # For local files, use default options audio_source = discord.FFmpegPCMAudio(source=source) @@ -93,8 +96,11 @@ class AudioPlaybackManager: if title: display_name = title logger.debug(f"Read metadata - title: {title}") + else: + display_name = os.path.splitext(os.path.basename(source))[0] except Exception as e: logger.warning(f"Could not read metadata from {source}: {str(e)}") + display_name = os.path.splitext(os.path.basename(source))[0] return audio_source, display_name -- cgit v1.2.3