""" 测试 OSS URL 生成修复 """ import os import sys # 添加 lover 目录到路径 sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'lover')) from lover.config import settings from lover.oss_utils import test_oss_connection, upload_audio_file, delete_audio_file import logging logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) def test_url_generation(): """测试 URL 生成是否正确""" print("=" * 60) print("测试 OSS URL 生成") print("=" * 60) # 显示配置 print(f"\n📋 当前配置:") print(f" Bucket: {settings.ALIYUN_OSS_BUCKET_NAME}") print(f" Endpoint: {settings.ALIYUN_OSS_ENDPOINT}") print(f" CDN Domain: {settings.ALIYUN_OSS_CDN_DOMAIN}") print(f" AccessKeyId: {settings.ALIYUN_OSS_ACCESS_KEY_ID[:8]}***") # 测试连接 print(f"\n🔌 测试 OSS 连接...") if not test_oss_connection(): print("❌ OSS 连接失败") return False print("✅ OSS 连接成功") # 创建测试音频数据 print(f"\n📤 测试文件上传...") test_audio = b"test audio data" * 100 # 简单的测试数据 try: file_url = upload_audio_file(test_audio, "mp3") print(f"✅ 文件上传成功") print(f"📍 生成的 URL: {file_url}") # 验证 URL 格式 if file_url.startswith('https://') or file_url.startswith('http://'): print("✅ URL 格式正确(包含协议)") else: print(f"❌ URL 格式错误: {file_url}") return False # 验证 URL 结构 if settings.ALIYUN_OSS_BUCKET_NAME in file_url: print("✅ URL 包含 Bucket 名称") else: print(f"⚠️ URL 不包含 Bucket 名称") # 清理测试文件 print(f"\n🗑️ 清理测试文件...") if delete_audio_file(file_url): print("✅ 测试文件已删除") else: print("⚠️ 测试文件删除失败(可能需要手动清理)") print(f"\n" + "=" * 60) print("🎉 OSS URL 生成测试通过!") print("=" * 60) return True except Exception as e: print(f"❌ 测试失败: {e}") import traceback traceback.print_exc() return False if __name__ == "__main__": success = test_url_generation() sys.exit(0 if success else 1)