Take random announcement from array and accept webm

This commit is contained in:
loicbersier 2019-12-18 19:30:30 +01:00
parent cc99673081
commit 7a8fd2e380

View file

@ -8,12 +8,16 @@ let viewCounter = 0;
let files = [];
let day;
let month;
let announcement = 'Twitter download seems to work fine now!';
let announcementArray = ['Twitter download seems to work fine now!', 'u lookin hot today vro', 'I am not responsible for what you download', 'If you want to support me you can donate through my paypal at the bottom of the page', 'Did you know this website is open source?', 'Did you know this website can download from other website than youtube?']
let announcement
let title = `le epic downloader v${pJson.version}`;
class DownloadController {
async index ({ view, response }) {
// Get random announcement
announcement = announcementArray[Math.floor(Math.random() * announcementArray.length)];
// Get date for some event
let today = new Date();
day = today.getDay();
@ -29,7 +33,7 @@ class DownloadController {
}
// get the 5 most recent files
file = file.sort(function(a, b) {
if (((a || b).endsWith('.mp4') || (a || b).endsWith('.mp3') || (a || b).endsWith('.flac')) && !(a || b).startsWith('HIDE')) {
if (((a || b).endsWith('.mp4') || (a || b).endsWith('.webm') || (a || b).endsWith('.mp3') || (a || b).endsWith('.flac')) && !(a || b).startsWith('HIDE')) {
let time1 = fs.statSync(`./public/uploads/${b}`).ctime;
let time2 = fs.statSync(`./public/uploads/${a}`).ctime;
if (time1 < time2) return -1;
@ -40,9 +44,10 @@ class DownloadController {
file.forEach((file) => {
// If mp4 and is not to be hidden from the recent feed
if (file.endsWith('.mp4') && !file.startsWith('HIDE')) {
if ((file.endsWith('.mp4') || file.endsWith('.webm')) && !file.startsWith('HIDE')) {
let fileInfo = fs.statSync(`./public/uploads/${file}`);
// Take screenshot at the first frame of the mp4 file
ffmpeg(`./public/uploads/${file}`)
.takeScreenshots({ count: 1, timemarks: [ 1 ], size: '720x480', filename: file + '.png' }, 'public/thumbnail')
.on('error', (err) => {
@ -125,7 +130,7 @@ class DownloadController {
return response.attachment('./public/uploads/alt.mp4');
});
} else {
// Download as mp4
// Download as mp4 if possible
let video = youtubedl(data.url, ['--format=mp4', '-f', option]);
video.on('error', function(err) {
@ -140,23 +145,25 @@ class DownloadController {
});
})
let ext;
video.on('info', function(info) {
// Set file name
ext = info.ext;
let title = info.title.slice(0,80);
DLFile = `${title.replace(/\s/g, '_')}.${info.ext}`;
DLFile = `${title.replace(/\s/g, '_')}.${ext}`;
// If no title use the ID
if (title == '_') title = `_${info.id}`;
// If user want to hide from the feed
if (data.feed == 'on')
DLFile = `HIDE${title.replace(/\s/g, '_')}.${info.ext}`;
DLFile = `HIDE${title.replace(/\s/g, '_')}.${ext}`;
DLFile = DLFile.replace(/[()]/g, '_');
video.pipe(fs.createWriteStream(`./public/uploads/${DLFile}`));
});
video.on('end', function() {
if (data.format == 'mp4') {
if (data.format == 'mp4' || data.format == 'webm') {
// If user requested mp4 directly attach the file
return response.attachment(`./public/uploads/${DLFile}`)
} else {
@ -167,10 +174,10 @@ class DownloadController {
.audioFrequency('44100')
.audioBitrate('320k')
.format(data.format)
.save(`./public/uploads/${DLFile.replace('.mp4', `.${data.format}`)}`)
.save(`./public/uploads/${DLFile.replace(ext, `.${data.format}`)}`)
.on('end', () => {
fs.unlinkSync(`./public/uploads/${DLFile}`);
return response.attachment(`./public/uploads/${DLFile.replace('.mp4', `.${data.format}`)}`);
return response.attachment(`./public/uploads/${DLFile.replace(ext, `.${data.format}`)}`);
})
}
});