youtube-likes-downloader
Version:
Download all liked videos from youtube
58 lines • 2.27 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.download = download;
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
require("@anmiles/prototypes");
const execa_1 = __importDefault(require("execa"));
const formatTitle_1 = require("./utils/formatTitle");
const paths_1 = require("./utils/paths");
const executable = 'yt-dlp';
const flags = [
'--output', (0, formatTitle_1.formatTitle)({ id: '%(id)s', title: '%(title)s', channel: '%(channel)s' }),
'--format-sort', 'vcodec:h264,acodec:mp3',
'--merge-output-format', 'mp4',
'--sponsorblock-remove', 'sponsor',
'--user-agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36',
'--geo-bypass',
'--no-playlist',
'--no-overwrites',
'--no-part',
'--continue',
'--abort-on-error',
'--write-thumbnail',
'--write-description',
'--write-info-json',
'--js-runtimes', 'node',
// '--extractor-args', 'youtube:player-client=default,mweb',
];
async function download(profile) {
const outputDir = (0, paths_1.getOutputDir)(profile);
const likesFile = (0, paths_1.getLikesFile)(profile);
const downloadArchive = (0, paths_1.getDownloadArchive)(profile);
fs_1.default.ensureDir(outputDir, { create: true });
fs_1.default.ensureFile(likesFile, { create: true });
fs_1.default.ensureFile(downloadArchive, { create: true });
const args = [
'--batch-file', path_1.default.resolve(likesFile),
'--download-archive', path_1.default.resolve(downloadArchive),
...flags,
];
const proc = (0, execa_1.default)(executable, args, { cwd: outputDir });
proc.stdout?.pipe(process.stdout);
const errors = [];
proc.stderr?.on('data', (data) => {
const text = data.toString('utf8');
errors.push(text);
process.stderr.write(data);
});
const result = await proc;
if (errors.length > 0) {
throw new Error(errors.join('\n'));
}
return result;
}
//# sourceMappingURL=download.js.map