How karaagexc/cinepresence works
CinePresence is a Windows tray application that turns supported playback sessions into Discord Rich Presence. Its main workflow reads Windows or VLC playback, selects and parses a source, resolves a title against TMDB (using cached matches and saved corrections), builds timed activity, and publishes or clears it through Discord. The UI supports source controls, settings, and manual match correction. Edges are limited to relationships visible in excerpts, the SOURCE INDEX, or README; unsampled capability links are omitted rather than inferred.
Main entry points: AppController.cs App controller · PresenceEngine.cs Presence engine · App.xaml.cs Tray app · MainWindow.xaml.cs Main window
Components 19
App and controls
- Tray app
src/CinePresence.App/App.xaml.cs - Main window
src/CinePresence.App/MainWindow.xaml.cs - Match correction
src/CinePresence.App/MatchWindow.cs - App controller
src/CinePresence.App/Services/AppController.cs - TMDB artwork
src/CinePresence.App/Services/TmdbBranding.cs
Playback sources
- Windows sessions
src/CinePresence.App/Services/WindowsMediaAdapter.cs - VLC HTTP adapter
src/CinePresence.Core/VlcAdapter.cs - Source selection
src/CinePresence.Core/SourceSelector.cs
Title matching
- Title parser
src/CinePresence.Core/TitleParser.cs - TMDB resolver
src/CinePresence.Core/TmdbClient.cs
Presence publishing
- Presence engine
src/CinePresence.Core/PresenceEngine.cs - Payload builder
src/CinePresence.Core/PresenceBuilder.cs - Discord publisher
src/CinePresence.App/Services/DiscordPublisher.cs
Local state
- Match cache
src/CinePresence.Core/MediaCache.cs - Settings store
src/CinePresence.App/Services/SettingsStore.cs
Other components
- User
- VLC player
- TMDB API
- Discord desktop
Connections 23
- User → Tray app: launches
src/CinePresence.App/App.xaml.cs - Tray app → App controller: creates
src/CinePresence.App/App.xaml.cs - Tray app → Windows sessions: diagnoses
src/CinePresence.App/App.xaml.cs - Tray app → Discord publisher: diagnoses
src/CinePresence.App/App.xaml.cs - User → Main window: controls
README.md - Main window → App controller: configures
src/CinePresence.App/MainWindow.xaml.cs - Main window → Match correction: opens
src/CinePresence.App/MainWindow.xaml.cs - Match correction → App controller: searches and corrects
src/CinePresence.App/MatchWindow.cs - App controller → Settings store: loads and saves
src/CinePresence.App/Services/AppController.cs - App controller → Windows sessions: polls
src/CinePresence.App/Services/AppController.cs - App controller → VLC HTTP adapter: polls
src/CinePresence.App/Services/AppController.cs - VLC HTTP adapter → VLC player: reads status
src/CinePresence.Core/VlcAdapter.cs - App controller → Presence engine: updates snapshots
src/CinePresence.App/Services/AppController.cs - Presence engine → Source selection: selects source
src/CinePresence.Core/PresenceEngine.cs - Presence engine → Title parser: parses title
src/CinePresence.Core/PresenceEngine.cs - Presence engine → TMDB resolver: resolves title
src/CinePresence.Core/PresenceEngine.cs - TMDB resolver → Match cache: reads and writes
src/CinePresence.Core/TmdbClient.cs - TMDB resolver → TMDB API: searches and fetches details
src/CinePresence.Core/TmdbClient.cs - Presence engine → Payload builder: builds payload
src/CinePresence.Core/PresenceEngine.cs - Presence engine → Discord publisher: publishes or clears
src/CinePresence.Core/PresenceEngine.cs - Discord publisher → Discord desktop: sets activity
src/CinePresence.App/Services/DiscordPublisher.cs - Main window → TMDB artwork: uses artwork
src/CinePresence.App/MainWindow.xaml.cs - App controller → TMDB resolver: constructs resolver
src/CinePresence.App/Services/AppController.cs