|
| 1 | +import { fileURLToPath } from "url"; |
| 2 | +import fs from "fs"; |
| 3 | +import threeBeeps from "../beep.js" |
| 4 | +import axios from "axios"; |
| 5 | +import moment from "moment"; |
| 6 | +import DomParser from "dom-parser"; // https://www.npmjs.com/package/dom-parser |
| 7 | + |
| 8 | + |
| 9 | +if (process.argv[1] === fileURLToPath(import.meta.url)) { |
| 10 | + let interval = { |
| 11 | + unit: 'seconds', // seconds, m: minutes, h: hours |
| 12 | + value: 5 |
| 13 | + } |
| 14 | + let url = 'https://www.antonline.com/Sony/Electronics/Gaming_Devices/Gaming_Consoles/1413553' |
| 15 | + antonline(url, interval); |
| 16 | +} |
| 17 | + |
| 18 | + |
| 19 | +let firstRun = new Set(); |
| 20 | +export default async function antonline(url, interval) { |
| 21 | + try { |
| 22 | + var res = await axios.get(url); |
| 23 | + if (res && res.status === 200) { |
| 24 | + let parser = new DomParser(); |
| 25 | + let doc = parser.parseFromString(res.data, 'text/html'); |
| 26 | + let title = doc.getElementsByClassName('title')[0].innerHTML.slice(0, 150) |
| 27 | + let inventory = doc.getElementsByClassName('uk-button uk-button-primary add_to_cart') |
| 28 | + |
| 29 | + if (inventory && inventory.length > 0) inventory = inventory[0].textContent |
| 30 | + if (inventory && inventory.length == 0 && !firstRun.has(url)) { |
| 31 | + console.info(moment().format('LTS') + ': "' + title + '" not in stock at AntOnline. Will keep retrying every', interval.value, interval.unit) |
| 32 | + firstRun.add(url) |
| 33 | + } |
| 34 | + else if (inventory && inventory == 'Add to Cart') { |
| 35 | + threeBeeps(); |
| 36 | + console.info(moment().format('LTS') + ': ***** In Stock at AntOnline *****: ', title); |
| 37 | + console.info(url); |
| 38 | + } |
| 39 | + } else { |
| 40 | + console.info(moment().format('LTS') + ': Error occured checking ' + title + '. Retrying in', interval.value, interval.unit) |
| 41 | + } |
| 42 | + |
| 43 | + } catch (e) { |
| 44 | + console.error('Unhandled error. Written to logAntOnline.log') |
| 45 | + fs.writeFile('logAntOnline.log', e, function(err, result) { |
| 46 | + if(err) console.error('File write error: ', err); |
| 47 | + }); |
| 48 | + } |
| 49 | +}; |
0 commit comments