fix
This commit is contained in:
181
scripts/test_material_tags_fix.py
Normal file
181
scripts/test_material_tags_fix.py
Normal file
@@ -0,0 +1,181 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
测试素材标签修复的脚本
|
||||
验证导入的视频片段是否正确继承了原始视频的标签
|
||||
"""
|
||||
|
||||
import sys
|
||||
import os
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
# 添加项目根目录到Python路径
|
||||
project_root = Path(__file__).parent.parent
|
||||
sys.path.insert(0, str(project_root))
|
||||
|
||||
from python_core.services.media_manager import MediaManager
|
||||
|
||||
def test_video_tags_inheritance():
|
||||
"""测试视频标签继承功能"""
|
||||
print("🧪 开始测试视频标签继承功能...")
|
||||
|
||||
# 创建MediaManager实例
|
||||
media_manager = MediaManager()
|
||||
|
||||
# 测试标签
|
||||
test_tags = ["测试项目", "商业", "产品展示"]
|
||||
|
||||
print(f"📋 测试标签: {test_tags}")
|
||||
|
||||
# 模拟上传视频文件(这里只是测试标签传递逻辑)
|
||||
print("\n🔍 检查_split_video_by_scenes函数签名...")
|
||||
|
||||
# 检查函数是否接受tags参数
|
||||
import inspect
|
||||
sig = inspect.signature(media_manager._split_video_by_scenes)
|
||||
params = list(sig.parameters.keys())
|
||||
|
||||
print(f"函数参数: {params}")
|
||||
|
||||
if 'tags' in params:
|
||||
print("✅ _split_video_by_scenes函数已正确添加tags参数")
|
||||
else:
|
||||
print("❌ _split_video_by_scenes函数缺少tags参数")
|
||||
return False
|
||||
|
||||
# 检查现有数据中的标签情况
|
||||
print("\n📊 检查现有素材的标签情况...")
|
||||
|
||||
segments = media_manager.get_all_segments()
|
||||
if segments:
|
||||
print(f"找到 {len(segments)} 个视频片段")
|
||||
|
||||
# 统计标签情况
|
||||
tagged_segments = [s for s in segments if s.get('tags')]
|
||||
untagged_segments = [s for s in segments if not s.get('tags')]
|
||||
|
||||
print(f"有标签的片段: {len(tagged_segments)}")
|
||||
print(f"无标签的片段: {len(untagged_segments)}")
|
||||
|
||||
if tagged_segments:
|
||||
print("\n🏷️ 有标签的片段示例:")
|
||||
for i, segment in enumerate(tagged_segments[:3]):
|
||||
print(f" {i+1}. {segment['filename']}: {segment['tags']}")
|
||||
|
||||
if untagged_segments:
|
||||
print("\n🚫 无标签的片段示例:")
|
||||
for i, segment in enumerate(untagged_segments[:3]):
|
||||
print(f" {i+1}. {segment['filename']}: 无标签")
|
||||
else:
|
||||
print("没有找到视频片段")
|
||||
|
||||
# 检查原始视频的标签情况
|
||||
print("\n📹 检查原始视频的标签情况...")
|
||||
|
||||
original_videos = media_manager.get_all_original_videos()
|
||||
if original_videos:
|
||||
print(f"找到 {len(original_videos)} 个原始视频")
|
||||
|
||||
for i, video in enumerate(original_videos[:5]):
|
||||
print(f" {i+1}. {video['filename']}: {video.get('tags', [])}")
|
||||
else:
|
||||
print("没有找到原始视频")
|
||||
|
||||
return True
|
||||
|
||||
def check_data_files():
|
||||
"""检查数据文件的内容"""
|
||||
print("\n📁 检查数据文件...")
|
||||
|
||||
# 获取数据文件路径
|
||||
from python_core.config import settings
|
||||
cache_dir = settings.temp_dir / "cache"
|
||||
|
||||
segments_file = cache_dir / "video_segments.json"
|
||||
original_videos_file = cache_dir / "original_videos.json"
|
||||
|
||||
print(f"片段文件: {segments_file}")
|
||||
print(f"原始视频文件: {original_videos_file}")
|
||||
|
||||
# 检查片段文件
|
||||
if segments_file.exists():
|
||||
try:
|
||||
with open(segments_file, 'r', encoding='utf-8') as f:
|
||||
segments_data = json.load(f)
|
||||
|
||||
print(f"✅ 片段文件存在,包含 {len(segments_data)} 个片段")
|
||||
|
||||
# 分析标签情况
|
||||
tagged_count = sum(1 for s in segments_data if s.get('tags'))
|
||||
print(f" 有标签的片段: {tagged_count}")
|
||||
print(f" 无标签的片段: {len(segments_data) - tagged_count}")
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ 读取片段文件失败: {e}")
|
||||
else:
|
||||
print("❌ 片段文件不存在")
|
||||
|
||||
# 检查原始视频文件
|
||||
if original_videos_file.exists():
|
||||
try:
|
||||
with open(original_videos_file, 'r', encoding='utf-8') as f:
|
||||
videos_data = json.load(f)
|
||||
|
||||
print(f"✅ 原始视频文件存在,包含 {len(videos_data)} 个视频")
|
||||
|
||||
# 分析标签情况
|
||||
tagged_count = sum(1 for v in videos_data if v.get('tags'))
|
||||
print(f" 有标签的视频: {tagged_count}")
|
||||
print(f" 无标签的视频: {len(videos_data) - tagged_count}")
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ 读取原始视频文件失败: {e}")
|
||||
else:
|
||||
print("❌ 原始视频文件不存在")
|
||||
|
||||
def suggest_manual_fix():
|
||||
"""建议手动修复方案"""
|
||||
print("\n🔧 手动修复建议:")
|
||||
print("1. 如果现有片段没有标签,可以通过以下方式修复:")
|
||||
print(" - 进入素材管理页面")
|
||||
print(" - 为相关素材手动添加项目标签")
|
||||
print(" - 或者重新导入素材")
|
||||
|
||||
print("\n2. 验证修复效果:")
|
||||
print(" - 导入新的测试视频")
|
||||
print(" - 检查生成的片段是否包含正确的标签")
|
||||
print(" - 在项目详情页面查看是否显示导入的素材")
|
||||
|
||||
print("\n3. 调试信息:")
|
||||
print(" - 打开浏览器开发者工具")
|
||||
print(" - 查看控制台输出的标签信息")
|
||||
print(" - 确认项目商品名和素材标签匹配")
|
||||
|
||||
def main():
|
||||
"""主函数"""
|
||||
print("🚀 素材标签修复测试")
|
||||
print("=" * 50)
|
||||
|
||||
try:
|
||||
# 测试标签继承功能
|
||||
test_video_tags_inheritance()
|
||||
|
||||
# 检查数据文件
|
||||
check_data_files()
|
||||
|
||||
# 提供修复建议
|
||||
suggest_manual_fix()
|
||||
|
||||
print("\n✅ 测试完成!")
|
||||
print("\n📝 总结:")
|
||||
print("- _split_video_by_scenes函数已修复,现在会继承原始视频的标签")
|
||||
print("- 新导入的视频片段将包含正确的标签")
|
||||
print("- 现有的无标签片段需要手动修复或重新导入")
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ 测试过程中出现错误: {e}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user