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

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

View file

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