Skip to content

Instantly share code, notes, and snippets.

@Foair
Created December 8, 2018 09:53
Show Gist options
  • Save Foair/c4d4513fb624d99f4bcbbd34a3323b3c to your computer and use it in GitHub Desktop.
Save Foair/c4d4513fb624d99f4bcbbd34a3323b3c to your computer and use it in GitHub Desktop.
VCB-Studio 开放课程文档递归获得下载地址
const axios = require('axios');
const fs = require('fs');
axios.defaults.baseURL = 'https://vcb-s.nmm-hd.org';
const visitedLinks = [];
const files = [];
async function getURL(url) {
if (visitedLinks.includes(url)) return;
else visitedLinks.push(url);
console.log('>>>', url);
const body = {
action: 'get',
items: {
href: url,
what: 1
}
};
const {
data: { items }
} = await axios.post(url + '?', body);
items
.filter(i => i.fetched === undefined)
.map(i => {
files.push(i.href);
});
items.filter(i => i.fetched === false).map(i => getURL(i.href));
}
getURL('/');
setTimeout(() => {
fs.writeFileSync('url.txt', files.reduce((a, b) => `${a}\n${b}`));
}, 100000);
const axios = require('axios');
const fs = require('fs');
const baseURL = 'https://vcb-s.nmm-hd.org';
axios.defaults.baseURL = baseURL;
const visitedLinks = [];
const files = [];
async function getURL(url, first = false) {
if (visitedLinks.includes(url)) return;
else visitedLinks.push(url);
console.log('>>>', decodeURI(url));
const body = {
action: 'get',
items: {
href: url,
what: 1
}
};
const {
data: { items }
} = await axios.post(url + '?', body);
let file = items.filter(i => i.fetched === undefined);
if (!first)
file = file.filter(i => !['/Menu.xlsx', '/readme.txt'].includes(i.href));
file.map(i => {
files.push(i.href);
});
return Promise.all(
items.filter(i => i.fetched === false).map(i => getURL(i.href))
);
}
getURL('/', true).then(() => {
fs.writeFileSync('url.txt', files.map(i => baseURL + i).join('\n'));
});
@Foair
Copy link
Author

Foair commented Dec 8, 2018

Node 执行 vcb-b.js 控制台输出结果如下:

>>> /
>>> /Dark Shrine/
>>> /Templar Archive/
>>> /Twilight Council/
>>> /Twilight Council/[VCB-Studio][教程00]视频格式基础知识/
>>> /Twilight Council/[VCB-Studio][教程01]傻瓜式解码包(完美解码)安装设置教程/
>>> /Twilight Council/[VCB-Studio][教程02]播放器教程背后的知识/
>>> /Twilight Council/[VCB-Studio][教程21]后缀表达式求值与转换/
>>> /Dark Shrine/[VCB-Studio][教程03]基础工具的安装和调试/
>>> /Dark Shrine/[VCB-Studio][教程04]BDRip的制作流程/
>>> /Dark Shrine/[VCB-Studio][教程05]封装、分离和转封装容器/
>>> /Dark Shrine/[VCB-Studio][教程08]章节的处理与BDMV的分割/
>>> /Dark Shrine/[VCB-Studio][教程09]x264参数设置/
>>> /Dark Shrine/[VCB-Studio][教程10]x265 2.0参数设置/
>>> /Dark Shrine/[VCB-Studio][教程11]编码器参数研发方法/
>>> /Templar Archive/[VCB-Studio][教程06]VapourSynth基础与入门/
>>> /Templar Archive/[VCB-Studio][教程07]AviSynth基础与入门/
>>> /Templar Archive/[VCB-Studio][教程12]16bit YUV的处理/
>>> /Templar Archive/[VCB-Studio][教程13]Resizer(1)/
>>> /Templar Archive/[VCB-Studio][教程14]Blur/
>>> /Templar Archive/[VCB-Studio][教程15]Clip加减运算与Unsharp Mask/
>>> /Templar Archive/[VCB-Studio][教程16]Repair的用法与Contra-Sharp/
>>> /Templar Archive/[VCB-Studio][教程17]LimitDiff的用法与nr-deband/
>>> /Templar Archive/[VCB-Studio][教程18]YUV与RGB的互转(1)/
>>> /Templar Archive/[VCB-Studio][教程19]AVS的多线程优化-MPP的使用/
>>> /Templar Archive/[VCB-Studio][教程20]MaskTools (1)/
>>> /Templar Archive/[VCB-Studio][教程25]Resizer(2)/
>>> /Templar Archive/[VCB-Studio][教程26]YUV和RGB互转(2)/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment