#!/usr/bin/node require('ptrc') const paymentTypes = { // in-person payments 'ZAKUP - FIZ. UŻYCIE KARTY': 6, 'PŁATNOŚĆ BLIK': 6, // online payments 'PŁATNOŚĆ BLIK W INTERNECIE': 8, 'PŁATNOŚĆ INTERNETOWA WYCHODZĄCA': 8, 'ZAKUP - BEZ FIZ. UŻYCIA KARTY': 8, 'ZAKUP BILETU MIEJSKIEGO': 8, 'OPŁATA ZA PARKING': 8, // fees 'OBCIĄŻENIE': 10, 'PROWIZJA': 10, // transfers 'UZNANIE': 4, 'PRZELEW NATYCHMIASTOWY WYCHODZĄCY': 4, 'PRZELEW DO INNEGO BANKU': 4, 'ZAKUP - ZWROT': 4, 'PRZELEW PRZYCHODZĄCY': 4, 'PRZELEW NA TELEFON': 4, 'PŁATNOŚĆ BLIK W INTERNECIE - ZWROT': 4, 'PRZEKAZ SEPA': 4, // *own* transfers 'PRZELEW WEWNĘTRZNY PRZYCHODZĄCY': 4, 'PRZELEW WEWNĘTRZNY WYCHODZĄCY': 4, // deposit 'OPERACJE NA LOKATACH': 9, // block 'Blokada na zakup - bez fiz. użycia karty': 0, } const har = stdin() const responses = har.log.entries.filter(ent => ent.response.content.mimeType?.startsWith("application/json") && ent.request.url.startsWith("https://retail.api.bankmillennium.pl/bm/app/hybrid/search/transactions/") ) .map(ent => ent.response.content.text) .map(JSON.parse) .filter(res => res.transactions) .map(res => res.transactions) .flat() .map(item => [ item.transactionDate.split('T')[0], paymentTypes[item.type] ?? item.type, item.description, '', '', item.amount, '', '' ]) .map(row => row.join(';')) .join('\n') // .filter(item => typeof item[1] === 'string') // .filter((item, idx, arr) => arr.findIndex(other => other.id === item.id) === idx) // console.log(responses) // console.log(responses.length) console.log(responses)