Skip to content

zlhahaha/test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

MoneyPrinterTurbo — 4+1 架构视图

一、逻辑视图

关注系统的功能分解、核心类及其关系。

classDiagram

    direction TB

  

    class PipelineOrchestrator {

        +start(任务启动)

        -generate_script(脚本生成)

        -generate_terms(关键词生成)

        -generate_audio(语音生成)

        -generate_subtitle(字幕生成)

        -get_video_materials(素材获取)

        -generate_final_videos(视频合成)

    }

  

    class LLMService {

        +generate_script()

        +generate_terms()

    }

    class VoiceService {

        +tts()

        +create_subtitle()

        +get_audio_duration()

    }

    class VideoService {

        +combine_videos()

        +generate_video()

        +preprocess_video()

    }

    class MaterialService {

        +download_videos()

        +search_videos_pexels()

        +search_videos_pixabay()

    }

    class SubtitleService {

        +create()

        +correct()

    }

  

    class StateManager {

        <<abstract>>

        +update_task()

        +get_task()

        +get_all_tasks()

        +delete_task()

    }

    class MemoryState

    class RedisState

  

    class TaskManager {

        <<abstract>>

        +add_task()

        +execute_task()

    }

    class InMemoryTaskManager

    class RedisTaskManager

  

    class Config {

        +load_config()

        +save_config()

    }

  

    PipelineOrchestrator --> LLMService : 脚本与关键词生成

    PipelineOrchestrator --> VoiceService : 语音合成

    PipelineOrchestrator --> VideoService : 画面合成

    PipelineOrchestrator --> MaterialService : 视频素材下载

    PipelineOrchestrator --> SubtitleService : 字幕文件生成

    PipelineOrchestrator --> StateManager : 更新任务状态

    PipelineOrchestrator --> TaskManager : 入队异步执行

  

    StateManager <|-- MemoryState : 内存实现

    StateManager <|-- RedisState : Redis 实现

    TaskManager <|-- InMemoryTaskManager : 内存队列

    TaskManager <|-- RedisTaskManager : Redis 队列

  

    LLMService --> Config : 读取 API 配置

    VoiceService --> Config : 读取 TTS 配置

    VideoService --> Config : 读取编解码配置

    MaterialService --> Config : 读取素材源配置

    StateManager --> Config : 读取 Redis 配置

Loading

二、过程视图

关注运行时端到端交互、并发模型与进度机制。

sequenceDiagram

    actor User as 用户

    participant API as FastAPI 控制器

    participant TM as 任务管理器

    participant State as 状态管理器

    participant P as 流水线编排器

    participant LLM as LLM 服务

    participant Voice as 语音服务

    participant Sub as 字幕服务

    participant Mat as 素材服务

    participant Vid as 视频合成服务

    participant Ext as 外部 API

  

    User->>API: POST /api/v1/videos

    API->>State: 初始化任务状态

    API->>TM: 提交任务到队列

    API-->>User: 202 {task_id}

    TM->>P: daemon 线程异步执行

  

    rect rgb(230, 242, 255)

        Note over P,Ext: 第1步 — 脚本生成

        P->>State: progress=5

        P->>LLM: generate_script(主题, 语言)

        LLM->>Ext: OpenAI / Gemini / Qwen / DeepSeek 等

        Ext-->>LLM: 脚本文本

        LLM-->>P: video_script

        P->>State: progress=10

    end

  

    rect rgb(255, 245, 230)

        Note over P,Ext: 第2步 — 关键词生成

        P->>LLM: generate_terms(主题, 脚本)

        LLM->>Ext: 同上 LLM 提供商

        Ext-->>LLM: ["关键词1","关键词2",...]

        LLM-->>P: video_terms[]

        P->>State: progress=20

    end

  

    rect rgb(230, 255, 240)

        Note over P,Ext: 第3步 — 语音合成

        P->>Voice: tts(脚本, 语音名称, 速率)

        Voice->>Ext: Edge TTS / Azure V2 / SiliconFlow / Gemini TTS

        Ext-->>Voice: 音频流 + WordBoundary 边界事件

        Voice-->>P: audio.mp3 + SubMaker

        P->>State: progress=30

    end

  

    rect rgb(255, 240, 230)

        Note over P,Ext: 第4步 — 字幕生成

        P->>Sub: create_subtitle(SubMaker, 脚本)

        Sub->>Sub: 词级时间戳聚合为句子级 SRT

        Sub-->>P: subtitle.srt

        P->>State: progress=40

    end

  

    rect rgb(240, 230, 255)

        Note over P,Ext: 第5步 — 素材下载

        P->>Mat: download_videos(关键词, 比例, 时长)

        Mat->>Ext: Pexels / Pixabay 搜索与下载

        Ext-->>Mat: .mp4 视频文件

        Mat->>Mat: MD5 缓存去重

        Mat-->>P: video_paths[]

        P->>State: progress=50

    end

  

    rect rgb(255, 230, 240)

        Note over P,Ext: 第6步 — 视频合成

        P->>Vid: combine_videos(素材路径, 音频, 转场参数)

        Vid->>Vid: 裁剪 / 缩放 / 转场效果 / ffmpeg 拼接

        Vid-->>P: combined-1.mp4

        P->>State: progress=75

        P->>Vid: generate_video(拼接视频, 音频, 字幕, 样式参数)

        Vid->>Vid: 叠加字幕 + 背景音乐 / 渲染输出

        Vid-->>P: final-1.mp4

        P->>State: progress=100

    end

  

    P->>State: 标记任务完成

  

    loop 前端轮询

        User->>API: GET /api/v1/tasks/{task_id}

        API->>State: get_task()

        State-->>API: 当前状态、进度、视频URL

        API-->>User: 任务进度与视频下载链接

    end

Loading

三、物理视图

关注系统在物理节点上的部署拓扑与外部服务依赖。

graph TB

    Browser["用户浏览器"]

  

    subgraph Host["单机节点"]

        SW["Streamlit WebUI<br/>端口 8501<br/>交互式图形界面"]

        API["FastAPI Server<br/>端口 8080<br/>REST 编程接口"]

        SVC["app/services/<br/>共享业务逻辑层"]

        FS[("本地文件系统<br/>config.toml 配置文件<br/>resource/ 字体与音乐<br/>storage/ 任务产物与缓存")]

    end

  

    Redis[("Redis 服务器<br/>可选组件<br/>跨进程队列与状态共享")]

  

    subgraph Cloud["外部云服务"]

        LLM["LLM 提供商群<br/>OpenAI / Gemini / Qwen<br/>DeepSeek / Moonshot / Ollama<br/>LiteLLM / Cloudflare 等"]

        TTS["TTS 语音服务群<br/>Microsoft Edge TTS<br/>Azure Cognitive Services<br/>SiliconFlow CosyVoice2<br/>Google Gemini TTS"]

        Stock["素材平台<br/>Pexels API<br/>Pixabay API"]

        Social["社交发布<br/>Upload-Post API<br/>TikTok / Instagram"]

    end

  

    Browser -->|"HTTP 访问页面"| SW

    Browser -->|"REST 调用接口"| API

    SW -->|"进程内 import"| SVC

    API -->|"进程内 import"| SVC

    SVC -->|"读写"| FS

    SVC -.->|"可选连接"| Redis

    SVC -->|"HTTPS"| LLM

    SVC -->|"HTTPS"| TTS

    SVC -->|"HTTPS"| Stock

    SVC -->|"HTTPS"| Social

Loading

四、开发视图

关注源代码的模块划分、分层组织与依赖约束。

graph TD

    W["webui/Main.py<br/>Streamlit 图形界面"]

    C1["controllers/v1/video.py<br/>视频任务 API"]

    C2["controllers/v1/llm.py<br/>LLM 调用 API"]

    MGR["controllers/manager/<br/>任务队列管理器"]

    TASK["services/task.py<br/>7步流水线编排器"]

    LLM["services/llm.py<br/>LLM 集成(17种后端)"]

    VO["services/voice.py<br/>TTS 集成(4种后端)"]

    VID["services/video.py<br/>MoviePy + ffmpeg 合成"]

    MAT["services/material.py<br/>Pexels/Pixabay 素材"]

    SUB["services/subtitle.py<br/>faster-whisper 字幕"]

    UP["services/upload_post.py<br/>社交平台发布"]

    CFG["config/config.py<br/>TOML 配置加载"]

    UT["utils/utils.py<br/>通用工具函数"]

    ST["services/state.py<br/>任务状态管理"]

    SCH["models/schema.py<br/>Pydantic 数据模型"]

    CNST["models/const.py<br/>常量与枚举"]

    EXC["models/exception.py<br/>自定义异常"]

  

    W --> TASK

    C1 --> TASK

    C1 --> MGR

    C2 --> LLM

    C2 --> SCH

  

    TASK --> LLM

    TASK --> VO

    TASK --> VID

    TASK --> MAT

    TASK --> SUB

    TASK --> UP

    TASK --> ST

    TASK --> SCH

  

    LLM --> CFG

    VO --> CFG

    VO --> UT

    VID --> CFG

    VID --> UT

    MAT --> CFG

    MAT --> UT

    ST --> CFG

    UP --> CFG

    MGR --> ST

    SCH --> CFG

    SCH --> CNST

Loading

五、场景视图

关注关键用例及其与外部系统的关联。

graph TD

    User(("用户"))

  

    UC0["配置 API Key 与参数"]

    UC1["生成完整短视频"]

    UC2["仅生成视频脚本"]

    UC3["仅生成语音旁白"]

    UC4["仅生成字幕文件"]

    UC5["查询与删除历史任务"]

    UC6["管理背景音乐与本地素材"]

    UC7["跨平台发布到 TikTok/Instagram"]

  

    AI["LLM 提供商"]

    Tts["TTS 语音服务"]

    Pex["Pexels / Pixabay<br/>素材平台"]

    UP["Upload-Post<br/>社交发布"]

  

    User --> UC0

    User --> UC1

    User --> UC2

    User --> UC3

    User --> UC4

    User --> UC5

    User --> UC6

    User --> UC7

  

    UC1 -.->|include| UC2

    UC1 -.->|include| UC3

    UC1 -.->|include| UC4

    UC1 -.->|include| UC6

    UC1 -.->|include| UC7

  

    UC0 --> AI

    UC0 --> Tts

    UC1 --> AI

    UC1 --> Tts

    UC1 --> Pex

    UC1 --> UP

    UC2 --> AI

    UC3 --> Tts

    UC4 --> Tts

    UC7 --> UP

Loading

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors