diff --git a/Architecture-Overview.md b/Architecture-Overview.md index 653b7d2..b7510eb 100644 --- a/Architecture-Overview.md +++ b/Architecture-Overview.md @@ -1,15 +1,212 @@ -# Architecture Overview + + +

🧱 Architecture Overview

+

This page provides a high-level technical map of the LCS Pipeline — from input detection to final video upload. It outlines how the system is structured, modularized, and designed for hands-free content generation.

+
+

🎯 Primary Goal

+

To automate livestream clip creation, formatting, titling, thumbnail generation, and publishing across multiple platforms with minimal user input.

+
+

🗂️ Core Workflow (Pipeline Phases)

+
    +
  1. +

    Session Discovery
    +Scans for new YYYY.MM.DD folders on startup. Multiple sessions per day supported (.2, .3, etc.).

    +
  2. +
  3. +

    Clip Classification
    +Reads each subfolder (hits/, misses/, montages/, etc.) and classifies by:

    + +
  4. +
  5. +

    Metadata Injection
    +Loads notes.json (if present) or prompts user for:

    + +
  6. +
  7. +

    Title + Description Generation
    +Uses OpenAI to create:

    + +
  8. +
  9. +

    Intro/Outro Assembly

    + +
  10. +
  11. +

    Thumbnail Generation
    +Creates stylized Fortnite-style thumbnails under 2MB

    +
  12. +
  13. +

    Upload

    + +
  14. +
  15. +

    Archive & Cleanup

    + +
  16. +
+
+

📁 Key Components

-This page provides an overview of the internal structure of the LCS Pipeline. +Module | Role +-- | -- +main.py | Pipeline launcher and orchestrator +render_engine.py | Handles stitching + export +title_utils.py | Generates title screens +yt_poster.py | YouTube upload logic +pt_poster.py | PeerTube upload logic (optional) +thumbnail_utils.py | Builds and validates thumbnails +metadata_utils.py | Normalizes and stores clip metadata -## Modules -- `main.py`: Central orchestration logic -- `modules/`: Reusable utilities for title cards, thumbnails, uploads -- `assets/`: Contains branding videos and fonts -## 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 \ No newline at end of file +
+

📦 Folder Independence

+

Each session folder is processed atomically — no cross-folder dependencies.

+ +
+

🔧 Exception Paths

+ +
+

See also: Clip Handling Logic, File Naming, Metadata Extraction

+ +## 🧱 Architecture Overview + +This page provides a high-level technical map of the LCS Pipeline — from input detection to final video upload. It outlines how the system is structured, modularized, and designed for hands-free content generation. + +--- + +### 🎯 Primary Goal + +To automate livestream clip creation, formatting, titling, thumbnail generation, and publishing across multiple platforms with minimal user input. + +--- + +### 🗂️ Core Workflow (Pipeline Phases) + +1. **Session Discovery** + Scans for new `YYYY.MM.DD` folders on startup. Multiple sessions per day supported (`.2`, `.3`, etc.). + +2. **Clip Classification** + Reads each subfolder (`hits/`, `misses/`, `montages/`, etc.) and classifies by: + + * Folder name + * Filename suffix (`-vert` for vertical) + +3. **Metadata Injection** + Loads `notes.json` (if present) or prompts user for: + + * `highlight` (required) + * `tags`, `gag_name` (optional) + +4. **Title + Description Generation** + Uses OpenAI to create: + + * Dynamic video titles (based on folder + metadata) + * Social-ready video descriptions + +5. **Intro/Outro Assembly** + + * Concatenates intro + title card + clip + outro + * Uses branding assets in `assets/` + +6. **Thumbnail Generation** + Creates stylized Fortnite-style thumbnails under 2MB + +7. **Upload** + + * Vertical → YouTube Shorts + * Widescreen → YouTube Clips (and PeerTube, if enabled) + +8. **Archive & Cleanup** + + * Metadata written to `metadata/history//.json` + * Original clip folder optionally deleted (unless `DEBUG=True`) + +--- + +### 📁 Key Components + +| Module | Role | +| -------------------- | ----------------------------------- | +| `main.py` | Pipeline launcher and orchestrator | +| `render_engine.py` | Handles stitching + export | +| `title_utils.py` | Generates title screens | +| `yt_poster.py` | YouTube upload logic | +| `pt_poster.py` | PeerTube upload logic (optional) | +| `thumbnail_utils.py` | Builds and validates thumbnails | +| `metadata_utils.py` | Normalizes and stores clip metadata | + +--- + +### 📦 Folder Independence + +Each session folder is processed atomically — no cross-folder dependencies. + +* Safe to rerun on failed or partially processed sessions +* Idempotent if `rendered/` and history already exist + +--- + +### 🔧 Exception Paths + +* `timelapses/` are handled via custom renderer (future logic) +* `outtakes/` require manual metadata and never auto-upload + +--- + +See also: [`[Clip Handling Logic](https://chatgpt.com/c/Clip-Handling-Logic)`](./Clip-Handling-Logic), [`[File Naming](https://chatgpt.com/c/File-Naming-&-Directory-Conventions)`](./File-Naming-&-Directory-Conventions), [`[Metadata Extraction](https://chatgpt.com/c/Metadata-Extraction)`](./Metadata-Extraction) \ No newline at end of file