mirror of
https://github.com/LuanRT/YouTube.js.git
synced 2026-06-13 01:22:11 +00:00
* refactor: Add extracted protos * refactor: Remove old stuff and update affected code * chore(package): Update `build:proto` script * chore(ClientInfo): Rename `androidSdkVersion` to `android_sdk_version` * chore: remove refs to old proto file * refactor(sabr_request): Rename `Gw` to `media_type` * chore(sabr_request): Fix typo in field num * feat(parser): Parse `video_playback_ustreamer_config` and `server_abr_streaming_url` * refactor: update protos * chore(package): streamline clean and build scripts * chore: update package.json * chore: update npmignore * chore(protos): Remove unneeded definitions See https://github.com/LuanRT/googlevideo for video playback proto definitions. * chore(package): add `rimraf` dependency
54 lines
1.4 KiB
JavaScript
54 lines
1.4 KiB
JavaScript
import { exec } from 'child_process';
|
|
import { existsSync, mkdirSync, readdirSync, statSync } from 'fs';
|
|
import { join } from 'path';
|
|
import path from 'path';
|
|
import url from 'url';
|
|
import os from 'os';
|
|
|
|
const __dirname = path.dirname(url.fileURLToPath(import.meta.url));
|
|
|
|
const protoDir = './protos';
|
|
const outDir = './protos/generated';
|
|
|
|
if (!existsSync(outDir)) {
|
|
mkdirSync(outDir, { recursive: true });
|
|
}
|
|
|
|
const protocGenTs = path.join(
|
|
__dirname,
|
|
'../node_modules',
|
|
'.bin',
|
|
os.platform() === 'win32' ? 'protoc-gen-ts_proto.cmd' : 'protoc-gen-ts_proto'
|
|
);
|
|
|
|
function listProtoFiles(dir) {
|
|
let protoFiles = [];
|
|
const items = readdirSync(dir);
|
|
|
|
for (const item of items) {
|
|
const fullPath = join(dir, item);
|
|
if (statSync(fullPath).isDirectory()) {
|
|
protoFiles = protoFiles.concat(listProtoFiles(fullPath));
|
|
} else if (item.endsWith('.proto')) {
|
|
protoFiles.push(fullPath);
|
|
}
|
|
}
|
|
|
|
return protoFiles;
|
|
}
|
|
|
|
const protoFiles = listProtoFiles(protoDir);
|
|
|
|
if (!protoFiles.length) {
|
|
console.log('No .proto files found.');
|
|
process.exit(0);
|
|
}
|
|
|
|
protoFiles.forEach((file) => {
|
|
const command = `protoc --proto_path=${protoDir} --plugin=protoc-gen-ts=${protocGenTs} --ts_opt=env=browser --ts_opt=importSuffix=.js --ts_out=${outDir} ${file}`;
|
|
exec(command, (error, _stdout, stderr) => {
|
|
if (error) {
|
|
console.error(`Error compiling ${file}:`, stderr);
|
|
}
|
|
});
|
|
}); |