e0a2b323d9
- obsidian-kb: Add OCR processors (easyocr, tesseract) - obsidian-kb: Fix subtitle detection with test files - obsidian-kb: Add cookie verification script - Add find-skills skill for discovering capabilities - Add video processing scripts - Update clawhub lock file
131 lines
4.1 KiB
Python
131 lines
4.1 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
验证知乎 Cookie 配置
|
|
"""
|
|
import json
|
|
import os
|
|
import sys
|
|
|
|
# 添加 src 目录到 Python 路径
|
|
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'src'))
|
|
|
|
from sources.zhihu_drission_extractor import ZhihuDrissionExtractor
|
|
|
|
|
|
def verify_cookie_config():
|
|
"""验证 Cookie 配置"""
|
|
print("=" * 60)
|
|
print("知乎 Cookie 配置验证")
|
|
print("=" * 60)
|
|
print()
|
|
|
|
# 1. 检查 Cookie 文件路径
|
|
cookie_file = os.path.expanduser('~/.obsidian-kb/zhihu_cookies.json')
|
|
print(f"1. Cookie 文件路径")
|
|
print(f" {cookie_file}")
|
|
if os.path.exists(cookie_file):
|
|
print(f" ✅ 文件存在")
|
|
else:
|
|
print(f" ❌ 文件不存在")
|
|
print(f" 请上传 Cookie 文件到此路径")
|
|
print()
|
|
return False
|
|
|
|
print()
|
|
|
|
# 2. 检查 Cookie 文件格式
|
|
print(f"2. Cookie 文件格式")
|
|
try:
|
|
with open(cookie_file, 'r', encoding='utf-8') as f:
|
|
cookies = json.load(f)
|
|
print(f" ✅ JSON 格式正确")
|
|
print(f" Cookie 数量: {len(cookies)}")
|
|
except json.JSONDecodeError as e:
|
|
print(f" ❌ JSON 格式错误: {e}")
|
|
return False
|
|
except Exception as e:
|
|
print(f" ❌ 读取失败: {e}")
|
|
return False
|
|
|
|
print()
|
|
|
|
# 3. 检查关键 Cookie
|
|
print(f"3. 关键 Cookie 检查")
|
|
cookie_names = [c['name'] for c in cookies]
|
|
required_cookies = ['z_c0', 'd_c0']
|
|
|
|
for cookie_name in required_cookies:
|
|
if cookie_name in cookie_names:
|
|
cookie = next(c for c in cookies if c['name'] == cookie_name)
|
|
value_preview = cookie['value'][:10] + '...' if len(cookie['value']) > 10 else cookie['value']
|
|
print(f" ✅ {cookie_name}: {value_preview}")
|
|
else:
|
|
print(f" ⚠️ {cookie_name}: 未找到(可能影响登录状态)")
|
|
|
|
print()
|
|
|
|
# 4. 检查配置文件
|
|
print(f"4. 配置文件检查")
|
|
config_file = os.path.join(os.path.dirname(__file__), 'config.yaml')
|
|
if os.path.exists(config_file):
|
|
print(f" ✅ config.yaml 存在")
|
|
with open(config_file, 'r') as f:
|
|
content = f.read()
|
|
if 'zhihu_cookies.json' in content:
|
|
print(f" ✅ Cookie 路径已配置")
|
|
else:
|
|
print(f" ⚠️ Cookie 路径未找到(可能是使用了其他配置)")
|
|
else:
|
|
print(f" ❌ config.yaml 不存在")
|
|
|
|
print()
|
|
|
|
# 5. 测试提取器初始化
|
|
print(f"5. 提取器初始化测试")
|
|
try:
|
|
# 加载配置文件并传递给提取器
|
|
import yaml
|
|
with open(config_file, 'r', encoding='utf-8') as f:
|
|
full_config = yaml.safe_load(f)
|
|
|
|
print(f" 配置文件: {config_file}")
|
|
print(f" zhihu 配置: {full_config.get('zhihu', {})}")
|
|
|
|
# 提取 zhihu 配置并传递
|
|
zhihu_config = full_config.get('zhihu', {})
|
|
extractor = ZhihuDrissionExtractor(config=zhihu_config)
|
|
print(f" ✅ ZhihuDrissionExtractor 初始化成功")
|
|
|
|
# 测试 Cookie 加载
|
|
loaded_cookies = extractor._load_cookies()
|
|
print(f" ✅ 成功加载 {len(loaded_cookies)} 个 Cookie")
|
|
|
|
if len(loaded_cookies) == 0:
|
|
print(f" ⚠️ 未加载到 Cookie,将使用未登录状态访问")
|
|
print(f" 这可能导致提取失败或内容不完整")
|
|
|
|
except Exception as e:
|
|
print(f" ❌ 初始化失败: {e}")
|
|
return False
|
|
|
|
print()
|
|
print("=" * 60)
|
|
print("✅ 配置验证完成!")
|
|
print("=" * 60)
|
|
print()
|
|
|
|
# 6. 下一步建议
|
|
print("下一步:")
|
|
print("1. 如果 Cookie 文件格式正确,可以直接开始提取")
|
|
print("2. 建议先测试一个简单的知乎回答链接")
|
|
print()
|
|
print("示例命令:")
|
|
print(" python3 -c \"from src.sources.zhihu_drission_extractor import ZhihuDrissionExtractor; print(ZhihuDrissionExtractor().extract('https://www.zhihu.com/question/266309957/answer/2003427891925509507')['title'])\"")
|
|
|
|
return True
|
|
|
|
|
|
if __name__ == '__main__':
|
|
success = verify_cookie_config()
|
|
sys.exit(0 if success else 1)
|