📚 Sync updated wiki pages from docs/wiki
@ -1,138 +1,15 @@
|
|||||||
|
# Architecture Overview
|
||||||
|
|
||||||
|
This page provides an overview of the internal structure of the LCS Pipeline.
|
||||||
|
|
||||||
\# 🧱 Architecture Overview
|
## Modules
|
||||||
|
- `main.py`: Central orchestration logic
|
||||||
|
- `modules/`: Reusable utilities for title cards, thumbnails, uploads
|
||||||
|
- `assets/`: Contains branding videos and fonts
|
||||||
This page explains the modular architecture of the \*\*LCS Video Pipeline\*\*, covering key components, data flow, and extensibility.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
\## 🧩 Core Modules
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Each component is designed to be loosely coupled and highly testable:
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
\### 1. `main.py`
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
\* Entry point
|
|
||||||
|
|
||||||
\* Discovers session folders and orchestrates processing
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
\### 2. `modules/`
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Contains reusable components:
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
\* `render\_engine.py`: Applies intros/outros and overlays
|
|
||||||
|
|
||||||
\* `title\_utils.py`: Generates dynamic title cards
|
|
||||||
|
|
||||||
\* `thumbnail\_utils.py`: Creates brand-compliant thumbnails
|
|
||||||
|
|
||||||
\* `yt\_poster.py`: Uploads to YouTube
|
|
||||||
|
|
||||||
\* `pt\_poster.py`: Uploads to PeerTube (WIP)
|
|
||||||
|
|
||||||
\* `description\_gen.py`: Creates OpenAI-based video descriptions
|
|
||||||
|
|
||||||
\* `date\_utils.py`, `config.py`: Environment and date helpers
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
\## 🔄 Data Flow
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
```plaintext
|
|
||||||
|
|
||||||
\[raw clips] → \[montages/, hits/, etc.] → main.py → render\_engine → final.mp4 → yt\_poster
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
All clip metadata (e.g., `notes.json`) is parsed and tracked alongside rendered files.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
\## 🧰 Tooling \& Configuration
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
\* \*\*`.env`\*\*: Stores API keys and client secrets (excluded from Git)
|
|
||||||
|
|
||||||
\* \*\*`config.py`\*\*: Centralized paths, flags, and constants
|
|
||||||
|
|
||||||
\* \*\*`logs/`\*\*: Execution logs, status, and failures
|
|
||||||
|
|
||||||
\* \*\*`tests/`\*\*: Pytest-based functional coverage
|
|
||||||
|
|
||||||
\* \*\*`video-pipeline.wiki/`\*\*: Markdown wiki repo (submodule)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
\## 🚧 Extensibility
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
\* Add new platforms (e.g., TikTok) via new `poster\_\*.py`
|
|
||||||
|
|
||||||
\* Add formats (e.g., square, cinematic) by enhancing `render\_engine.py`
|
|
||||||
|
|
||||||
\* Add more metadata (e.g., voice notes) by expanding `notes.json` parser
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
\## 🧠 Design Philosophy
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
\* \*\*Single responsibility per module\*\*
|
|
||||||
|
|
||||||
\* \*\*Declarative configuration\*\*
|
|
||||||
|
|
||||||
\* \*\*E2E traceability via metadata\*\*
|
|
||||||
|
|
||||||
\* \*\*Fun, brand-forward visual output\*\*
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
\*Last updated: 2025-08-04\*
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Flow
|
||||||
|
1. Detect new video sessions
|
||||||
|
2. Generate metadata, titles, overlays
|
||||||
|
3. Render videos with intro/title/outro
|
||||||
|
4. Upload to YouTube and optionally PeerTube
|
||||||
|
5. Auto-publish wiki and social metadata
|
||||||
Reference in New Issue
Block a user