diff --git a/index.js b/index.js index 589474c..c999a79 100644 --- a/index.js +++ b/index.js @@ -1,8 +1,5 @@ const puppeteer = require('puppeteer') -const getPrice = require('./getPrice') -const items = require('./items') - -const marketUrl = 'https://warframe.market/items/'; +const items = require('./items'); (async () => { const browser = await puppeteer.launch({ headless: false }) @@ -11,10 +8,10 @@ const marketUrl = 'https://warframe.market/items/'; for (const item of items) { let partsPrice = 0 for (const part of item.parts) { - partsPrice += await getPrice(page, marketUrl + part.url) + partsPrice += await part.getPrice(page) } - const setPrice = await getPrice(page, marketUrl + item.url) + const setPrice = await item.set.getPrice(page) if (partsPrice < setPrice) { console.log(item.name, partsPrice, setPrice) } diff --git a/items/Item.js b/items/Item.js index c84b330..07eb6a3 100644 --- a/items/Item.js +++ b/items/Item.js @@ -1,12 +1,15 @@ +const Part = require('./Part') + module.exports = class Item { constructor (name) { this.name = name - this.url = `${this.name}_prime_set` + this.set = new Part(name, 'set') + this.parts = [] this.addPart('blueprint') } addPart (part) { - this.parts.push({ part, url: `${this.name}_prime_${part}` }) + this.parts.push(new Part(this.name, part)) } } diff --git a/items/Part.js b/items/Part.js new file mode 100644 index 0000000..3dc8111 --- /dev/null +++ b/items/Part.js @@ -0,0 +1,15 @@ +module.exports = class Part { + constructor (set, part) { + this.part = part + this.url = `${set}_prime_${part}` + } + + async getPrice (page) { + const marketUrl = 'https://warframe.market/items/' + + await page.goto(marketUrl + this.url) + const element = await page.waitForSelector('b.price') + const value = await element.evaluate(el => el.textContent) + return Number(value) + } +}