Files
warp/tools/viewblock-scraper.ts
2021-09-24 17:55:13 +02:00

60 lines
1.6 KiB
TypeScript

import got from 'got';
import { LoggerFactory } from '../src';
import { TsLogFactory } from '../src/logging/node/TsLogFactory';
import cheerio from 'cheerio';
import fs from 'fs';
import path from 'path';
import { sleep } from '../src/utils';
const viewblockUrl = 'https://viewblock.io/arweave/address/Daj-MNSnH55TDfxqC7v4eq0lKzVIwh98srUaWqyuZtY?page=';
const pageFrom = 36;
const pageTo = 42;
(async () => {
LoggerFactory.use(new TsLogFactory());
LoggerFactory.INST.logLevel('debug');
const logger = LoggerFactory.INST.create('scraper');
const transactions = {};
for (let i = pageFrom; i <= pageTo; i++) {
logger.info('Loading page', i);
const response = await got(`${viewblockUrl}${i}`);
logger.debug('Response:', {
status: response.statusCode,
message: response.statusMessage
});
const $ = cheerio.load(response.body);
$('table > tbody > tr').each((index, element) => {
let txId = null;
let validity = null;
const $tr = cheerio.load(element);
$tr("td.ell > a[href^='/arweave/tx/']").each((idx2, el2) => {
const tx = el2.attribs.href;
txId = tx.replace('/arweave/tx/', '');
});
$tr('td > div').each((idx2, el2) => {
if (idx2 !== 0) {
return;
}
const title = el2.attribs.title;
logger.debug(title);
validity = title.localeCompare('Contract execution') === 0;
});
logger.debug(`${txId}: ${validity}`);
transactions[txId] = validity;
});
await sleep(1000);
}
fs.writeFileSync(path.join(__dirname, 'data', 'viewblock-transactions-2.json'), JSON.stringify(transactions));
})();