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())