60 lines
1.6 KiB
TypeScript
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));
|
|
})();
|