Skip to content

Commit 95d8ee5

Browse files
committed
Add rustlabs despawn and stack data
1 parent 048da38 commit 95d8ee5

File tree

3 files changed

+5435
-5
lines changed

3 files changed

+5435
-5
lines changed

src/external/process_rustlabs.js

Lines changed: 61 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ const Utils = require('../util/utils.js');
2727

2828
/* Constants */
2929

30+
const SLEEP_TIMEOUT_MS = 2000;
31+
3032
const RUSTLABS_ALL_ITEMS_URL = 'https://rustlabs.com/group=itemlist';
3133
const RUSTLABS_ITEM_URL = 'https://rustlabs.com/item/';
3234

@@ -77,6 +79,10 @@ const RUSTLABS_ITEM_SMELTING_REGEX1 =
7779
/<a\shref="\/item\/(\n|.)*?img\/.*?\/(.*?)\.png"\salt="(.*?)"(\n|.)*?<\/a><a\shref="\/item\/(\n|.)*?img\/.*?\/wood\.png"(\n|.)*?text-in-icon">(.*?)<\/span(\n|.)*?<a\shref="\/item\/(\n|.)*?img\/.*?\/(.*?)\.png"\salt="(.*?)"(\n|.)*?text-in-icon">(.*?)<(\n|.)*?<td>(.*?sec|.*?min)</gm
7880
const RUSTLABS_ITEM_SMELTING_REGEX2 = /<a\shref="\/item\/(\n|.)*?img\/.*?\/(.*?)\.png"\salt="(.*?)"(\n|.)*?<a\shref="\/item\/(\n|.)*?img\/.*?\/(.*?)\.png"\salt="(.*?)"(\n|.)*?text-in-icon">(.*?)<\/span(\n|.)*?<td>(.*?sec|.*?min)</gm
7981

82+
const RUSTLABS_ITEM_DESPAWN_REGEX = /<td>Despawn\stime<\/td>(\n|.)*?<td>(.*?)<\/td>/gm
83+
84+
const RUSTLABS_ITEM_STACK_REGEX = /<td>Stack\sSize<\/td>(\n|.)*?<td>(.*?)<\/td>/gm
85+
8086
const RUSTLABS_ALL_BUILDING_BLOCKS_REGEX = /\/building\/(.*?)">(.*?)</gm
8187

8288
const RUSTLABS_ALL_OTHER_REGEX = /\/entity\/(.*?)">(.*?)</gm
@@ -93,6 +99,8 @@ rustlabsDurabilityData['items'] = new Object();
9399
rustlabsDurabilityData['buildingBlocks'] = new Object();
94100
rustlabsDurabilityData['other'] = new Object();
95101
const rustlabsSmeltingData = new Object();
102+
const rustlabsDespawnData = new Object();
103+
const rustlabsStackData = new Object();
96104

97105
async function scrape(url) {
98106
try {
@@ -200,10 +208,10 @@ async function processAllItems() {
200208
processItemRecycle(rustlabsName, shortname, name, data);
201209
processItemDurability(rustlabsName, shortname, name, data);
202210
processItemSmelting(rustlabsName, shortname, name, data);
203-
// Despawn time item?
204-
// stack size?
211+
processItemDespawn(rustlabsName, shortname, name, data);
212+
processItemStack(rustlabsName, shortname, name, data);
205213

206-
await sleep(2000);
214+
await sleep(SLEEP_TIMEOUT_MS);
207215
}
208216
}
209217

@@ -246,7 +254,7 @@ async function processAllBuildingBlocks() {
246254

247255
processItemDurability(rustlabsName, null, name, data, 'buildingBlocks');
248256

249-
await sleep(2000);
257+
await sleep(SLEEP_TIMEOUT_MS);
250258
}
251259
}
252260

@@ -286,7 +294,7 @@ async function processAllOther() {
286294

287295
processItemDurability(rustlabsName, null, name, data, 'other');
288296

289-
await sleep(2000);
297+
await sleep(SLEEP_TIMEOUT_MS);
290298
}
291299
}
292300

@@ -735,6 +743,52 @@ function processItemSmelting(rustlabsName, shortname, name, data) {
735743
rustlabsSmeltingData[itemId] = content;
736744
}
737745

746+
function processItemDespawn(rustlabsName, shortname, name, data) {
747+
const itemId = Object.keys(ITEMS).find(e => ITEMS[e].shortname === shortname && ITEMS[e].name === name);
748+
if (!itemId) return;
749+
750+
let matches = [...data.matchAll(RUSTLABS_ITEM_DESPAWN_REGEX)];
751+
if (matches.length !== 1) {
752+
console.log(' - No despawn data found.');
753+
return;
754+
}
755+
756+
matches = matches[0];
757+
if (matches.length !== 3) {
758+
console.log(' - No despawn data found.');
759+
return;
760+
}
761+
762+
const string = matches[2].trim();
763+
const seconds = parseTime(string);
764+
765+
rustlabsDespawnData[itemId] = new Object();
766+
rustlabsDespawnData[itemId]["time"] = seconds;
767+
rustlabsDespawnData[itemId]["timeString"] = string;
768+
}
769+
770+
function processItemStack(rustlabsName, shortname, name, data) {
771+
const itemId = Object.keys(ITEMS).find(e => ITEMS[e].shortname === shortname && ITEMS[e].name === name);
772+
if (!itemId) return;
773+
774+
let matches = [...data.matchAll(RUSTLABS_ITEM_STACK_REGEX)];
775+
if (matches.length !== 1) {
776+
console.log(' - No stack data found.');
777+
return;
778+
}
779+
780+
matches = matches[0];
781+
if (matches.length !== 3) {
782+
console.log(' - No stack data found.');
783+
return;
784+
}
785+
786+
const quantity = matches[2].trim().replace('×', '').replace(/,/g, '');
787+
788+
rustlabsStackData[itemId] = new Object();
789+
rustlabsStackData[itemId]["quantity"] = quantity;
790+
}
791+
738792
async function main() {
739793
await processAll();
740794

@@ -744,6 +798,8 @@ async function main() {
744798
Fs.writeFileSync(`${__dirname}/rustlabsRecycleData.json`, JSON.stringify(rustlabsRecycleData, null, 2));
745799
Fs.writeFileSync(`${__dirname}/rustlabsDurabilityData.json`, JSON.stringify(rustlabsDurabilityData, null, 2));
746800
Fs.writeFileSync(`${__dirname}/rustlabsSmeltingData.json`, JSON.stringify(rustlabsSmeltingData, null, 2));
801+
Fs.writeFileSync(`${__dirname}/rustlabsDespawnData.json`, JSON.stringify(rustlabsDespawnData, null, 2));
802+
Fs.writeFileSync(`${__dirname}/rustlabsStackData.json`, JSON.stringify(rustlabsStackData, null, 2));
747803
}
748804

749805
main();

0 commit comments

Comments
 (0)