shitscripts/bank-millennium-parse.js
2024-03-19 06:10:05 +01:00

61 lines
1.6 KiB
JavaScript

#!/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)