This repository has been archived on 2026-02-15. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
openclaw-skills/skills/obsidian-kb/example_usage.py
T
OpenClaw Agent 08f7c9f26c feat: integrate bilibili-extractor into obsidian-kb
- 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)
2026-02-07 13:07:43 +08:00

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