Skip to content

Commit 669ecf9

Browse files
committed
Forced yt playerID config
1 parent bba635d commit 669ecf9

File tree

5 files changed

+19
-1
lines changed

5 files changed

+19
-1
lines changed

chrome/player/FastStreamClient.mjs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ export class FastStreamClient extends EventEmitter {
9090
disableVisualFilters: false,
9191
maximumDownloaders: 6,
9292
maxPlaybackRate: EnvUtils.isChrome() ? 16 : 8,
93+
youtubePlayerID: '',
9394
};
9495
this.state = {
9596
playing: false,
@@ -316,6 +317,7 @@ export class FastStreamClient extends EventEmitter {
316317
this.options.miniSize = options.miniSize;
317318
this.options.miniPos = options.miniPos;
318319
// this.options.defaultYoutubeClient = options.defaultYoutubeClient;
320+
this.options.youtubePlayerID = options.youtubePlayerID;
319321
this.options.maximumDownloaders = options.maximumDownloaders;
320322

321323
if (sessionStorage && sessionStorage.getItem('autoplayNext') !== null) {
@@ -805,6 +807,7 @@ export class FastStreamClient extends EventEmitter {
805807
const options = {};
806808
if (source.mode === PlayerModes.ACCELERATED_YT) {
807809
options.defaultClient = this.options.defaultYoutubeClient;
810+
options.forcedPlayerID = this.options.youtubePlayerID;
808811
}
809812
this.player = await this.playerLoader.createPlayer(source.mode, this, options);
810813

chrome/player/options/defaults/DefaultOptions.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,4 +46,5 @@ export const DefaultOptions = {
4646
miniPos: MiniplayerPositions.BOTTOM_RIGHT,
4747
videoDelay: 0,
4848
maximumDownloaders: 6,
49+
youtubePlayerID: '',
4950
};

chrome/player/options/index.html

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,12 @@ <h1 data-i18n="options_general_header"></h1>
280280
<div class="select" id="ytclient" data-i18n-label="options_general_ytclient"></div>
281281
</div> -->
282282

283+
<br>
284+
<div class="option grid2">
285+
<div class="label">Forced Youtube Player ID</div>
286+
<input class="text" type="text" id="ytplayerid"></input>
287+
</div>
288+
283289
<br>
284290

285291
<div class="option grid2">

chrome/player/options/options.mjs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ const daltonizerStrength = document.getElementById('daltonizerStrength');
4747
const previewEnabled = document.getElementById('previewenabled');
4848
const replaceDelay = document.getElementById('replacedelay');
4949
const colorTheme = document.getElementById('colortheme');
50+
const ytPlayerID = document.getElementById('ytplayerid');
5051
// const ytclient = document.getElementById('ytclient');
5152
const maxdownloaders = document.getElementById('maxdownloaders');
5253
autoEnableURLSInput.setAttribute('autocapitalize', 'off');
@@ -103,6 +104,7 @@ async function loadOptions(newOptions) {
103104
storeProgress.checked = !!Options.storeProgress;
104105
replaceDelay.value = Options.replaceDelay;
105106
maxdownloaders.value = Options.maximumDownloaders;
107+
ytPlayerID.value = Options.youtubePlayerID;
106108

107109
setSelectMenuValue(daltonizerType, Options.videoDaltonizerType);
108110
setSelectMenuValue(clickAction, Options.singleClickAction);
@@ -384,6 +386,11 @@ autoplayNext.addEventListener('change', () => {
384386
optionChanged();
385387
});
386388

389+
ytPlayerID.addEventListener('change', () => {
390+
Options.youtubePlayerID = ytPlayerID.value.trim();
391+
optionChanged();
392+
});
393+
387394
maxSpeed.addEventListener('change', () => {
388395
// parse value, number unit/s
389396
Options.maxSpeed = StringUtils.getSpeedValue(maxSpeed.value);

chrome/player/players/yt/YTPlayer.mjs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ export default class YTPlayer extends DashPlayer {
2828
} else {
2929
this.defaultClient = ClientType.IOS;
3030
}
31+
this.forcedPlayerID = options?.forcedPlayerID || undefined;
3132
this.paramCache = new Map();
3233
}
3334

@@ -417,7 +418,7 @@ export default class YTPlayer extends DashPlayer {
417418
fetch: (mode === ClientType.IOS) ? this.youtubeFetchIOS.bind(this) : this.youtubeFetch.bind(this),
418419
client_type: mode === ClientType.IOS ? undefined : mode,
419420
runner_location: 'https://sandbox.faststream.online/',
420-
player_id: '0004de42',
421+
player_id: this.forcedPlayerID || '0004de42',
421422
});
422423

423424
const tokens = await getPoTokens(youtube.session, identifier);

0 commit comments

Comments
 (0)