add support for external token generator
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 57s

This commit is contained in:
Fijxu 2024-12-16 15:26:33 -03:00
parent d631aada71
commit eb6ada60eb
Signed by: Fijxu
GPG key ID: 32C1DDF333EDA6A4

View file

@ -50,6 +50,10 @@ if (!innertubeClientOauthEnabled) {
innertubeClientCache = new UniversalCache(false); innertubeClientCache = new UniversalCache(false);
} }
const externalTokenGenerator = konfigStore.get(
"server.external_token_generator",
) as string;
innertubeClient = await Innertube.create({ innertubeClient = await Innertube.create({
cache: innertubeClientCache, cache: innertubeClientCache,
retrieve_player: innertubeClientFetchPlayer, retrieve_player: innertubeClientFetchPlayer,
@ -65,27 +69,58 @@ if (!innertubeClientOauthEnabled) {
innertubeClientCache as UniversalCache, innertubeClientCache as UniversalCache,
); );
} }
setInterval( if (externalTokenGenerator != "" && externalTokenGenerator != undefined) {
async () => { console.log(
const currentDateTime = new Date(); "using external token generator at " + externalTokenGenerator,
console.log("regenrate token called: " + currentDateTime) );
if (innertubeClientJobPoTokenEnabled) { setInterval(async () => {
innertubeClient = await poTokenGenerate( const response = await fetch(
innertubeClient, `${externalTokenGenerator}/generate`,
konfigStore, );
innertubeClientCache, const data = await response.json();
); innertubeClient.session.po_token = data.potoken;
const currentDateTimexd = new Date(); innertubeClient.session.context.client.visitorData =
console.log("regenerate token finished: " + currentDateTimexd) data.visitorData;
console.log("po_token: " + innertubeClient.session.po_token) console.log(data.potoken);
} else { console.log(data.visitorData);
innertubeClient = await Innertube.create({ }, 1000);
cache: innertubeClientCache, } else {
retrieve_player: innertubeClientFetchPlayer, console.log(
}); "using internal token generator"
} );
}, setInterval(
konfigStore.get("jobs.youtube_session.frequency_seconds") as number * 1000 || 50000); async () => {
const currentDateTime = new Date();
console.log("regenrate token called: " + currentDateTime);
if (innertubeClientJobPoTokenEnabled) {
innertubeClient = await poTokenGenerate(
innertubeClient,
konfigStore,
innertubeClientCache,
);
const currentDateTimexd = new Date();
console.log(
"regenerate token finished: " + currentDateTimexd,
);
console.log(
"po_token: " + innertubeClient.session.po_token,
);
console.log(
"visitor_data: " +
innertubeClient.session.context.client.visitorData,
);
} else {
innertubeClient = await Innertube.create({
cache: innertubeClientCache,
retrieve_player: innertubeClientFetchPlayer,
});
}
},
konfigStore.get(
"jobs.youtube_session.frequency_seconds",
) as number * 1000 || 50000,
);
}
} else if (innertubeClientOauthEnabled) { } else if (innertubeClientOauthEnabled) {
// Fired when waiting for the user to authorize the sign in attempt. // Fired when waiting for the user to authorize the sign in attempt.
innertubeClient.session.on("auth-pending", (data) => { innertubeClient.session.on("auth-pending", (data) => {
@ -121,7 +156,6 @@ const https = Deno.env.get("HTTPS");
const port = konfigStore.get("server.port") as number; const port = konfigStore.get("server.port") as number;
const host = konfigStore.get("server.host") as string; const host = konfigStore.get("server.host") as string;
if (https == "TRUE" || https == "true") { if (https == "TRUE" || https == "true") {
const cert = Deno.readTextFileSync("/data/cert.pem"); const cert = Deno.readTextFileSync("/data/cert.pem");
const key = Deno.readTextFileSync("/data/key.key"); const key = Deno.readTextFileSync("/data/key.key");