ITS REWRITE TIME
This commit is contained in:
4
.gitignore
vendored
4
.gitignore
vendored
@@ -1,4 +1,2 @@
|
|||||||
node_modules
|
|
||||||
package-lock.json
|
package-lock.json
|
||||||
*.mp4
|
node_modules/
|
||||||
*.mp3
|
|
||||||
|
|||||||
2
LICENSE
2
LICENSE
@@ -1,6 +1,6 @@
|
|||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2019 Benjamin Kyd
|
Copyright (c) 2020 Benjamin Kyd
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
65
legacy/.gitignore
vendored
65
legacy/.gitignore
vendored
@@ -1,61 +1,4 @@
|
|||||||
# Logs
|
node_modules
|
||||||
logs
|
package-lock.json
|
||||||
*.log
|
*.mp4
|
||||||
npm-debug.log*
|
*.mp3
|
||||||
yarn-debug.log*
|
|
||||||
yarn-error.log*
|
|
||||||
|
|
||||||
# Runtime data
|
|
||||||
pids
|
|
||||||
*.pid
|
|
||||||
*.seed
|
|
||||||
*.pid.lock
|
|
||||||
|
|
||||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
|
||||||
lib-cov
|
|
||||||
|
|
||||||
# Coverage directory used by tools like istanbul
|
|
||||||
coverage
|
|
||||||
|
|
||||||
# nyc test coverage
|
|
||||||
.nyc_output
|
|
||||||
|
|
||||||
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
|
|
||||||
.grunt
|
|
||||||
|
|
||||||
# Bower dependency directory (https://bower.io/)
|
|
||||||
bower_components
|
|
||||||
|
|
||||||
# node-waf configuration
|
|
||||||
.lock-wscript
|
|
||||||
|
|
||||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
|
||||||
build/Release
|
|
||||||
|
|
||||||
# Dependency directories
|
|
||||||
node_modules/
|
|
||||||
jspm_packages/
|
|
||||||
|
|
||||||
# TypeScript v1 declaration files
|
|
||||||
typings/
|
|
||||||
|
|
||||||
# Optional npm cache directory
|
|
||||||
.npm
|
|
||||||
|
|
||||||
# Optional eslint cache
|
|
||||||
.eslintcache
|
|
||||||
|
|
||||||
# Optional REPL history
|
|
||||||
.node_repl_history
|
|
||||||
|
|
||||||
# Output of 'npm pack'
|
|
||||||
*.tgz
|
|
||||||
|
|
||||||
# Yarn Integrity file
|
|
||||||
.yarn-integrity
|
|
||||||
|
|
||||||
# dotenv environment variables file
|
|
||||||
.env
|
|
||||||
|
|
||||||
# next.js build output
|
|
||||||
.next
|
|
||||||
|
|||||||
@@ -1,40 +1 @@
|
|||||||
const fs = require('fs');
|
require('./src/index').main();
|
||||||
const ytdl = require('ytdl-core');
|
|
||||||
|
|
||||||
let videos = [];
|
|
||||||
|
|
||||||
if (!fs.existsSync('./videos.txt')) {
|
|
||||||
console.log('Could not find videos.txt, make sure it exists and has youtube links, each on new lines');
|
|
||||||
process.exit();
|
|
||||||
}
|
|
||||||
|
|
||||||
let text = fs.readFileSync('./videos.txt').toString();
|
|
||||||
text.split('\n').forEach((line) => {
|
|
||||||
videos.push(line.replace(/\r/, ''));
|
|
||||||
});
|
|
||||||
|
|
||||||
videos.forEach((url) => {
|
|
||||||
if (ytdl.validateURL(url)) {
|
|
||||||
ytdl.getInfo(url, (err, info) => {
|
|
||||||
if (err) {
|
|
||||||
console.log(`An error occured while downloading '${url}'`)
|
|
||||||
} else {
|
|
||||||
let title = info.title;
|
|
||||||
|
|
||||||
try {
|
|
||||||
let stream = ytdl(url, {quality: 'highest'}).pipe(fs.createWriteStream(`${title}.mp4`));
|
|
||||||
stream.on('finish', () => console.log(`Finish downloading ${title}`));
|
|
||||||
} catch (e) {
|
|
||||||
console.log(`An error occured while downloaing '${title}' retrying`)
|
|
||||||
try {
|
|
||||||
let stream = ytdl(url, {quality: 'highest'}).pipe(fs.createWriteStream(`${title}.mp4`));
|
|
||||||
stream.on('finish', () => console.log(`Finished downloading '${title}'`));
|
|
||||||
} catch (e) {
|
|
||||||
console.log(`Unable to download '${title}'`)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
console.log(`Downloading '${title}'`);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
} else console.log(`Video ${url} was not found`);
|
|
||||||
});
|
|
||||||
|
|||||||
61
legacy/legacy/.gitignore
vendored
Normal file
61
legacy/legacy/.gitignore
vendored
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
# Logs
|
||||||
|
logs
|
||||||
|
*.log
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
|
||||||
|
# Runtime data
|
||||||
|
pids
|
||||||
|
*.pid
|
||||||
|
*.seed
|
||||||
|
*.pid.lock
|
||||||
|
|
||||||
|
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||||
|
lib-cov
|
||||||
|
|
||||||
|
# Coverage directory used by tools like istanbul
|
||||||
|
coverage
|
||||||
|
|
||||||
|
# nyc test coverage
|
||||||
|
.nyc_output
|
||||||
|
|
||||||
|
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
|
||||||
|
.grunt
|
||||||
|
|
||||||
|
# Bower dependency directory (https://bower.io/)
|
||||||
|
bower_components
|
||||||
|
|
||||||
|
# node-waf configuration
|
||||||
|
.lock-wscript
|
||||||
|
|
||||||
|
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
||||||
|
build/Release
|
||||||
|
|
||||||
|
# Dependency directories
|
||||||
|
node_modules/
|
||||||
|
jspm_packages/
|
||||||
|
|
||||||
|
# TypeScript v1 declaration files
|
||||||
|
typings/
|
||||||
|
|
||||||
|
# Optional npm cache directory
|
||||||
|
.npm
|
||||||
|
|
||||||
|
# Optional eslint cache
|
||||||
|
.eslintcache
|
||||||
|
|
||||||
|
# Optional REPL history
|
||||||
|
.node_repl_history
|
||||||
|
|
||||||
|
# Output of 'npm pack'
|
||||||
|
*.tgz
|
||||||
|
|
||||||
|
# Yarn Integrity file
|
||||||
|
.yarn-integrity
|
||||||
|
|
||||||
|
# dotenv environment variables file
|
||||||
|
.env
|
||||||
|
|
||||||
|
# next.js build output
|
||||||
|
.next
|
||||||
40
legacy/legacy/index.js
Normal file
40
legacy/legacy/index.js
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
const fs = require('fs');
|
||||||
|
const ytdl = require('ytdl-core');
|
||||||
|
|
||||||
|
let videos = [];
|
||||||
|
|
||||||
|
if (!fs.existsSync('./videos.txt')) {
|
||||||
|
console.log('Could not find videos.txt, make sure it exists and has youtube links, each on new lines');
|
||||||
|
process.exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
let text = fs.readFileSync('./videos.txt').toString();
|
||||||
|
text.split('\n').forEach((line) => {
|
||||||
|
videos.push(line.replace(/\r/, ''));
|
||||||
|
});
|
||||||
|
|
||||||
|
videos.forEach((url) => {
|
||||||
|
if (ytdl.validateURL(url)) {
|
||||||
|
ytdl.getInfo(url, (err, info) => {
|
||||||
|
if (err) {
|
||||||
|
console.log(`An error occured while downloading '${url}'`)
|
||||||
|
} else {
|
||||||
|
let title = info.title;
|
||||||
|
|
||||||
|
try {
|
||||||
|
let stream = ytdl(url, {quality: 'highest'}).pipe(fs.createWriteStream(`${title}.mp4`));
|
||||||
|
stream.on('finish', () => console.log(`Finish downloading ${title}`));
|
||||||
|
} catch (e) {
|
||||||
|
console.log(`An error occured while downloaing '${title}' retrying`)
|
||||||
|
try {
|
||||||
|
let stream = ytdl(url, {quality: 'highest'}).pipe(fs.createWriteStream(`${title}.mp4`));
|
||||||
|
stream.on('finish', () => console.log(`Finished downloading '${title}'`));
|
||||||
|
} catch (e) {
|
||||||
|
console.log(`Unable to download '${title}'`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log(`Downloading '${title}'`);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else console.log(`Video ${url} was not found`);
|
||||||
|
});
|
||||||
15
legacy/legacy/package.json
Normal file
15
legacy/legacy/package.json
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"name": "youtube-dowloader",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "",
|
||||||
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
|
"author": "Ben (plane000)",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"fs": "0.0.1-security",
|
||||||
|
"ytdl-core": "^0.21.1"
|
||||||
|
}
|
||||||
|
}
|
||||||
47
legacy/package-lock.json
generated
47
legacy/package-lock.json
generated
@@ -1,47 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "youtube-dowloader",
|
|
||||||
"version": "1.0.0",
|
|
||||||
"lockfileVersion": 1,
|
|
||||||
"requires": true,
|
|
||||||
"dependencies": {
|
|
||||||
"fs": {
|
|
||||||
"version": "0.0.1-security",
|
|
||||||
"resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz",
|
|
||||||
"integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ="
|
|
||||||
},
|
|
||||||
"html-entities": {
|
|
||||||
"version": "1.2.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz",
|
|
||||||
"integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8="
|
|
||||||
},
|
|
||||||
"m3u8stream": {
|
|
||||||
"version": "0.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/m3u8stream/-/m3u8stream-0.3.0.tgz",
|
|
||||||
"integrity": "sha512-0tvjXDIa6BolPEGo9zioQiPqfQhjopZXN3L7vZH/rZQCOLd4rPXNZc1UBMdW3TRpjNBoD0+F1X41/f0iY23rlQ==",
|
|
||||||
"requires": {
|
|
||||||
"miniget": "1.2.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"miniget": {
|
|
||||||
"version": "1.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/miniget/-/miniget-1.2.0.tgz",
|
|
||||||
"integrity": "sha1-ADY3Oia71S2+aUX85sjAOR6eEkE="
|
|
||||||
},
|
|
||||||
"sax": {
|
|
||||||
"version": "1.2.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
|
|
||||||
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
|
|
||||||
},
|
|
||||||
"ytdl-core": {
|
|
||||||
"version": "0.21.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-0.21.1.tgz",
|
|
||||||
"integrity": "sha512-K6ysXuHW0X3MgeLpO4IHvHp5gdF2DDrgFPP7kQODBSpeaq4+/y8lvWy6ZpxtJdQGE0+GUaBZ2H1/kYcP327UdQ==",
|
|
||||||
"requires": {
|
|
||||||
"html-entities": "1.2.1",
|
|
||||||
"m3u8stream": "0.3.0",
|
|
||||||
"miniget": "1.2.0",
|
|
||||||
"sax": "1.2.4"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,15 +1,19 @@
|
|||||||
{
|
{
|
||||||
"name": "youtube-dowloader",
|
"name": "youtube-downloader",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "index.js",
|
"main": "main.js",
|
||||||
"scripts": {
|
"repository": {
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/plane000/youtube-downloader.git"
|
||||||
},
|
},
|
||||||
"author": "Ben (plane000)",
|
"author": "Ben (plane000)",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"devDependencies": {},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"fs": "0.0.1-security",
|
"express": "^4.16.4",
|
||||||
"ytdl-core": "^0.21.1"
|
"moment": "^2.23.0",
|
||||||
|
"socket.io": "^2.2.0",
|
||||||
|
"ytdl-core": "^0.28.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
13
legacy/src/index.js
Normal file
13
legacy/src/index.js
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
const server = require('./server');
|
||||||
|
|
||||||
|
let config = {
|
||||||
|
serverPort: 8080,
|
||||||
|
downloadLocation: './'
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports.config = config;
|
||||||
|
|
||||||
|
module.exports.main = async () => {
|
||||||
|
await server.init();
|
||||||
|
await server.listen();
|
||||||
|
}
|
||||||
19
package.json
19
package.json
@@ -1,19 +1,22 @@
|
|||||||
{
|
{
|
||||||
"name": "youtube-downloader",
|
"name": "youtube-downloader",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"description": "",
|
"description": "Simple to use youtube downloader, simply run the index javascript file with node and then go to localhost on your browser, by default the video will download to this folder but can be changed in src/index.js",
|
||||||
"main": "main.js",
|
"main": "index.js",
|
||||||
|
"scripts": {
|
||||||
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/plane000/youtube-downloader.git"
|
"url": "git+https://github.com/plane000/youtube-downloader.git"
|
||||||
},
|
},
|
||||||
"author": "Ben (plane000)",
|
"author": "Ben (benjaminkyd@gmail.com)",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"devDependencies": {},
|
"bugs": {
|
||||||
|
"url": "https://github.com/plane000/youtube-downloader/issues"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/plane000/youtube-downloader#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"express": "^4.16.4",
|
"moment": "^2.26.0"
|
||||||
"moment": "^2.23.0",
|
|
||||||
"socket.io": "^2.2.0",
|
|
||||||
"ytdl-core": "^0.28.3"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
13
src/index.js
13
src/index.js
@@ -1,13 +1,6 @@
|
|||||||
const server = require('./server');
|
|
||||||
|
|
||||||
let config = {
|
|
||||||
serverPort: 8080,
|
|
||||||
downloadLocation: './'
|
|
||||||
};
|
|
||||||
|
|
||||||
module.exports.config = config;
|
module.exports.main = async function()
|
||||||
|
{
|
||||||
module.exports.main = async () => {
|
|
||||||
await server.init();
|
|
||||||
await server.listen();
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user