boilerplate
This commit is contained in:
@@ -17,6 +17,9 @@
|
||||
},
|
||||
"homepage": "https://github.com/plane000/youtube-downloader#readme",
|
||||
"dependencies": {
|
||||
"moment": "^2.26.0"
|
||||
"express": "^4.17.1",
|
||||
"moment": "^2.26.0",
|
||||
"socket.io": "^2.3.0",
|
||||
"ytdl-core": "^2.1.7"
|
||||
}
|
||||
}
|
||||
|
||||
11
public/index.html
Normal file
11
public/index.html
Normal file
@@ -0,0 +1,11 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Ben's Amazing YoutTube Downloader</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
4
src/config.js
Normal file
4
src/config.js
Normal file
@@ -0,0 +1,4 @@
|
||||
|
||||
module.exports.Configuration = {}
|
||||
|
||||
|
||||
3
src/downloader.js
Normal file
3
src/downloader.js
Normal file
@@ -0,0 +1,3 @@
|
||||
const ytdl = require('ytdl-core');
|
||||
|
||||
|
||||
512
src/formats.js
Normal file
512
src/formats.js
Normal file
@@ -0,0 +1,512 @@
|
||||
module.exports = {
|
||||
5: {
|
||||
mimeType: 'video/flv; codecs="Sorenson H.283, mp3"',
|
||||
qualityLabel: '240p',
|
||||
bitrate: 250000,
|
||||
audioBitrate: 64,
|
||||
},
|
||||
|
||||
6: {
|
||||
mimeType: 'video/flv; codecs="Sorenson H.263, mp3"',
|
||||
qualityLabel: '270p',
|
||||
bitrate: 800000,
|
||||
audioBitrate: 64,
|
||||
},
|
||||
|
||||
13: {
|
||||
mimeType: 'video/3gp; codecs="MPEG-4 Visual, aac"',
|
||||
qualityLabel: null,
|
||||
bitrate: 500000,
|
||||
audioBitrate: null,
|
||||
},
|
||||
|
||||
17: {
|
||||
mimeType: 'video/3gp; codecs="MPEG-4 Visual, aac"',
|
||||
qualityLabel: '144p',
|
||||
bitrate: 50000,
|
||||
audioBitrate: 24,
|
||||
},
|
||||
|
||||
18: {
|
||||
mimeType: 'video/mp4; codecs="H.264, aac"',
|
||||
qualityLabel: '360p',
|
||||
bitrate: 500000,
|
||||
audioBitrate: 96,
|
||||
},
|
||||
|
||||
22: {
|
||||
mimeType: 'video/mp4; codecs="H.264, aac"',
|
||||
qualityLabel: '720p',
|
||||
bitrate: 2000000,
|
||||
audioBitrate: 192,
|
||||
},
|
||||
|
||||
34: {
|
||||
mimeType: 'video/flv; codecs="H.264, aac"',
|
||||
qualityLabel: '360p',
|
||||
bitrate: 500000,
|
||||
audioBitrate: 128,
|
||||
},
|
||||
|
||||
35: {
|
||||
mimeType: 'video/flv; codecs="H.264, aac"',
|
||||
qualityLabel: '480p',
|
||||
bitrate: 800000,
|
||||
audioBitrate: 128,
|
||||
},
|
||||
|
||||
36: {
|
||||
mimeType: 'video/3gp; codecs="MPEG-4 Visual, aac"',
|
||||
qualityLabel: '240p',
|
||||
bitrate: 175000,
|
||||
audioBitrate: 32,
|
||||
},
|
||||
|
||||
37: {
|
||||
mimeType: 'video/mp4; codecs="H.264, aac"',
|
||||
qualityLabel: '1080p',
|
||||
bitrate: 3000000,
|
||||
audioBitrate: 192,
|
||||
},
|
||||
|
||||
38: {
|
||||
mimeType: 'video/mp4; codecs="H.264, aac"',
|
||||
qualityLabel: '3072p',
|
||||
bitrate: 3500000,
|
||||
audioBitrate: 192,
|
||||
},
|
||||
|
||||
43: {
|
||||
mimeType: 'video/webm; codecs="VP8, vorbis"',
|
||||
qualityLabel: '360p',
|
||||
bitrate: 500000,
|
||||
audioBitrate: 128,
|
||||
},
|
||||
|
||||
44: {
|
||||
mimeType: 'video/webm; codecs="VP8, vorbis"',
|
||||
qualityLabel: '480p',
|
||||
bitrate: 1000000,
|
||||
audioBitrate: 128,
|
||||
},
|
||||
|
||||
45: {
|
||||
mimeType: 'video/webm; codecs="VP8, vorbis"',
|
||||
qualityLabel: '720p',
|
||||
bitrate: 2000000,
|
||||
audioBitrate: 192,
|
||||
},
|
||||
|
||||
46: {
|
||||
mimeType: 'audio/webm; codecs="vp8, vorbis"',
|
||||
qualityLabel: '1080p',
|
||||
bitrate: null,
|
||||
audioBitrate: 192,
|
||||
},
|
||||
|
||||
82: {
|
||||
mimeType: 'video/mp4; codecs="H.264, aac"',
|
||||
qualityLabel: '360p',
|
||||
bitrate: 500000,
|
||||
audioBitrate: 96,
|
||||
},
|
||||
|
||||
83: {
|
||||
mimeType: 'video/mp4; codecs="H.264, aac"',
|
||||
qualityLabel: '240p',
|
||||
bitrate: 500000,
|
||||
audioBitrate: 96,
|
||||
},
|
||||
|
||||
84: {
|
||||
mimeType: 'video/mp4; codecs="H.264, aac"',
|
||||
qualityLabel: '720p',
|
||||
bitrate: 2000000,
|
||||
audioBitrate: 192,
|
||||
},
|
||||
|
||||
85: {
|
||||
mimeType: 'video/mp4; codecs="H.264, aac"',
|
||||
qualityLabel: '1080p',
|
||||
bitrate: 3000000,
|
||||
audioBitrate: 192,
|
||||
},
|
||||
|
||||
91: {
|
||||
mimeType: 'video/ts; codecs="H.264, aac"',
|
||||
qualityLabel: '144p',
|
||||
bitrate: 100000,
|
||||
audioBitrate: 48,
|
||||
},
|
||||
|
||||
92: {
|
||||
mimeType: 'video/ts; codecs="H.264, aac"',
|
||||
qualityLabel: '240p',
|
||||
bitrate: 150000,
|
||||
audioBitrate: 48,
|
||||
},
|
||||
|
||||
93: {
|
||||
mimeType: 'video/ts; codecs="H.264, aac"',
|
||||
qualityLabel: '360p',
|
||||
bitrate: 500000,
|
||||
audioBitrate: 128,
|
||||
},
|
||||
|
||||
94: {
|
||||
mimeType: 'video/ts; codecs="H.264, aac"',
|
||||
qualityLabel: '480p',
|
||||
bitrate: 800000,
|
||||
audioBitrate: 128,
|
||||
},
|
||||
|
||||
95: {
|
||||
mimeType: 'video/ts; codecs="H.264, aac"',
|
||||
qualityLabel: '720p',
|
||||
bitrate: 1500000,
|
||||
audioBitrate: 256,
|
||||
},
|
||||
|
||||
96: {
|
||||
mimeType: 'video/ts; codecs="H.264, aac"',
|
||||
qualityLabel: '1080p',
|
||||
bitrate: 2500000,
|
||||
audioBitrate: 256,
|
||||
},
|
||||
|
||||
100: {
|
||||
mimeType: 'audio/webm; codecs="VP8, vorbis"',
|
||||
qualityLabel: '360p',
|
||||
bitrate: null,
|
||||
audioBitrate: 128,
|
||||
},
|
||||
|
||||
101: {
|
||||
mimeType: 'audio/webm; codecs="VP8, vorbis"',
|
||||
qualityLabel: '360p',
|
||||
bitrate: null,
|
||||
audioBitrate: 192,
|
||||
},
|
||||
|
||||
102: {
|
||||
mimeType: 'audio/webm; codecs="VP8, vorbis"',
|
||||
qualityLabel: '720p',
|
||||
bitrate: null,
|
||||
audioBitrate: 192,
|
||||
},
|
||||
|
||||
120: {
|
||||
mimeType: 'video/flv; codecs="H.264, aac"',
|
||||
qualityLabel: '720p',
|
||||
bitrate: 2000000,
|
||||
audioBitrate: 128,
|
||||
},
|
||||
|
||||
127: {
|
||||
mimeType: 'audio/ts; codecs="aac"',
|
||||
qualityLabel: null,
|
||||
bitrate: null,
|
||||
audioBitrate: 96,
|
||||
},
|
||||
|
||||
128: {
|
||||
mimeType: 'audio/ts; codecs="aac"',
|
||||
qualityLabel: null,
|
||||
bitrate: null,
|
||||
audioBitrate: 96,
|
||||
},
|
||||
|
||||
132: {
|
||||
mimeType: 'video/ts; codecs="H.264, aac"',
|
||||
qualityLabel: '240p',
|
||||
bitrate: 150000,
|
||||
audioBitrate: 48,
|
||||
},
|
||||
|
||||
133: {
|
||||
mimeType: 'video/mp4; codecs="H.264"',
|
||||
qualityLabel: '240p',
|
||||
bitrate: 200000,
|
||||
audioBitrate: null,
|
||||
},
|
||||
|
||||
134: {
|
||||
mimeType: 'video/mp4; codecs="H.264"',
|
||||
qualityLabel: '360p',
|
||||
bitrate: 300000,
|
||||
audioBitrate: null,
|
||||
},
|
||||
|
||||
135: {
|
||||
mimeType: 'video/mp4; codecs="H.264"',
|
||||
qualityLabel: '480p',
|
||||
bitrate: 500000,
|
||||
audioBitrate: null,
|
||||
},
|
||||
|
||||
136: {
|
||||
mimeType: 'video/mp4; codecs="H.264"',
|
||||
qualityLabel: '720p',
|
||||
bitrate: 1000000,
|
||||
audioBitrate: null,
|
||||
},
|
||||
|
||||
137: {
|
||||
mimeType: 'video/mp4; codecs="H.264"',
|
||||
qualityLabel: '1080p',
|
||||
bitrate: 2500000,
|
||||
audioBitrate: null,
|
||||
},
|
||||
|
||||
138: {
|
||||
mimeType: 'video/mp4; codecs="H.264"',
|
||||
qualityLabel: '4320p',
|
||||
bitrate: 13500000,
|
||||
audioBitrate: null,
|
||||
},
|
||||
|
||||
139: {
|
||||
mimeType: 'audio/mp4; codecs="aac"',
|
||||
qualityLabel: null,
|
||||
bitrate: null,
|
||||
audioBitrate: 48,
|
||||
},
|
||||
|
||||
140: {
|
||||
mimeType: 'audio/m4a; codecs="aac"',
|
||||
qualityLabel: null,
|
||||
bitrate: null,
|
||||
audioBitrate: 128,
|
||||
},
|
||||
|
||||
141: {
|
||||
mimeType: 'audio/mp4; codecs="aac"',
|
||||
qualityLabel: null,
|
||||
bitrate: null,
|
||||
audioBitrate: 256,
|
||||
},
|
||||
|
||||
151: {
|
||||
mimeType: 'video/ts; codecs="H.264, aac"',
|
||||
qualityLabel: '720p',
|
||||
bitrate: 50000,
|
||||
audioBitrate: 24,
|
||||
},
|
||||
|
||||
160: {
|
||||
mimeType: 'video/mp4; codecs="H.264"',
|
||||
qualityLabel: '144p',
|
||||
bitrate: 100000,
|
||||
audioBitrate: null,
|
||||
},
|
||||
|
||||
171: {
|
||||
mimeType: 'audio/webm; codecs="vorbis"',
|
||||
qualityLabel: null,
|
||||
bitrate: null,
|
||||
audioBitrate: 128,
|
||||
},
|
||||
|
||||
172: {
|
||||
mimeType: 'audio/webm; codecs="vorbis"',
|
||||
qualityLabel: null,
|
||||
bitrate: null,
|
||||
audioBitrate: 192,
|
||||
},
|
||||
|
||||
242: {
|
||||
mimeType: 'video/webm; codecs="VP9"',
|
||||
qualityLabel: '240p',
|
||||
bitrate: 100000,
|
||||
audioBitrate: null,
|
||||
},
|
||||
|
||||
243: {
|
||||
mimeType: 'video/webm; codecs="VP9"',
|
||||
qualityLabel: '360p',
|
||||
bitrate: 250000,
|
||||
audioBitrate: null,
|
||||
},
|
||||
|
||||
244: {
|
||||
mimeType: 'video/webm; codecs="VP9"',
|
||||
qualityLabel: '480p',
|
||||
bitrate: 500000,
|
||||
audioBitrate: null,
|
||||
},
|
||||
|
||||
247: {
|
||||
mimeType: 'video/webm; codecs="VP9"',
|
||||
qualityLabel: '720p',
|
||||
bitrate: 700000,
|
||||
audioBitrate: null,
|
||||
},
|
||||
|
||||
248: {
|
||||
mimeType: 'video/webm; codecs="VP9"',
|
||||
qualityLabel: '1080p',
|
||||
bitrate: 1500000,
|
||||
audioBitrate: null,
|
||||
},
|
||||
|
||||
249: {
|
||||
mimeType: 'audio/webm; codecs="opus"',
|
||||
qualityLabel: null,
|
||||
bitrate: null,
|
||||
audioBitrate: 48,
|
||||
},
|
||||
|
||||
250: {
|
||||
mimeType: 'audio/webm; codecs="opus"',
|
||||
qualityLabel: null,
|
||||
bitrate: null,
|
||||
audioBitrate: 64,
|
||||
},
|
||||
|
||||
251: {
|
||||
mimeType: 'audio/webm; codecs="opus"',
|
||||
qualityLabel: null,
|
||||
bitrate: null,
|
||||
audioBitrate: 160,
|
||||
},
|
||||
|
||||
264: {
|
||||
mimeType: 'video/mp4; codecs="H.264"',
|
||||
qualityLabel: '1440p',
|
||||
bitrate: 4000000,
|
||||
audioBitrate: null,
|
||||
},
|
||||
|
||||
266: {
|
||||
mimeType: 'video/mp4; codecs="H.264"',
|
||||
qualityLabel: '2160p',
|
||||
bitrate: 12500000,
|
||||
audioBitrate: null,
|
||||
},
|
||||
|
||||
271: {
|
||||
mimeType: 'video/webm; codecs="VP9"',
|
||||
qualityLabel: '1440p',
|
||||
bitrate: 9000000,
|
||||
audioBitrate: null,
|
||||
},
|
||||
|
||||
272: {
|
||||
mimeType: 'video/webm; codecs="VP9"',
|
||||
qualityLabel: '4320p',
|
||||
bitrate: 20000000,
|
||||
audioBitrate: null,
|
||||
},
|
||||
|
||||
278: {
|
||||
mimeType: 'video/webm; codecs="VP9"',
|
||||
qualityLabel: '144p 15fps',
|
||||
bitrate: 80000,
|
||||
audioBitrate: null,
|
||||
},
|
||||
|
||||
298: {
|
||||
mimeType: 'video/mp4; codecs="H.264"',
|
||||
qualityLabel: '720p',
|
||||
bitrate: 3000000,
|
||||
audioBitrate: null,
|
||||
},
|
||||
|
||||
299: {
|
||||
mimeType: 'video/mp4; codecs="H.264"',
|
||||
qualityLabel: '1080p',
|
||||
bitrate: 5500000,
|
||||
audioBitrate: null,
|
||||
},
|
||||
|
||||
302: {
|
||||
mimeType: 'video/webm; codecs="VP9"',
|
||||
qualityLabel: '720p HFR',
|
||||
bitrate: 2500000,
|
||||
audioBitrate: null,
|
||||
},
|
||||
|
||||
303: {
|
||||
mimeType: 'video/webm; codecs="VP9"',
|
||||
qualityLabel: '1080p HFR',
|
||||
bitrate: 5000000,
|
||||
audioBitrate: null,
|
||||
},
|
||||
|
||||
308: {
|
||||
mimeType: 'video/webm; codecs="VP9"',
|
||||
qualityLabel: '1440p HFR',
|
||||
bitrate: 10000000,
|
||||
audioBitrate: null,
|
||||
},
|
||||
|
||||
313: {
|
||||
mimeType: 'video/webm; codecs="VP9"',
|
||||
qualityLabel: '2160p',
|
||||
bitrate: 13000000,
|
||||
audioBitrate: null,
|
||||
},
|
||||
|
||||
315: {
|
||||
mimeType: 'video/webm; codecs="VP9"',
|
||||
qualityLabel: '2160p HFR',
|
||||
bitrate: 20000000,
|
||||
audioBitrate: null,
|
||||
},
|
||||
|
||||
330: {
|
||||
mimeType: 'video/webm; codecs="VP9"',
|
||||
qualityLabel: '144p HDR, HFR',
|
||||
bitrate: 80000,
|
||||
audioBitrate: null,
|
||||
},
|
||||
|
||||
331: {
|
||||
mimeType: 'video/webm; codecs="VP9"',
|
||||
qualityLabel: '240p HDR, HFR',
|
||||
bitrate: 100000,
|
||||
audioBitrate: null,
|
||||
},
|
||||
|
||||
332: {
|
||||
mimeType: 'video/webm; codecs="VP9"',
|
||||
qualityLabel: '360p HDR, HFR',
|
||||
bitrate: 250000,
|
||||
audioBitrate: null,
|
||||
},
|
||||
|
||||
333: {
|
||||
mimeType: 'video/webm; codecs="VP9"',
|
||||
qualityLabel: '240p HDR, HFR',
|
||||
bitrate: 500000,
|
||||
audioBitrate: null,
|
||||
},
|
||||
|
||||
334: {
|
||||
mimeType: 'video/webm; codecs="VP9"',
|
||||
qualityLabel: '720p HDR, HFR',
|
||||
bitrate: 1000000,
|
||||
audioBitrate: null,
|
||||
},
|
||||
|
||||
335: {
|
||||
mimeType: 'video/webm; codecs="VP9"',
|
||||
qualityLabel: '1080p HDR, HFR',
|
||||
bitrate: 1500000,
|
||||
audioBitrate: null,
|
||||
},
|
||||
|
||||
336: {
|
||||
mimeType: 'video/webm; codecs="VP9"',
|
||||
qualityLabel: '1440p HDR, HFR',
|
||||
bitrate: 5000000,
|
||||
audioBitrate: null,
|
||||
},
|
||||
|
||||
337: {
|
||||
mimeType: 'video/webm; codecs="VP9"',
|
||||
qualityLabel: '2160p HDR, HFR',
|
||||
bitrate: 12000000,
|
||||
audioBitrate: null,
|
||||
},
|
||||
};
|
||||
33
src/server.js
Normal file
33
src/server.js
Normal file
@@ -0,0 +1,33 @@
|
||||
const Config = require('./config');
|
||||
|
||||
const express = require('express');
|
||||
|
||||
let app;
|
||||
let http;
|
||||
let io;
|
||||
|
||||
module.exports.Init = async () => {
|
||||
app = require('express')();
|
||||
http = require('http').Server(app);
|
||||
io = require('socket.io')(http);
|
||||
|
||||
http.listen(main.config.serverPort, () => {
|
||||
logger.log(`HTTP server listening on port ${main.config.serverPort}`);
|
||||
logger.log(`WebSocket server listening on ${main.config.serverPort}`);
|
||||
});
|
||||
}
|
||||
|
||||
module.exports.listen = async () => {
|
||||
app.use(express.static('public'));
|
||||
|
||||
io.on('connection', async (socket) => {
|
||||
logger.log(`New socket connection from id: ${socket.id}`);
|
||||
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
module.exports.App = app;
|
||||
module.exports.Http = http;
|
||||
module.exports.Io = io;
|
||||
|
||||
Reference in New Issue
Block a user