Skip to content

Instantly share code, notes, and snippets.

@ArcerionDev
Created December 31, 2021 00:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ArcerionDev/3c0170ea3f8694461e8c0af7bfbcf7d7 to your computer and use it in GitHub Desktop.
Save ArcerionDev/3c0170ea3f8694461e8c0af7bfbcf7d7 to your computer and use it in GitHub Desktop.
scrape samples from vandalism packs to get them free
const readline = require('readline').createInterface({
input: process.stdin,
output: process.stdout
})
const fs = require('fs')
const fetch = (...args) => import('node-fetch').then(({ default: fetch }) => fetch(...args));
const JSDOM = require('jsdom').JSDOM
async function extract(pack) {
let url = `https://vandalism-sounds.com/${pack}.html`
const { document } = (new JSDOM(`...`)).window;
let site = document.createElement('html')
site.innerHTML = await (await (await fetch(url)).text())
let items = Array.from(site.getElementsByClassName('waveform-item'))
let data = []
items.forEach(i => {
function getmd(n) {
return i.children[0].children[n].children[0].innerHTML.replaceAll(' ', '').split('\n').filter(Boolean)[0]
}
data.push(
{
url: i.children[0].children[0].dataset.link,
meta: {
name: getmd(0),
fileType: getmd(2).toLowerCase(),
key: getmd(3),
bpm: getmd(4),
genre: getmd(5),
}
}
)
})
fs.mkdirSync(`./Vandalism/${pack}/`)
data.forEach(i => {
setTimeout(async function (){
let name = `${i.meta.name}${(i.meta.bpm) ? `_${i.meta.bpm}bpm`: ''}${(i.meta.key.slice(0).replaceAll('-','')) ? `_${i.meta.key}`: ''}${(i.meta.genre.slice(0).replaceAll('-','')) ? `_${i.meta.genre}`: ''}${i.meta.fileType}`
const response = await fetch(i.url);
const buffer = await response.buffer();
fs.writeFile(`./Vandalism/${pack}/${name}`, buffer, () =>
console.log(`Saved ${i.meta.name} as ./Vandalism/${pack}/${name}`));
},2500)
})
}
readline.question(`Enter the pack name below:\n\n`, packname => {
extract(packname)
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment