Quick usage
First, copy the following code into a text editor:
```js
(() => {
// Time to wait between requests, in milliseconds. Defaults to 0.5 seconds.
const WAIT_MS = 500;
const wait = (ms) => {
return new Promise((resolve, reject) => {
setTimeout(() => resolve(), ms);
});
};
const slaughterAll = async (themes) => {
let ok = 0;
let failed = 0;
for (const set of themes) {
for (const key in set) {
let response = await fetch(`https://api.ldjam.com/vx/theme/idea/vote/no/${key}`, {
credentials: 'include',
});
await wait(WAIT_MS);
if (response.ok) {
console.log(`Slaughtered ${key} (${set[key]})`);
ok += 1;
}
else {
console.warn(`Error slaughtering ${key} (${set[key]}): ${response.status} ${response.statusText}`);
failed += 1;
}
}
}
return {
ok, failed,
};
};
slaughterAll([
// ---------- Paste lists after this line! ----------
// ---------- Paste lists before this line! ----------
])
.then((results) => console.log(`Done! ${results.ok} ok, ${results.failed} failed.`));
})()
```
Then, paste one or more of these lists between the separators:
- Control/buttons: https://pastebin.com/yLm4DadV
- Virus: https://pastebin.com/mYu0n5NR
- Currency: https://pastebin.com/XPBFb2tS
- Die/lose to win: https://pastebin.com/J3ArHEdW
- Thing is key: https://pastebin.com/AfVXxjSS
- You are bad: https://pastebin.com/VnGLV4Y5
- Colors: https://pastebin.com/D1M3zWnR
After you're done, the slaughterAll section should look somewhat like:
```js
slaughterAll([
// ---------- Paste lists after this line! ----------
// Themes that contain: words, words, words, words, words
{
"12345": "theme content",
"12345": "theme content",
"12345": "theme content",
},
// Themes that contain: words, words, words, words, words
{
"12345": "theme content",
"12345": "theme content",
"12345": "theme content",
},
// ...
// ---------- Paste lists before this line! ----------
])
```
Finally, go to https://ldjam.com/events/ludum-dare/46/theme, and paste the entire file into the web Console (F12). Press Enter and relax!
Note: Don't refresh or close the page until "Done! X ok, X failed." is printed, or you will lose your progress. It's normal for the pie chart to not update.
Making your own lists
To make your own lists, you'll need a JSON of all themes. You may find the URL by looking at the requests sent while loading https://ldjam.com/events/ludum-dare/46/theme. The URL should look like https://api.ldjam.com/vx/theme/idea/vote/get/<some_number>.
After you have obtained the list, save it as theme.json somewhere. Then, save the following Node.js script as gen_list.js in the save folder as theme.json:
```js
const fs = require('fs');
const process = require('process');
let themes = fs.readFileSync('themes.json', {
encoding: 'utf8',
});
themes = JSON.parse(themes);
const blacklist = process.argv.slice(2);
const blacklistMap = {};
for (const word of blacklist) {
blacklistMap[word] = true;
}
const trailingDots = /(.)+$/;
const wordSeparator = /[\W_]/;
const words = {};
const killList = {};
for (const key in themes.ideas) {
const theme = themes.ideas[key];
for (let word of theme.split(wordSeparator)) {
word = word.replace(trailingDots, '');
word = word.toLowerCase();
if (word.length < 1) {
continue;
}
if (blacklistMap[word]) {
killList[key] = theme;
break;
}
}
}
process.stdout.write('// Themes that contain: ');
process.stdout.write(blacklist.join(', '));
process.stdout.write('
');
process.stdout.write(JSON.stringify(killList, null, 4));
process.stdout.write(',
');
```
You can now generate your own lists by running this file from the command line!
node gen_list.js keyword_1 keyword_2 keyword3
Stay healthy and flatten the curve!