const ytdl = require('./ytdl');
+const youtubedl = require('youtube-dl');
const qStr = require('querystring');
-console.log('URL escaped:', qStr.escape('https://www.youtube.com/watch?v=B1hxhEfYAlY'));
+const url='https://www.youtube.com/watch?v=ImBk7QYHrcM';
-ytdl.download('https://www.youtube.com/watch?v=B1hxhEfYAlY')
+console.log('URL escaped:', qStr.escape(url));
+
+ytdl.download(url)
+.then(data => {
+ console.log('Data:', data);
+})
+.catch(err => {
+ console.error('Error:', err);
+});
+/*
+ytdl.downloadMp4(url)
.then(data => {
console.log('Data:', data);
})
.catch(err => {
console.error('Error:', err);
});
+*/
cwd: dldir
};
+function clean(title) {
+ const regexp = /[\\\/:*"><|?#&=;]/g
+ return title.replace(regexp, '');
+}
+
function download(url) {
return new Promise((resolve, reject) => {
const regex = /[.]mkv$/
.filter(file => regex.test(file))
.map(file => fs.unlinkSync(dldir + '/' + file))
- const writeStream = fs.createWriteStream(dldir + '/myvideo.mkv');
+ ytdl.getInfo(url, (err, info) => {
+ if (err) {
+ log.error('An error occured while downloading:', err);
+ reject(err);
+ return;
+ }
+
+ log.info('Got info');
+
+ const file = dldir + '/myvideo.mkv'
+ const title = clean(info.title);
+ const data = {
+ filename: title + '.mkv',
+ thumbnail: info.thumbnail,
+ };
+
+ ytdl.exec(url, ['--add-metadata', '--merge-output-format', 'mkv', '-o', file],
+ {}, (err, out) => {
+ if (err) {
+ log.error('An error occured while downloading:', err);
+ reject(err);
+ return;
+ }
+
+ log.debug('youtube-dl output:', out.join('\n'));
+ log.info('Got file');
+
+ fsPromises.rename(file, dldir + '/' + data.filename)
+ .then(() => {
+ resolve(data);
+ })
+ .catch(err => {
+ log.error('An error occured while file renaming:', err);
+ reject(err);
+ });
+ });
+ });
+ });
+}
+
+function downloadMp4(url) {
+ return new Promise((resolve, reject) => {
+ const regex = /[.]mkv$/
+ fs.readdirSync(dldir + '/')
+ .filter(file => regex.test(file))
+ .map(file => fs.unlinkSync(dldir + '/' + file))
+
+ const writeStream = fs.createWriteStream(dldir + '/myvideo.mp4');
writeStream.on('error', err => {
log.error('An error occured while creating a file stream:', err);
reject(err);
video.on('info', info => {
log.info('Got info');
+ const title = clean(info.title);
data = {
- filename: info.title + '.mkv',
+ filename: title + '.mp4',
thumbnail: info.thumbnail,
};
});
video.on('end', () => {
log.info('Download finished');
- fsPromises.rename(dldir + '/myvideo.mkv', dldir + '/' + data.filename)
+ fsPromises.rename(dldir + '/myvideo.mp4', dldir + '/' + data.filename)
.then(() => {
resolve(data);
})
}
module.exports = {
- download
+ download,
+ downloadMp4
};