Spaces:
Running
Running
File size: 5,302 Bytes
b064311 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
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()) |