#!/usr/bin/env python3 """ 测试任务382的图片和音频资源是否可访问 """ import requests from urllib.parse import urlparse # 任务382的资源URL IMAGE_URL = "https://hello12312312.oss-cn-hangzhou.aliyuncs.com/lover/64/images/1772184154_female.png" AUDIO_URL = "https://hello12312312.oss-cn-hangzhou.aliyuncs.com/uploads/20260126/eb0d206f4ccd8e38ce1e5f014fcced4e.mp3" def test_url(url, resource_type): """测试URL是否可访问""" print(f"\n{'='*80}") print(f"测试 {resource_type}") print(f"{'='*80}") print(f"URL: {url}") try: # 发送HEAD请求检查资源是否存在 response = requests.head(url, timeout=10, allow_redirects=True) print(f"状态码: {response.status_code}") if response.status_code == 200: print("✅ 资源可访问") # 获取资源信息 content_type = response.headers.get('Content-Type', 'Unknown') content_length = response.headers.get('Content-Length', 'Unknown') print(f"内容类型: {content_type}") if content_length != 'Unknown': size_mb = int(content_length) / (1024 * 1024) print(f"文件大小: {content_length} bytes ({size_mb:.2f} MB)") # 如果是图片,尝试获取图片信息 if resource_type == "图片" and content_type.startswith('image'): try: from PIL import Image from io import BytesIO img_response = requests.get(url, timeout=10) img = Image.open(BytesIO(img_response.content)) print(f"图片尺寸: {img.size[0]} x {img.size[1]}") print(f"图片格式: {img.format}") print(f"图片模式: {img.mode}") except ImportError: print("提示: 安装 Pillow 可以获取更多图片信息 (pip install Pillow)") except Exception as e: print(f"获取图片详细信息失败: {e}") return True elif response.status_code == 403: print("❌ 访问被拒绝(403 Forbidden)") print("可能原因:") print(" - OSS权限配置问题") print(" - 需要签名访问") print(" - IP白名单限制") return False elif response.status_code == 404: print("❌ 资源不存在(404 Not Found)") print("可能原因:") print(" - 文件已被删除") print(" - URL路径错误") print(" - Bucket名称错误") return False else: print(f"❌ 请求失败,状态码: {response.status_code}") return False except requests.exceptions.Timeout: print("❌ 请求超时") print("可能原因:") print(" - 网络连接问题") print(" - OSS服务响应慢") return False except requests.exceptions.ConnectionError as e: print(f"❌ 连接错误: {e}") print("可能原因:") print(" - 网络不可达") print(" - DNS解析失败") print(" - 防火墙阻止") return False except Exception as e: print(f"❌ 未知错误: {e}") return False def main(): print("="*80) print("任务382资源可访问性测试") print("="*80) # 测试图片 image_ok = test_url(IMAGE_URL, "图片") # 测试音频 audio_ok = test_url(AUDIO_URL, "音频") # 总结 print(f"\n{'='*80}") print("测试总结") print("="*80) print(f"图片URL: {'✅ 可访问' if image_ok else '❌ 不可访问'}") print(f"音频URL: {'✅ 可访问' if audio_ok else '❌ 不可访问'}") if image_ok and audio_ok: print("\n✅ 所有资源都可访问,问题可能在其他地方") print("\n建议检查:") print(" 1. 查看数据库中的完整错误信息") print(" 2. 检查用户视频生成次数") print(" 3. 查看应用日志") print(" 4. 检查EMO检测结果") else: print("\n❌ 部分资源不可访问,这可能是任务失败的原因") print("\n建议:") print(" 1. 检查OSS配置和权限") print(" 2. 确认文件是否存在") print(" 3. 检查网络连接") print("\n" + "="*80) if __name__ == "__main__": main()