Ai_GirlFriend/test_oss_url_fix.py

81 lines
2.4 KiB
Python
Raw Permalink Normal View History

2026-03-05 13:34:40 +08:00
"""
测试 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)