Feat : Change quality
This commit is contained in:
@@ -336,6 +336,25 @@ export interface FullscreenSettings {
|
||||
delayMs: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sélection automatique de la meilleure qualité offerte par le lecteur Stripchat.
|
||||
*
|
||||
* Stripchat ne démarre pas toujours sur sa meilleure qualité disponible — la
|
||||
* valeur active par défaut varie, et rien ne garantit qu'elle corresponde au
|
||||
* maximum réellement proposé pour ce streamer. Chaque nouvelle page (donc
|
||||
* chaque nouveau stream ouvert) repart de ce choix du site, pas du précédent.
|
||||
*
|
||||
* Couplé à la structure actuelle du lecteur Stripchat (`.player-resolution`,
|
||||
* `.player-resolution-tooltip__button--resolution`) : n'a d'effet qu'en mode
|
||||
* de pilotage WebDriver BiDi, et se limite à ne rien faire si le site change
|
||||
* son balisage.
|
||||
*/
|
||||
export interface StreamQualitySettings {
|
||||
enabled: boolean;
|
||||
/** Délai après le chargement de la page, le temps que le lecteur s'initialise. */
|
||||
delayMs: number;
|
||||
}
|
||||
|
||||
export interface WatchSettings {
|
||||
enabled: boolean;
|
||||
provider: WatchProvider;
|
||||
@@ -375,6 +394,7 @@ export interface WatchSettings {
|
||||
*/
|
||||
offlineStopDelayMs: number;
|
||||
fullscreen: FullscreenSettings;
|
||||
streamQuality: StreamQualitySettings;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -540,6 +560,10 @@ export const DEFAULT_WATCH_SETTINGS: WatchSettings = {
|
||||
windowMatch: 'Stripchat',
|
||||
delayMs: 4000,
|
||||
},
|
||||
streamQuality: {
|
||||
enabled: true,
|
||||
delayMs: 3000,
|
||||
},
|
||||
};
|
||||
|
||||
/** État courant de la surveillance, remonté avec le statut de l'agent. */
|
||||
@@ -705,6 +729,8 @@ export const AGENT_EVENTS = [
|
||||
'watch.failed',
|
||||
'fullscreen.restored',
|
||||
'fullscreen.failed',
|
||||
'quality.selected',
|
||||
'quality.failed',
|
||||
'browser.opened',
|
||||
'browser.closed',
|
||||
'browser.imported',
|
||||
@@ -917,6 +943,7 @@ export function normalizeWatchSettings(raw: unknown): WatchSettings {
|
||||
const input = (raw ?? {}) as Partial<WatchSettings>;
|
||||
const base = DEFAULT_WATCH_SETTINGS;
|
||||
const fullscreen = (input.fullscreen ?? {}) as Partial<FullscreenSettings>;
|
||||
const streamQuality = (input.streamQuality ?? {}) as Partial<StreamQualitySettings>;
|
||||
|
||||
const clamp = (value: unknown, fallback: number, min: number, max: number): number => {
|
||||
const parsed = Number(value);
|
||||
@@ -955,6 +982,10 @@ export function normalizeWatchSettings(raw: unknown): WatchSettings {
|
||||
: base.fullscreen.windowMatch,
|
||||
delayMs: clamp(fullscreen.delayMs, base.fullscreen.delayMs, 0, 120_000),
|
||||
},
|
||||
streamQuality: {
|
||||
enabled: streamQuality.enabled !== false,
|
||||
delayMs: clamp(streamQuality.delayMs, base.streamQuality.delayMs, 0, 120_000),
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user