mirror of
https://github.com/Tusko/vimeo-private-downloader.git
synced 2025-08-21 05:44:04 -07:00
commit
7c821b8495
2 changed files with 339 additions and 331 deletions
33
videojson.js
33
videojson.js
|
@ -1,16 +1,19 @@
|
||||||
const list = [
|
const list = [
|
||||||
{
|
{
|
||||||
name: '1. Introduction "Double Quotes" \'SingleQuotes\' \\ can I use it?',
|
name: "1. Introduction",
|
||||||
url: 'https://60vod-adaptive.akamaized.net/exp=1585247356~acl=%2F290272859%2F%2A~hmac=9e480e2a6d726afd2f54bdacd7c959c00fb8d1fb1d6225aaf73b1205bef6eb5b/290272859/sep/video/1099558424,1099558420,1099557256,1099557251/master.json?base64_init=1'
|
url:
|
||||||
|
"https://60vod-adaptive.akamaized.net/exp=1585642273~acl=%2F290272859%2F%2A~hmac=83af394043c1f9e24e0b1ffdd22e771c0ef2106a6a6ce4cf5e6a288dba76ceef/290272859/sep/video/1099558424,1099558420,1099557256,1099557251/master.json?base64_init=1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "2.1. Интро",
|
||||||
|
url:
|
||||||
|
"https://117vod-adaptive.akamaized.net/exp=1585640053~acl=%2F207987916%2F%2A~hmac=9834e76445d49081a3b04c7e40f656ec256a04e1f53e7e7594d228a117f27ac0/207987916/sep/video/710158253,710158251,710158247,710158246/master.json?base64_init=1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "2.2. Mindset",
|
||||||
|
url:
|
||||||
|
"https://120vod-adaptive.akamaized.net/exp=1585640068~acl=%2F207987919%2F%2A~hmac=b7e36ce71b8b679653141a51acbd5d8f7ca49d6c687704ad14d7c195f441dc80/207987919/sep/video/710158304,710158302,710158298,710158294/master.json?base64_init=1"
|
||||||
},
|
},
|
||||||
// {
|
|
||||||
// name: '2.1. Интро',
|
|
||||||
// url: 'https://117vod-adaptive.akamaized.net/exp=1581671870~acl=%2F207987916%2F%2A~hmac=74fe7a27bee712a90aeb8f0e34b089002adbe65040d757df8e7ebf60ee1f862a/207987916/sep/video/710158253,710158251,710158247,710158246/master.json?base64_init=1'
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// name: '2.2. Mindset',
|
|
||||||
// url: 'https://120vod-adaptive.akamaized.net/exp=1581671964~acl=%2F207987919%2F%2A~hmac=c41f0eeb2c69b5ad3ec5045a9734544bbe15dab83e1d554d986bef8963d27a64/207987919/sep/video/710158304,710158302,710158298,710158294/master.json?base64_init=1'
|
|
||||||
// },
|
|
||||||
// {
|
// {
|
||||||
// name: '2.3. Точка А и точка В',
|
// name: '2.3. Точка А и точка В',
|
||||||
// url: 'https://122vod-adaptive.akamaized.net/exp=1581672008~acl=%2F207987921%2F%2A~hmac=b444cacf99794d91a4b6b4d9df1e3e5b262980920ff21e809b7fe8f939fec49a/207987921/sep/video/710158242,710158240,710158238,710158235/master.json?base64_init=1'
|
// url: 'https://122vod-adaptive.akamaized.net/exp=1581672008~acl=%2F207987921%2F%2A~hmac=b444cacf99794d91a4b6b4d9df1e3e5b262980920ff21e809b7fe8f939fec49a/207987921/sep/video/710158242,710158240,710158238,710158235/master.json?base64_init=1'
|
||||||
|
@ -272,9 +275,9 @@ const list = [
|
||||||
// url: 'https://62vod-adaptive.akamaized.net/exp=1581684969~acl=%2F261117261%2F%2A~hmac=457efdb88843a44b490f5b943aa3904fe5a330810f0f74895451d872131eec56/261117261/sep/video/960975200,960975199,960975195,960975194/master.json?base64_init=1',
|
// url: 'https://62vod-adaptive.akamaized.net/exp=1581684969~acl=%2F261117261%2F%2A~hmac=457efdb88843a44b490f5b943aa3904fe5a330810f0f74895451d872131eec56/261117261/sep/video/960975200,960975199,960975195,960975194/master.json?base64_init=1',
|
||||||
// },
|
// },
|
||||||
{
|
{
|
||||||
name: '',
|
name: "",
|
||||||
url: '',
|
url: ""
|
||||||
},
|
}
|
||||||
]
|
];
|
||||||
|
|
||||||
module.exports = list
|
module.exports = list;
|
||||||
|
|
|
@ -5,26 +5,15 @@ const log = (...args) => console.log("→", ...args);
|
||||||
const list = require("./videojson.js");
|
const list = require("./videojson.js");
|
||||||
const promises = [];
|
const promises = [];
|
||||||
|
|
||||||
list.forEach((el, i) => {
|
function loadVideo(num, cb) {
|
||||||
if (!el.name && !el.url) return;
|
|
||||||
|
|
||||||
promises.push(loadVideo(i));
|
|
||||||
});
|
|
||||||
|
|
||||||
Promise.all(promises).then(function(values) {
|
|
||||||
log("🌈", ` List finished`);
|
|
||||||
});
|
|
||||||
|
|
||||||
function loadVideo(num) {
|
|
||||||
let masterUrl = list[num].url;
|
let masterUrl = list[num].url;
|
||||||
if (!masterUrl.endsWith("?base64_init=1")) {
|
if (!masterUrl.endsWith("?base64_init=1")) {
|
||||||
masterUrl += "?base64_init=1";
|
masterUrl += "?base64_init=1";
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Promise(resolve => {
|
|
||||||
getJson(masterUrl, (err, json) => {
|
getJson(masterUrl, (err, json) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
log("⚠️", ` ${err}`);
|
return cb(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
const videoData = json.video
|
const videoData = json.video
|
||||||
|
@ -51,7 +40,7 @@ function loadVideo(num) {
|
||||||
list[num].name + ".m4v",
|
list[num].name + ".m4v",
|
||||||
err => {
|
err => {
|
||||||
if (err) {
|
if (err) {
|
||||||
log("⚠️", ` ${err}`);
|
return cb(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
processFile(
|
processFile(
|
||||||
|
@ -62,23 +51,22 @@ function loadVideo(num) {
|
||||||
list[num].name + ".m4a",
|
list[num].name + ".m4a",
|
||||||
err => {
|
err => {
|
||||||
if (err) {
|
if (err) {
|
||||||
log("⚠️", ` ${err}`);
|
return cb(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
resolve(num + 1);
|
cb(null, num + 1);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function processFile(type, baseUrl, initData, segments, filename, cb) {
|
function processFile(type, baseUrl, initData, segments, filename, cb) {
|
||||||
const filePath = `./parts/${filename}`;
|
const filePath = `./parts/${filename}`;
|
||||||
if (fs.existsSync(filePath)) {
|
if (fs.existsSync(filePath)) {
|
||||||
log("⚠️", ` ${filename} - ${type} already exists`);
|
log("⚠️", ` ${filename} - ${type} already exists`);
|
||||||
cb();
|
return cb();
|
||||||
}
|
}
|
||||||
|
|
||||||
const segmentsUrl = segments.map(seg => baseUrl + seg.url);
|
const segmentsUrl = segments.map(seg => baseUrl + seg.url);
|
||||||
|
@ -138,3 +126,20 @@ function getJson(url, cb) {
|
||||||
cb(e);
|
cb(e);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function initJs(n = 0) {
|
||||||
|
if (!list[n] || (!list[n].name && !list[n].url)) return;
|
||||||
|
|
||||||
|
loadVideo(n, (err, num) => {
|
||||||
|
if (err) {
|
||||||
|
log("⚠️", ` ${err}`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (list[num]) {
|
||||||
|
initJs(num);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
initJs();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue