62 lines
1.6 KiB
JavaScript
62 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)
|