# darknessth22/media-utilities architecture

> Architecture diagram of the GitHub repository darknessth22/media-utilities, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/darknessth22/media-utilities
- Repository: https://github.com/darknessth22/media-utilities

## Overview

Videl is a desktop media workstation whose main workflow is: a user selects a tool and input, its GUI section runs a core operation in the desktop app, and the result is saved as a media or document file. The core spans downloads, media editing/conversion, AI transforms, and document/PDF work, with settings and job history supporting use across tools. The README documents additional capabilities beyond the sampled source; those are represented at subsystem level, and their internal wiring is not inferred where source excerpts do not establish it.

Main entry points: [`gui/app.py`](https://github.com/darknessth22/media-utilities/blob/master/gui/app.py) (Main window), [`core/downloader.py`](https://github.com/darknessth22/media-utilities/blob/master/core/downloader.py) (Media downloader), [`core/converter.py`](https://github.com/darknessth22/media-utilities/blob/master/core/converter.py) (Media converter), [`core/trimmer.py`](https://github.com/darknessth22/media-utilities/blob/master/core/trimmer.py) (Video processing)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Desktop application"]
  node_desktop["Main window<br/>[app.py]"]
  node_home["Home dashboard<br/>[home_page.py]"]
  node_workers["Background workers<br/>[worker.py]"]
end

subgraph group_media["Media workflows"]
  node_download_ui["Download tools"]
  node_downloader["Media downloader<br/>[downloader.py]"]
  node_convert_ui["Convert tools<br/>[convert_section.py]"]
  node_converter["Media converter<br/>[converter.py]"]
  node_video_tools["Video editing tools<br/>[trim_section.py]"]
  node_video_core["Video processing<br/>[trimmer.py]"]
end

subgraph group_ai["AI and images"]
  node_image_ui["Image editor"]
  node_image_core["Image processing<br/>[image_editor.py]"]
  node_ai_tools["AI media tools"]
  node_ai_core["AI components<br/>[ai_components.py]"]
  node_ai_installer["AI package manager<br/>[model_manager.py]"]
end

subgraph group_documents["Documents and search"]
  node_docs_ui["Document and PDF tools"]
  node_documents_core["Document conversion<br/>[converter.py]"]
  node_captions["Captions and OCR<br/>[subtitles.py]"]
  node_file_search["File finder and index<br/>[file_search.py]"]
end

subgraph group_support["State and integrations"]
  node_settings[("Settings<br/>[settings.py]")]
  node_history[("Job history<br/>[manager.py]")]
end

node_user(("User"))
node_output["Output files"]
node_download_service["Download platforms"]
node_ffmpeg["FFmpeg"]

node_user -->|"uses"| node_desktop
node_desktop -->|"shows"| node_home
node_desktop -->|"runs jobs"| node_workers
node_desktop -->|"reads and writes"| node_settings
node_home -->|"opens tools"| node_desktop
node_desktop -->|"shows"| node_download_ui
node_download_ui -->|"starts download"| node_downloader
node_downloader -.->|"fetches media"| node_download_service
node_downloader -->|"saves media"| node_output
node_desktop -->|"shows"| node_convert_ui
node_convert_ui -->|"starts conversion"| node_converter
node_converter -.->|"processes video"| node_ffmpeg
node_converter -->|"writes result"| node_output
node_desktop -->|"shows"| node_video_tools
node_video_tools -->|"starts edit"| node_video_core
node_video_core -.->|"processes video"| node_ffmpeg
node_video_core -->|"writes result"| node_output
node_desktop -->|"shows"| node_image_ui
node_image_ui -->|"starts edit"| node_image_core
node_image_core -->|"writes image"| node_output
node_desktop -->|"shows"| node_ai_tools
node_ai_tools -->|"starts transform"| node_ai_core
node_ai_core -->|"checks components"| node_ai_installer
node_ai_core -->|"writes result"| node_output
node_desktop -->|"shows"| node_docs_ui
node_docs_ui -->|"starts conversion"| node_documents_core
node_documents_core -->|"writes document"| node_output
node_docs_ui -->|"uses text tools"| node_captions
node_desktop -->|"provides file search"| node_file_search
node_desktop -->|"records jobs"| node_history

click node_desktop "https://github.com/darknessth22/media-utilities/blob/master/gui/app.py"
click node_home "https://github.com/darknessth22/media-utilities/blob/master/gui/pages/home_page.py"
click node_workers "https://github.com/darknessth22/media-utilities/blob/master/gui/worker.py"
click node_download_ui "https://github.com/darknessth22/media-utilities/blob/master/gui/tabs/download_section.py"
click node_downloader "https://github.com/darknessth22/media-utilities/blob/master/core/downloader.py"
click node_convert_ui "https://github.com/darknessth22/media-utilities/blob/master/gui/tabs/convert_section.py"
click node_converter "https://github.com/darknessth22/media-utilities/blob/master/core/converter.py"
click node_video_tools "https://github.com/darknessth22/media-utilities/blob/master/gui/tabs/trim_section.py"
click node_video_core "https://github.com/darknessth22/media-utilities/blob/master/core/trimmer.py"
click node_image_ui "https://github.com/darknessth22/media-utilities/blob/master/gui/tabs/image_editor_section.py"
click node_image_core "https://github.com/darknessth22/media-utilities/blob/master/core/image_editor.py"
click node_ai_tools "https://github.com/darknessth22/media-utilities/blob/master/gui/tabs/bg_eraser_section.py"
click node_ai_core "https://github.com/darknessth22/media-utilities/blob/master/core/ai_components.py"
click node_ai_installer "https://github.com/darknessth22/media-utilities/blob/master/utils/model_manager.py"
click node_docs_ui "https://github.com/darknessth22/media-utilities/blob/master/gui/tabs/document_section.py"
click node_documents_core "https://github.com/darknessth22/media-utilities/blob/master/core/converter.py"
click node_captions "https://github.com/darknessth22/media-utilities/blob/master/core/subtitles.py"
click node_file_search "https://github.com/darknessth22/media-utilities/blob/master/core/file_search.py"
click node_settings "https://github.com/darknessth22/media-utilities/blob/master/core/settings.py"
click node_history "https://github.com/darknessth22/media-utilities/blob/master/core/history/manager.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_desktop,node_home,node_workers,node_user toneBlue
class node_download_ui,node_downloader,node_convert_ui,node_converter,node_video_tools,node_video_core toneAmber
class node_image_ui,node_image_core,node_ai_tools,node_ai_core,node_ai_installer toneMint
class node_docs_ui,node_documents_core,node_captions,node_file_search toneRose
class node_settings,node_history,node_output,node_download_service,node_ffmpeg toneIndigo
```

## Components

### Desktop application

- [Main window](https://github.com/darknessth22/media-utilities/blob/master/gui/app.py): `gui/app.py`
- [Home dashboard](https://github.com/darknessth22/media-utilities/blob/master/gui/pages/home_page.py): `gui/pages/home_page.py`
- [Background workers](https://github.com/darknessth22/media-utilities/blob/master/gui/worker.py): `gui/worker.py`

### Media workflows

- [Download tools](https://github.com/darknessth22/media-utilities/blob/master/gui/tabs/download_section.py): `gui/tabs/download_section.py`
- [Media downloader](https://github.com/darknessth22/media-utilities/blob/master/core/downloader.py): `core/downloader.py`
- [Convert tools](https://github.com/darknessth22/media-utilities/blob/master/gui/tabs/convert_section.py): `gui/tabs/convert_section.py`
- [Media converter](https://github.com/darknessth22/media-utilities/blob/master/core/converter.py): `core/converter.py`
- [Video editing tools](https://github.com/darknessth22/media-utilities/blob/master/gui/tabs/trim_section.py): `gui/tabs/trim_section.py`
- [Video processing](https://github.com/darknessth22/media-utilities/blob/master/core/trimmer.py): `core/trimmer.py`

### AI and images

- [Image editor](https://github.com/darknessth22/media-utilities/blob/master/gui/tabs/image_editor_section.py): `gui/tabs/image_editor_section.py`
- [Image processing](https://github.com/darknessth22/media-utilities/blob/master/core/image_editor.py): `core/image_editor.py`
- [AI media tools](https://github.com/darknessth22/media-utilities/blob/master/gui/tabs/bg_eraser_section.py): `gui/tabs/bg_eraser_section.py`
- [AI components](https://github.com/darknessth22/media-utilities/blob/master/core/ai_components.py): `core/ai_components.py`
- [AI package manager](https://github.com/darknessth22/media-utilities/blob/master/utils/model_manager.py): `utils/model_manager.py`

### Documents and search

- [Document and PDF tools](https://github.com/darknessth22/media-utilities/blob/master/gui/tabs/document_section.py): `gui/tabs/document_section.py`
- [Document conversion](https://github.com/darknessth22/media-utilities/blob/master/core/converter.py): `core/converter.py`
- [Captions and OCR](https://github.com/darknessth22/media-utilities/blob/master/core/subtitles.py): `core/subtitles.py`
- [File finder and index](https://github.com/darknessth22/media-utilities/blob/master/core/file_search.py): `core/file_search.py`

### State and integrations

- [Settings](https://github.com/darknessth22/media-utilities/blob/master/core/settings.py): `core/settings.py`
- [Job history](https://github.com/darknessth22/media-utilities/blob/master/core/history/manager.py): `core/history/manager.py`

### Other components

- **User**
- **Output files**
- **Download platforms**
- **FFmpeg**

## Connections

- User → Main window: uses
- Main window → Home dashboard: shows
- Main window → Background workers: runs jobs
- Main window → Settings: reads and writes
- Home dashboard → Main window: opens tools
- Main window → Download tools: shows
- Download tools → Media downloader: starts download
- Media downloader → Download platforms: fetches media
- Media downloader → Output files: saves media
- Main window → Convert tools: shows
- Convert tools → Media converter: starts conversion
- Media converter → FFmpeg: processes video
- Media converter → Output files: writes result
- Main window → Video editing tools: shows
- Video editing tools → Video processing: starts edit
- Video processing → FFmpeg: processes video
- Video processing → Output files: writes result
- Main window → Image editor: shows
- Image editor → Image processing: starts edit
- Image processing → Output files: writes image
- Main window → AI media tools: shows
- AI media tools → AI components: starts transform
- AI components → AI package manager: checks components
- AI components → Output files: writes result
- Main window → Document and PDF tools: shows
- Document and PDF tools → Document conversion: starts conversion
- Document conversion → Output files: writes document
- Document and PDF tools → Captions and OCR: uses text tools
- Main window → File finder and index: provides file search
- Main window → Job history: records jobs
