Started method for pulling potokens on android
This commit is contained in:
@@ -11,6 +11,7 @@ apply from: "../capacitor-cordova-android-plugins/cordova.variables.gradle"
|
||||
dependencies {
|
||||
implementation project(':capacitor-app')
|
||||
implementation project(':capacitor-browser')
|
||||
implementation project(':capgo-inappbrowser')
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -7,3 +7,6 @@ project(':capacitor-app').projectDir = new File('../node_modules/@capacitor/app/
|
||||
|
||||
include ':capacitor-browser'
|
||||
project(':capacitor-browser').projectDir = new File('../node_modules/@capacitor/browser/android')
|
||||
|
||||
include ':capgo-inappbrowser'
|
||||
project(':capgo-inappbrowser').projectDir = new File('../node_modules/@capgo/inappbrowser/android')
|
||||
|
||||
@@ -8,7 +8,7 @@ const config: CapacitorConfig = {
|
||||
plugins: {
|
||||
CapacitorHttp: {
|
||||
enabled: true
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
Generated
+855
-467
File diff suppressed because it is too large
Load Diff
@@ -31,6 +31,7 @@
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-plugin-svelte": "^2.44.0",
|
||||
"i": "^0.3.7",
|
||||
"jsdom": "^25.0.0",
|
||||
"npm": "^10.8.3",
|
||||
"prettier": "^3.3.3",
|
||||
"prettier-plugin-svelte": "^3.2.6",
|
||||
@@ -49,6 +50,7 @@
|
||||
"@capacitor/browser": "^6.0.2",
|
||||
"@capacitor/cli": "6.1.2",
|
||||
"@capacitor/core": "^6.1.2",
|
||||
"@capgo/inappbrowser": "^6.6.8",
|
||||
"@ffmpeg/ffmpeg": "^0.12.10",
|
||||
"beercss": "^3.7.7",
|
||||
"fuse.js": "^7.0.0",
|
||||
@@ -64,6 +66,7 @@
|
||||
"svelte-i18n": "^4.0.0",
|
||||
"svelte-infinite-loading": "^1.4.0",
|
||||
"svelte-persisted-store": "^0.11.0",
|
||||
"terser": "^5.33.0",
|
||||
"vidstack": "^1.12.9"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
import { InAppBrowser } from '@capgo/inappbrowser';
|
||||
import { minify } from 'terser';
|
||||
|
||||
export interface PoTokens {
|
||||
visitor_data: string;
|
||||
po_token: string;
|
||||
}
|
||||
|
||||
export async function getPoToken(): Promise<PoTokens> {
|
||||
return new Promise((resolve, reject) => {
|
||||
const messageListener = async (data: any) => {
|
||||
await InAppBrowser.close();
|
||||
resolve(data);
|
||||
InAppBrowser.removeAllListeners(); // Clean up the listener
|
||||
};
|
||||
|
||||
const closeListener = async () => {
|
||||
await InAppBrowser.removeAllListeners();
|
||||
};
|
||||
|
||||
const urlChangeListener = async () => {
|
||||
await InAppBrowser.clearAllCookies();
|
||||
await InAppBrowser.clearCache();
|
||||
|
||||
// Code must be minified to ensure runs correctly.
|
||||
await InAppBrowser.executeScript({
|
||||
code: (await minify(`const originalOpen = XMLHttpRequest.prototype.open;
|
||||
const originalSend = XMLHttpRequest.prototype.send;
|
||||
|
||||
XMLHttpRequest.prototype.open = function (method, url) {
|
||||
this._url = url;
|
||||
originalOpen.apply(this, arguments);
|
||||
};
|
||||
|
||||
XMLHttpRequest.prototype.send = function (body) {
|
||||
const xhr = this;
|
||||
if (this._url.includes("/youtubei/v1/player")) {
|
||||
this.addEventListener("load", function () {
|
||||
try {
|
||||
const postJson = JSON.parse(body);
|
||||
window.mobileApp.postMessage({visitor_data: postJson.context.client.visitorData, po_token: postJson.serviceIntegrityDimensions.poToken});
|
||||
} catch (error) {
|
||||
console.error("Error parsing request body:", error);
|
||||
}
|
||||
});
|
||||
}
|
||||
originalSend.apply(this, arguments);
|
||||
};
|
||||
|
||||
function attemptClickPlayButton() {
|
||||
const interval = setInterval(() => {
|
||||
const playButtons = document.getElementsByClassName("ytp-play-button");
|
||||
if (playButtons.length > 0) {
|
||||
playButtons[0].click();
|
||||
clearInterval(interval);
|
||||
}
|
||||
}, 100);
|
||||
}
|
||||
|
||||
attemptClickPlayButton();
|
||||
`)).code as string
|
||||
});
|
||||
};
|
||||
|
||||
InAppBrowser.addListener('messageFromWebview', messageListener);
|
||||
InAppBrowser.addListener('closeEvent', closeListener);
|
||||
InAppBrowser.addListener('urlChangeEvent', urlChangeListener);
|
||||
|
||||
setTimeout(() => {
|
||||
reject(new Error('Timeout waiting for message'));
|
||||
InAppBrowser.removeAllListeners();
|
||||
}, 10000);
|
||||
|
||||
InAppBrowser.openWebView({
|
||||
url: "https://www.youtube.com/embed/jNQXAC9IVRw",
|
||||
isPresentAfterPageLoad: true,
|
||||
});
|
||||
});
|
||||
}
|
||||
@@ -36,5 +36,5 @@ export default defineConfig({
|
||||
],
|
||||
optimizeDeps: {
|
||||
exclude: ['@ffmpeg/ffmpeg', '@ffmpeg/util']
|
||||
},
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user