From fc22ca529d65e695cbac31ea6d70a92d79e1f5c2 Mon Sep 17 00:00:00 2001 From: Ben Kyd Date: Mon, 15 Jun 2020 23:41:00 +0000 Subject: [PATCH] boilerplate --- package.json | 5 +- public/index.html | 11 + src/config.js | 4 + src/downloader.js | 3 + src/formats.js | 512 ++++++++++++++++++++++++++++++++++++++++++++++ src/server.js | 33 +++ 6 files changed, 567 insertions(+), 1 deletion(-) create mode 100644 public/index.html create mode 100644 src/config.js create mode 100644 src/downloader.js create mode 100644 src/formats.js create mode 100644 src/server.js diff --git a/package.json b/package.json index 807bf3b..df7f913 100644 --- a/package.json +++ b/package.json @@ -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" } } diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..e2e3dc2 --- /dev/null +++ b/public/index.html @@ -0,0 +1,11 @@ + + + + + + Ben's Amazing YoutTube Downloader + + + + + \ No newline at end of file diff --git a/src/config.js b/src/config.js new file mode 100644 index 0000000..976dbca --- /dev/null +++ b/src/config.js @@ -0,0 +1,4 @@ + +module.exports.Configuration = {} + + diff --git a/src/downloader.js b/src/downloader.js new file mode 100644 index 0000000..85f0cf9 --- /dev/null +++ b/src/downloader.js @@ -0,0 +1,3 @@ +const ytdl = require('ytdl-core'); + + diff --git a/src/formats.js b/src/formats.js new file mode 100644 index 0000000..cd8731e --- /dev/null +++ b/src/formats.js @@ -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, + }, +}; \ No newline at end of file diff --git a/src/server.js b/src/server.js new file mode 100644 index 0000000..c4a0860 --- /dev/null +++ b/src/server.js @@ -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; +