mirror of
https://github.com/maxdorninger/MediaManager.git
synced 2026-04-19 06:54:54 +02:00
2.6 KiB
2.6 KiB
Developer Guide
This section is for those who want to contribute to Media Manager or understand its internals.
Source Code
media_manager/: Backend FastAPI applicationweb/: Frontend SvelteKit applicationWriterside/: Documentationmetadata_relay/: Metadata relay service
Backend Development
- Uses
uvfor dependency management - Follows standard FastAPI project structure
- Database migrations are handled by Alembic
Frontend Development
- Uses
npmfor package management - SvelteKit with TypeScript
Contributing
- Consider opening an issue to discuss significant changes before starting work
Sequence Diagrams
sequenceDiagram
title Step-by-step: going from adding a show to importing a torrent of one of its seasons
User->>TV Router: Add a show (POST /tv/shows)
TV Router->>TV Service: Receive Show Request
TV Service->>MetadataProviderService: Get Metadata for Show
MetadataProviderService->>File System: Save Poster Image
TV Service->>Database: Store show information
User->>TV Router: Get Available Torrents for a Season (GET /tv/torrents)
TV Router->>TV Service: Receive Request
TV Service->>Indexer Service: Search for torrents
TV Service->>User: Returns Public Indexer Results
User->>TV Router: Download Torrent (POST /tv/torrents)
TV Router->>TV Service: Receive Request
Note over Database: This associates a season with a torrent id and the file_path_suffix
TV Service->>Database: Saves a SeasonFile object
TV Service->>Torrent Service: Download Torrent
Torrent Service->>File System: Save Torrentfile
Torrent Service->>QBittorrent: Download Torrent
Note over Scheduler: Hourly scheduler trigger
Scheduler->>TV Service: auto_import_all_show_torrents()
TV Service->>Database: Get all Shows and seasons which are associated with a torrent
TV Service->>Torrent Service: Update Torrent download statuses
Note over TV Service: if a torrent is finished downloading it will be imported
TV Service->>Torrent Service: get all files in the torrents directory
Note over Torrent Service: Extracts archives, guesses mimetype (Video/Subtitle/Other)
Note over TV Service: filters files based on some regex and renames them
TV Service->>File System: Move/Hardlink video and subtitle files
Note over User: User can now access the show in e.g. Jellyfin
Tech Stack
Backend
- Python with FastAPI
- SQLAlchemy
- Pydantic and Pydantic-Settings
Frontend
- TypeScript with SvelteKit
- Tailwind CSS
- shadcn-svelte
CI/CD
- GitHub Actions