Spaces:
Sleeping
Sleeping
Download get_notes/models.py from yuziyang/brew-profile-parser: direct link, hf CLI and curl.
- Browser
- Download file 3.73 kB
-
https://huggingface.co/spaces/yuziyang/brew-profile-parser/resolve/main/get_notes/models.py
- Command line
-
hf download hf://spaces/yuziyang/brew-profile-parser/get_notes/models.py
-
curl -L -o models.py https://huggingface.co/spaces/yuziyang/brew-profile-parser/resolve/main/get_notes/models.py
3.73 kB
| """ | |
| 数据模型:定义解析结果、内容载体和笔记结构。 | |
| """ | |
| from __future__ import annotations | |
| from dataclasses import dataclass, field | |
| from enum import Enum | |
| from typing import Optional | |
| class Platform(Enum): | |
| DOUYIN = "douyin" | |
| XIAOHONGSHU = "xiaohongshu" | |
| BILIBILI = "bilibili" | |
| WECHAT = "wechat" | |
| UNKNOWN = "unknown" | |
| class ContentType(Enum): | |
| VIDEO = "video" | |
| IMAGE_TEXT = "image_text" | |
| ARTICLE = "article" | |
| class MediaItem: | |
| """单个媒体资源(图片或视频)""" | |
| url: str | |
| media_type: str # "image" | "video" | |
| local_path: Optional[str] = None | |
| width: Optional[int] = None | |
| height: Optional[int] = None | |
| class ParsedContent: | |
| """从平台解析出的原始内容""" | |
| platform: Platform | |
| content_type: ContentType | |
| content_id: str | |
| title: str = "" | |
| description: str = "" | |
| author: str = "" | |
| tags: list[str] = field(default_factory=list) | |
| images: list[MediaItem] = field(default_factory=list) | |
| video: Optional[MediaItem] = None | |
| source_url: str = "" | |
| class ProcessedContent: | |
| """经过多模态处理后的内容""" | |
| transcript: str = "" # ASR转录文本(视频) | |
| ocr_texts: list[str] = field(default_factory=list) # OCR识别的图片文字 | |
| image_descriptions: list[str] = field(default_factory=list) # 图片语义描述 | |
| clean_text: str = "" # 清洗后的原文文本 | |
| audio_path: Optional[str] = None | |
| class PourStep: | |
| """单次注水阶段""" | |
| stage: str = "" # 阶段名:闷蒸 / 第一段 / 第二段 ... | |
| water_ml: str = "" # 注水量或累计水量,如 "30ml" "注至150ml" | |
| time: str = "" # 时间,如 "0:00-0:30" "30s" | |
| technique: str = "" # 手法:中心注水 / 绕圈 / 搅拌 等 | |
| class BrewCard: | |
| """手冲咖啡方案参数卡""" | |
| # 基本信息 | |
| title: str = "" | |
| summary: str = "" # 一句话概括这个方案的特点/风格 | |
| # 咖啡豆 | |
| bean_name: str = "" # 豆子名称/品牌 | |
| origin: str = "" # 产地 | |
| roast_level: str = "" # 烘焙度:浅 / 中浅 / 中 / 中深 / 深 | |
| process: str = "" # 处理法:水洗 / 日晒 / 蜜处理 等 | |
| bean_notes: str = "" # 豆子补充说明 | |
| # 研磨 | |
| grind_size: str = "" # 研磨度描述:如 "中细" "C40 24格" "EK43 9.0" | |
| # 冲煮核心参数 | |
| dose: str = "" # 粉量 (g) | |
| water_amount: str = "" # 水量 (ml) | |
| ratio: str = "" # 粉水比,如 "1:15" | |
| water_temp: str = "" # 水温 (°C) | |
| total_time: str = "" # 总萃取时间 | |
| # 器具 | |
| dripper: str = "" # 滤杯:V60 / Kalita / Origami 等 | |
| filter_paper: str = "" # 滤纸 | |
| equipment_notes: str = "" # 其他器具说明 | |
| # 冲煮步骤 | |
| pour_steps: list[dict] = field(default_factory=list) | |
| # 风味 | |
| flavor_notes: str = "" # 预期风味描述 | |
| tips: str = "" # 作者的关键技巧/心得 | |
| # AI 补全标记:记录哪些字段是推理补全的(非原文提取) | |
| inferred_fields: list[str] = field(default_factory=list) | |
| # 来源 | |
| author: str = "" | |
| source_platform: str = "" | |
| source_url: str = "" | |
| raw_content: str = "" | |
| class NoteSummary: | |
| """AI生成的笔记摘要(通用,保留兼容)""" | |
| title: str = "" | |
| summary: str = "" | |
| key_points: list[str] = field(default_factory=list) | |
| tags: list[str] = field(default_factory=list) | |
| chapters: list[dict] = field(default_factory=list) | |
| source_platform: str = "" | |
| source_url: str = "" | |
| raw_content: str = "" | |