mirror of
https://github.com/LuanRT/googlevideo.git
synced 2026-06-13 08:42:31 +00:00
34 lines
1.0 KiB
TypeScript
34 lines
1.0 KiB
TypeScript
import Innertube, { UniversalCache } from 'youtubei.js';
|
|
import { GoogleVideo, Protos } from './dist/src/index.js';
|
|
|
|
const pot = 'MogByekTEuMCHffJ1fWU29jibLXb2em_4I0sBL3WX8kzmtnI2VOVIlJJjZ7mCf1E-4DaRwrPPqBXdL2ECFrjdNt2vIdAiTgbN44Q1asvZdjBr0bWFJsIzQRXUSXBRZDPq0IRZHTNc_B8ItbgV6yx7kJ4FOgkDsqj-_lubvsyWHjnq85WqGxEut11eQ==';
|
|
|
|
const innertube = await Innertube.create({
|
|
cache: new UniversalCache(true),
|
|
po_token: pot,
|
|
visitor_data: 'CgtHelk0ajJwY185SSi91OO2BjIKCgJCUhIEGgAgZzoKILKg8r3TybrsZg%3D%3D',
|
|
});
|
|
|
|
const info = await innertube.getBasicInfo('nVSXA2t3F0U');
|
|
|
|
const audioFormat = info.chooseFormat({
|
|
quality: "best",
|
|
format: "mp4",
|
|
type: 'audio',
|
|
});
|
|
|
|
const url = audioFormat.decipher(innertube.session.player);
|
|
|
|
const response = await fetch(url + `&range=4583871-5785063&ump=1&srfvp=1`, {
|
|
method: 'POST',
|
|
});
|
|
|
|
const data = await response.arrayBuffer();
|
|
|
|
let dataBuffer = new GoogleVideo.ChunkedDataBuffer([new Uint8Array(data)]);
|
|
|
|
const ump = new GoogleVideo.UMP(dataBuffer);
|
|
|
|
ump.parse((part) => {
|
|
console.log(part);
|
|
});
|