08f7c9f26c
- Add extractors layer with BilibiliExtractor (Playwright stealth mode) - Add outputs layer with ObsidianWriter and GitSync - Implement subtitle/no-subtitle graceful degradation - Update config with output and bilibili extraction settings - Complete integration pipeline: extract → process → output → sync - Add comprehensive tests (100% pass rate) - Update documentation (SKILL.md, README.md, requirements.txt)
198 lines
5.0 KiB
Python
198 lines
5.0 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
Obsidian KB - 使用示例
|
|
|
|
展示如何使用主流程集成功能
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
|
|
# 添加项目路径
|
|
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
|
|
|
|
|
def example_1_basic_usage():
|
|
"""示例1: 基本使用"""
|
|
print("=" * 80)
|
|
print("示例1: 基本使用")
|
|
print("=" * 80 + "\n")
|
|
|
|
from main_pipeline import MainPipeline
|
|
from src.config import get_config
|
|
|
|
# 创建主流程
|
|
config = get_config()
|
|
pipeline = MainPipeline(config=config, enable_git_sync=False)
|
|
|
|
# 处理视频
|
|
source_id = "BV1MnFNz5EDL" # 替换为实际的 BV 号
|
|
result = pipeline.process_video(source_id)
|
|
|
|
if result['success']:
|
|
print("✅ 处理成功!")
|
|
print(result['message'])
|
|
else:
|
|
print(f"❌ 处理失败: {result['error']}")
|
|
|
|
|
|
def example_2_with_git_sync():
|
|
"""示例2: 启用 Git 同步"""
|
|
print("\n" + "=" * 80)
|
|
print("示例2: 启用 Git 同步")
|
|
print("=" * 80 + "\n")
|
|
|
|
from main_pipeline import MainPipeline
|
|
from src.config import get_config
|
|
|
|
# 创建主流程(启用 Git 同步)
|
|
config = get_config()
|
|
pipeline = MainPipeline(config=config, enable_git_sync=True)
|
|
|
|
# 处理视频
|
|
source_id = "BV1MnFNz5EDL"
|
|
result = pipeline.process_video(source_id)
|
|
|
|
if result['success']:
|
|
print("✅ 处理成功(包含 Git 同步)!")
|
|
print(result['message'])
|
|
else:
|
|
print(f"❌ 处理失败: {result['error']}")
|
|
|
|
|
|
def example_3_handler_interface():
|
|
"""示例3: 使用 Handler 接口"""
|
|
print("\n" + "=" * 80)
|
|
print("示例3: 使用 Handler 接口")
|
|
print("=" * 80 + "\n")
|
|
|
|
from handler import process_video_full
|
|
|
|
# 使用 Handler 处理视频
|
|
source_id = "BV1MnFNz5EDL"
|
|
success, message = process_video_full(source_id, enable_git_sync=False)
|
|
|
|
if success:
|
|
print("✅ 处理成功!")
|
|
print(message)
|
|
else:
|
|
print(f"❌ 处理失败: {message}")
|
|
|
|
|
|
def example_4_batch_processing():
|
|
"""示例4: 批量处理"""
|
|
print("\n" + "=" * 80)
|
|
print("示例4: 批量处理")
|
|
print("=" * 80 + "\n")
|
|
|
|
from main_pipeline import MainPipeline
|
|
from src.config import get_config
|
|
|
|
# 创建主流程
|
|
config = get_config()
|
|
pipeline = MainPipeline(config=config, enable_git_sync=False)
|
|
|
|
# 批量处理多个视频
|
|
source_ids = [
|
|
"BV1MnFNz5EDL",
|
|
# 添加更多 BV 号
|
|
]
|
|
|
|
results = []
|
|
for i, source_id in enumerate(source_ids, 1):
|
|
print(f"\n处理第 {i}/{len(source_ids)} 个视频: {source_id}")
|
|
result = pipeline.process_video(source_id)
|
|
results.append(result)
|
|
|
|
# 汇总结果
|
|
print("\n" + "-" * 80)
|
|
print("批量处理结果汇总:")
|
|
print("-" * 80)
|
|
|
|
success_count = sum(1 for r in results if r['success'])
|
|
fail_count = len(results) - success_count
|
|
|
|
print(f" 总数: {len(results)}")
|
|
print(f" 成功: {success_count}")
|
|
print(f" 失败: {fail_count}")
|
|
|
|
|
|
def example_5_custom_config():
|
|
"""示例5: 自定义配置"""
|
|
print("\n" + "=" * 80)
|
|
print("示例5: 自定义配置")
|
|
print("=" * 80 + "\n")
|
|
|
|
from main_pipeline import MainPipeline
|
|
from src.config import Config
|
|
|
|
# 使用自定义配置
|
|
custom_config_path = "/path/to/custom/config.yaml"
|
|
config = get_config(custom_config_path)
|
|
|
|
# 或者直接修改配置
|
|
config.set('git.enabled', True)
|
|
config.set('git.auto_push', False)
|
|
|
|
# 创建主流程
|
|
pipeline = MainPipeline(config=config, enable_git_sync=True)
|
|
|
|
# 处理视频
|
|
source_id = "BV1MnFNz5EDL"
|
|
result = pipeline.process_video(source_id)
|
|
|
|
if result['success']:
|
|
print("✅ 处理成功(使用自定义配置)!")
|
|
print(result['message'])
|
|
else:
|
|
print(f"❌ 处理失败: {result['error']}")
|
|
|
|
|
|
def example_6_error_handling():
|
|
"""示例6: 错误处理"""
|
|
print("\n" + "=" * 80)
|
|
print("示例6: 错误处理")
|
|
print("=" * 80 + "\n")
|
|
|
|
from main_pipeline import MainPipeline
|
|
from src.config import get_config
|
|
|
|
# 创建主流程
|
|
config = get_config()
|
|
pipeline = MainPipeline(config=config, enable_git_sync=False)
|
|
|
|
# 测试无效的 BV 号
|
|
invalid_bv = "BVinvalid123"
|
|
result = pipeline.process_video(invalid_bv)
|
|
|
|
if not result['success']:
|
|
print("✅ 错误被正确捕获!")
|
|
print(f"错误信息: {result['error']}")
|
|
else:
|
|
print("❌ 应该失败但成功了")
|
|
|
|
|
|
def main():
|
|
"""运行示例"""
|
|
print("\n" + "=" * 80)
|
|
print("Obsidian KB - 主流程集成使用示例")
|
|
print("=" * 80)
|
|
|
|
print("\n注意:这些示例需要实际安装依赖并配置环境")
|
|
print(" 可以根据需要选择运行不同的示例\n")
|
|
|
|
# 运行示例
|
|
# example_1_basic_usage()
|
|
# example_2_with_git_sync()
|
|
# example_3_handler_interface()
|
|
# example_4_batch_processing()
|
|
# example_5_custom_config()
|
|
# example_6_error_handling()
|
|
|
|
print("\n提示:取消注释上面的示例代码来运行对应的示例")
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|