Files
YouTube.js/examples/upload/index.ts
LuanRT eb72c2f6ef refactor(parser): improve typings and do some refactoring (#305)
* dev: add response types

* dev: refactor `Parser#parseResponse()`

* dev: update YouTube parsers

* dev: update YouTube Music classes

* dev: update YouTube Kids classes

* dev: update core classes

* dev(Parser): fix some inconsistencies

* chore: update docs

* chore: update docs x2

* fix: export response types 

* chore(docs): update parser example
2023-02-12 07:04:17 -03:00

36 lines
1.1 KiB
TypeScript

import { readFileSync, writeFileSync, existsSync } from 'fs';
import { Innertube, UniversalCache } from 'youtubei.js';
const creds_path = './my_yt_creds.json';
const creds = existsSync(creds_path) ? JSON.parse(readFileSync(creds_path).toString()) : undefined;
(async () => {
const yt = await Innertube.create({ cache: new UniversalCache() });
yt.session.on('auth-pending', (data: any) => {
console.info(`Hello!\nOn your phone or computer, go to ${data.verification_url} and enter the code ${data.user_code}`);
});
yt.session.on('auth', (data: any) => {
writeFileSync(creds_path, JSON.stringify(data.credentials));
console.info('Successfully signed in!');
});
yt.session.on('update-credentials', (data: any) => {
writeFileSync(creds_path, JSON.stringify(data.credentials));
console.info('Credentials updated!', data);
});
await yt.session.signIn(creds);
const file = readFileSync('./my_awesome_video.mp4');
const upload = await yt.studio.upload(file.buffer, {
title: 'Wow!',
description: new Date().toString(),
privacy: 'UNLISTED'
});
console.info('Done!', upload);
})();