commit 65f3e49c2e70d2a390110b4eddd7d21007b79be2 Author: ptrcnull Date: Tue Mar 19 06:10:05 2024 +0100 a diff --git a/bank-millennium-parse.js b/bank-millennium-parse.js new file mode 100644 index 0000000..7c5d8c9 --- /dev/null +++ b/bank-millennium-parse.js @@ -0,0 +1,61 @@ +#!/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)