Conversation
hendy643
commented
Mar 15, 2026
- Implemented IPC commands for opening and setting the path for PotPlayer.
- Added PotPlayer as a video player option in settings and player services.
- Enhanced the settings component to allow users to specify the PotPlayer path.
- Updated internationalization files to include PotPlayer labels and descriptions.
- Modified the external player session interface to support PotPlayer.
- Updated the effects and services to handle PotPlayer interactions.
- Implemented IPC commands for opening and setting the path for PotPlayer. - Added PotPlayer as a video player option in settings and player services. - Enhanced the settings component to allow users to specify the PotPlayer path. - Updated internationalization files to include PotPlayer labels and descriptions. - Modified the external player session interface to support PotPlayer. - Updated the effects and services to handle PotPlayer interactions.
Greptile SummaryThis PR adds PotPlayer as a fourth external video player option in IPTVnator (joining MPV, VLC, and the embedded ArtPlayer). It wires the full integration stack: IPC commands, preload bridge, electron service dispatch, player/effects services, settings UI (Windows-only), signal store, shared interfaces, and i18n strings for 17 locales. Key observations:
Confidence Score: 3/5
Important Files Changed
Sequence DiagramsequenceDiagram
participant User
participant SettingsUI as Settings Component
participant EffectsOrPlayer as Effects / PlayerService
participant ElectronSvc as ElectronService
participant Preload as main.preload.ts
participant Backend as player.events.ts (IPC)
participant PotPlayer as PotPlayer Process
User->>SettingsUI: Select PotPlayer (Windows only)
SettingsUI->>Backend: setPotPlayerPath via IPC (SET_POTPLAYER_PATH)
Backend->>Backend: store.set(POTPLAYER_PATH, path)
User->>EffectsOrPlayer: Play channel
EffectsOrPlayer->>ElectronSvc: sendIpcEvent(OPEN_POTPLAYER, payload)
ElectronSvc->>Preload: window.electron.openInPotPlayer(url, title, ...)
Preload->>Backend: ipcRenderer.invoke('OPEN_POTPLAYER', url, ...)
Backend->>Backend: beginSession(), getPotPlayerPath()
Backend->>PotPlayer: spawn(potPlayerPath, [url])
Note over Backend,PotPlayer: userAgent/referer/headers/startTime NOT forwarded
PotPlayer-->>Backend: proc 'exit' event
Backend->>Backend: markClosed(session.id)
Backend-->>Preload: ExternalPlayerSession
Preload-->>ElectronSvc: ExternalPlayerSession
ElectronSvc-->>EffectsOrPlayer: ExternalPlayerSession
|
There was a problem hiding this comment.
Pull request overview
Adds PotPlayer as a new external video player option for the Electron desktop app, including IPC wiring, settings persistence defaults, and UI/i18n updates.
Changes:
- Extend shared interfaces/settings to include PotPlayer and a configurable PotPlayer binary path.
- Add new IPC commands + renderer/electron-backend handlers to launch streams in PotPlayer.
- Update Settings UI and multiple locale files for the new PotPlayer path fields and player selection label.
Reviewed changes
Copilot reviewed 31 out of 32 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| libs/shared/interfaces/src/lib/settings.interface.ts | Adds VideoPlayer.PotPlayer and potPlayerPath to the Settings model. |
| libs/shared/interfaces/src/lib/ipc-commands.ts | Introduces OPEN_POTPLAYER and SET_POTPLAYER_PATH IPC command constants. |
| libs/shared/interfaces/src/lib/external-player-session.interface.ts | Extends ExternalPlayerName union to include potplayer. |
| libs/services/src/lib/settings-store.service.ts | Adds potPlayerPath to default settings. |
| libs/m3u-state/src/lib/effects.ts | Sends OPEN_POTPLAYER IPC events when PotPlayer is selected in settings. |
| global.d.ts | Extends window.electron typings with PotPlayer APIs. |
| apps/web/src/assets/i18n/zhtw.json | Adds PotPlayer path strings (Traditional Chinese). |
| apps/web/src/assets/i18n/zh.json | Adds PotPlayer path strings (Simplified Chinese). |
| apps/web/src/assets/i18n/tr.json | Adds PotPlayer path strings (Turkish). |
| apps/web/src/assets/i18n/ru.json | Adds PotPlayer path strings (Russian). |
| apps/web/src/assets/i18n/pt.json | Adds PotPlayer path strings (Portuguese). |
| apps/web/src/assets/i18n/pl.json | Adds PotPlayer path strings (Polish). |
| apps/web/src/assets/i18n/nl.json | Adds PotPlayer path strings (Dutch). |
| apps/web/src/assets/i18n/ko.json | Adds PotPlayer path strings (Korean). |
| apps/web/src/assets/i18n/ja.json | Adds PotPlayer path strings (Japanese). |
| apps/web/src/assets/i18n/it.json | Adds PotPlayer path strings (Italian). |
| apps/web/src/assets/i18n/fr.json | Adds PotPlayer path strings (French). |
| apps/web/src/assets/i18n/es.json | Adds PotPlayer player-name + path strings (Spanish). |
| apps/web/src/assets/i18n/en.json | Adds PotPlayer player-name + path strings (English). |
| apps/web/src/assets/i18n/el.json | Adds PotPlayer path strings (Greek). |
| apps/web/src/assets/i18n/de.json | Adds PotPlayer path strings (German). |
| apps/web/src/assets/i18n/by.json | Adds PotPlayer path strings and fixes trailing comma (Belarusian). |
| apps/web/src/assets/i18n/ary.json | Adds PotPlayer path strings (Moroccan Arabic). |
| apps/web/src/assets/i18n/ar.json | Adds PotPlayer path strings (Arabic). |
| apps/web/src/app/settings/settings.component.ts | Adds PotPlayer as a selectable external player and adds potPlayerPath to the form model. |
| apps/web/src/app/settings/settings.component.html | Adds PotPlayer path input shown when PotPlayer is selected. |
| apps/web/src/app/services/player.service.ts | Adds PotPlayer external launch branch calling OPEN_POTPLAYER. |
| apps/web/src/app/services/player.service.spec.ts | Updates embedded-player classification test to include PotPlayer. |
| apps/web/src/app/services/electron.service.ts | Adds renderer-side handling for OPEN_POTPLAYER IPC event. |
| apps/electron-backend/src/app/services/store.service.ts | Adds POTPLAYER_PATH key to electron-conf store typing/constants. |
| apps/electron-backend/src/app/events/player.events.ts | Implements OPEN_POTPLAYER / SET_POTPLAYER_PATH IPC handlers and default path resolution. |
| apps/electron-backend/src/app/api/main.preload.ts | Exposes openInPotPlayer and setPotPlayerPath via the preload bridge. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Adds PotPlayer as a supported external video player (Windows/Electron) across the shared contracts, renderer settings/player launch flow, and Electron main-process IPC handling.
Changes:
- Extend shared settings + IPC contracts to include PotPlayer and its configurable binary path.
- Add PotPlayer option to the Settings UI (Windows desktop only) and propagate the configured path to Electron.
- Implement PotPlayer launch handling end-to-end (NgRx effects / PlayerService → renderer IPC routing → Electron preload + main-process spawn).
Reviewed changes
Copilot reviewed 32 out of 33 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| libs/shared/interfaces/src/lib/settings.interface.ts | Adds VideoPlayer.PotPlayer and potPlayerPath to shared settings contract. |
| libs/shared/interfaces/src/lib/ipc-commands.ts | Introduces OPEN_POTPLAYER and SET_POTPLAYER_PATH IPC command constants. |
| libs/shared/interfaces/src/lib/external-player-session.interface.ts | Extends external player session name union to include potplayer. |
| libs/services/src/lib/settings-store.service.ts | Adds default + persistence plumbing for potPlayerPath. |
| libs/playlist/m3u/feature-player/src/lib/video-player/video-player.component.ts | Treats PotPlayer as an “external player” in player logic. |
| libs/m3u-state/src/lib/effects.ts | Adds PotPlayer handling for “open in external player” flows. |
| global.d.ts | Extends window.electron typing with PotPlayer APIs (open + set path). |
| apps/web/src/assets/i18n/zhtw.json | Adds PotPlayer path labels/descriptions (zhtw). |
| apps/web/src/assets/i18n/zh.json | Adds PotPlayer path labels/descriptions (zh). |
| apps/web/src/assets/i18n/tr.json | Adds PotPlayer path labels/descriptions (tr). |
| apps/web/src/assets/i18n/ru.json | Adds PotPlayer player label + path labels/descriptions (ru). |
| apps/web/src/assets/i18n/pt.json | Adds PotPlayer path labels/descriptions (pt). |
| apps/web/src/assets/i18n/pl.json | Adds PotPlayer path labels/descriptions (pl). |
| apps/web/src/assets/i18n/nl.json | Adds PotPlayer path labels/descriptions (nl). |
| apps/web/src/assets/i18n/ko.json | Adds PotPlayer path labels/descriptions (ko). |
| apps/web/src/assets/i18n/ja.json | Adds PotPlayer path labels/descriptions (ja). |
| apps/web/src/assets/i18n/it.json | Adds PotPlayer player label + path labels/descriptions (it). |
| apps/web/src/assets/i18n/fr.json | Adds PotPlayer path labels/descriptions (fr). |
| apps/web/src/assets/i18n/es.json | Adds PotPlayer player label + path labels/descriptions (es). |
| apps/web/src/assets/i18n/en.json | Adds PotPlayer player label + path labels/descriptions (en). |
| apps/web/src/assets/i18n/el.json | Adds PotPlayer path labels/descriptions (el). |
| apps/web/src/assets/i18n/de.json | Adds PotPlayer player label + path labels/descriptions (de). |
| apps/web/src/assets/i18n/by.json | Adds PotPlayer path labels/descriptions (by) and fixes JSON comma. |
| apps/web/src/assets/i18n/ary.json | Adds PotPlayer path labels/descriptions (ary). |
| apps/web/src/assets/i18n/ar.json | Adds PotPlayer path labels/descriptions (ar). |
| apps/web/src/app/settings/settings.component.ts | Shows PotPlayer as a player option on Windows desktop; adds potPlayerPath control and saves it to Electron. |
| apps/web/src/app/settings/settings.component.html | Adds PotPlayer path field UI when PotPlayer is selected. |
| apps/web/src/app/services/player.service.ts | Adds PotPlayer external-launch branch via OPEN_POTPLAYER. |
| apps/web/src/app/services/player.service.spec.ts | Extends embedded-player classification test to include PotPlayer. |
| apps/web/src/app/services/electron.service.ts | Routes OPEN_POTPLAYER through preload openInPotPlayer and adds error handling. |
| apps/electron-backend/src/app/services/store.service.ts | Adds POTPLAYER_PATH persistence key to Electron store. |
| apps/electron-backend/src/app/events/player.events.ts | Implements OPEN_POTPLAYER spawn + SET_POTPLAYER_PATH handler; adds default path discovery. |
| apps/electron-backend/src/app/api/main.preload.ts | Exposes openInPotPlayer and setPotPlayerPath in the preload bridge. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…ayer.component.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>