Spaces:
Running
Running
| import asyncio | |
| import os | |
| import sys | |
| import logging | |
| # 配置日志 | |
| logging.basicConfig( | |
| level=logging.DEBUG, | |
| format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' | |
| ) | |
| # 添加src目录到Python路径 | |
| sys.path.append(os.path.dirname(os.path.abspath(__file__))) | |
| from src.utils import download_and_save_image, localize_image_urls | |
| from src.config import Config | |
| # 设置为True启用本地化 | |
| Config.IMAGE_LOCALIZATION = True | |
| # 打开调试日志 | |
| os.environ["IMAGE_DEBUG"] = "true" | |
| # 确保目录存在 | |
| os.makedirs(Config.IMAGE_SAVE_DIR, exist_ok=True) | |
| async def test_single_download(): | |
| """测试单个图片下载""" | |
| # 使用一个可靠的图片URL进行测试 | |
| test_url = "https://pic.baidu.com/feed/b90e7bec54e736d1f9ddbe94c2691f254d4ade13.jpeg" | |
| print(f"测试单个图片下载: {test_url}") | |
| local_url = await download_and_save_image(test_url) | |
| print(f"下载结果: {local_url}") | |
| # 检查文件是否真的下载了 | |
| if local_url.startswith("http"): | |
| # 处理完整URL的情况 | |
| url_path = local_url.split(Config.BASE_URL, 1)[-1] | |
| if url_path.startswith("/static/"): | |
| relative_path = url_path[len("/static/"):] | |
| file_path = os.path.join(Config.STATIC_DIR, relative_path) | |
| print(f"完整URL转换为文件路径: {file_path}") | |
| if os.path.exists(file_path): | |
| print(f"文件存在: {file_path}, 大小: {os.path.getsize(file_path)} 字节") | |
| else: | |
| print(f"文件不存在: {file_path}") | |
| # 尝试查找可能的文件 | |
| dir_path = os.path.dirname(file_path) | |
| if os.path.exists(dir_path): | |
| print(f"目录存在: {dir_path}") | |
| print(f"目录内容: {os.listdir(dir_path)}") | |
| else: | |
| print(f"目录不存在: {dir_path}") | |
| else: | |
| print(f"URL格式异常: {local_url}") | |
| elif local_url.startswith("/static/"): | |
| # 从URL恢复实际的文件路径 | |
| relative_path = local_url[len("/static/"):] | |
| file_path = os.path.join(Config.STATIC_DIR, relative_path) | |
| print(f"相对URL转换为文件路径: {file_path}") | |
| if os.path.exists(file_path): | |
| print(f"文件存在: {file_path}, 大小: {os.path.getsize(file_path)} 字节") | |
| else: | |
| print(f"文件不存在: {file_path}") | |
| else: | |
| print("下载失败,返回了原始URL") | |
| async def test_multiple_downloads(): | |
| """测试多个图片下载""" | |
| test_urls = [ | |
| "https://pic.baidu.com/feed/b90e7bec54e736d1f9ddbe94c2691f254d4ade13.jpeg", | |
| "https://pic1.zhimg.com/v2-b78b719d8782ad5146851b87bbd3a9fb_r.jpg" | |
| ] | |
| print(f"\n测试多个图片下载: {test_urls}") | |
| local_urls = await localize_image_urls(test_urls) | |
| print(f"本地化结果: {local_urls}") | |
| # 验证所有文件是否下载成功 | |
| for i, url in enumerate(local_urls): | |
| print(f"\n检查文件 {i+1}:") | |
| if url.startswith("http"): | |
| # 处理完整URL的情况 | |
| if url.startswith(Config.BASE_URL): | |
| url_path = url.split(Config.BASE_URL, 1)[-1] | |
| if url_path.startswith("/static/"): | |
| relative_path = url_path[len("/static/"):] | |
| file_path = os.path.join(Config.STATIC_DIR, relative_path) | |
| print(f"完整URL转换为文件路径: {file_path}") | |
| if os.path.exists(file_path): | |
| print(f"文件 {i+1} 存在: {file_path}, 大小: {os.path.getsize(file_path)} 字节") | |
| else: | |
| print(f"文件 {i+1} 不存在: {file_path}") | |
| # 尝试查找可能的文件 | |
| dir_path = os.path.dirname(file_path) | |
| if os.path.exists(dir_path): | |
| print(f"目录存在: {dir_path}") | |
| print(f"目录内容: {os.listdir(dir_path)}") | |
| else: | |
| print(f"目录不存在: {dir_path}") | |
| else: | |
| print(f"URL格式异常: {url}") | |
| else: | |
| print(f"文件 {i+1} 下载失败,返回了原始URL: {url}") | |
| elif url.startswith("/static/"): | |
| # 从URL恢复实际的文件路径 | |
| relative_path = url[len("/static/"):] | |
| file_path = os.path.join(Config.STATIC_DIR, relative_path) | |
| print(f"相对URL转换为文件路径: {file_path}") | |
| if os.path.exists(file_path): | |
| print(f"文件 {i+1} 存在: {file_path}, 大小: {os.path.getsize(file_path)} 字节") | |
| else: | |
| print(f"文件 {i+1} 不存在: {file_path}") | |
| else: | |
| print(f"文件 {i+1} 下载失败,返回了原始URL: {url}") | |
| async def main(): | |
| print(f"配置信息:") | |
| print(f"IMAGE_LOCALIZATION: {Config.IMAGE_LOCALIZATION}") | |
| print(f"STATIC_DIR: {Config.STATIC_DIR}") | |
| print(f"IMAGE_SAVE_DIR: {Config.IMAGE_SAVE_DIR}") | |
| await test_single_download() | |
| await test_multiple_downloads() | |
| if __name__ == "__main__": | |
| asyncio.run(main()) |