/
dkb.js
84 lines (67 loc) · 1.63 KB
/
dkb.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
const assert = require('assert')
const inquirer = require('inquirer')
const Nightmare = require('nightmare')
const {prettyPrint} = require('../helpers.js')
const prompt = inquirer.createPromptModule({ output: process.stderr })
const log = process.env.NODE_DEBUG
? console.warn
: () => {}
async function getBalance (options = {}) {
const {
showBrowser = true,
username,
password,
isDevMode = false,
} = options
assert(username)
assert(password)
if (isDevMode) return '1234.56 €'
const nightmare = new Nightmare({show: showBrowser})
const baseUrl = 'https://www.dkb.de'
const loginUrl = `${baseUrl}/banking`
log(`Open ${loginUrl}`)
await nightmare
.goto(loginUrl)
.wait('#login')
log('Log in')
await nightmare
.insert('#loginInputSelector', username)
.insert('#pinInputSelector', password)
.click('#buttonlogin')
.wait('#financialStatus')
log('Retrieve current balance')
const balance = await nightmare
.evaluate(
selector => document
.querySelector(selector)
.textContent
.replace(/\./g, '')
.replace(/,/g, '.'),
'#financialStatus #summe-gruppe-0 strong span'
)
.end()
return balance + ' €'
}
prompt([
{
type: 'input',
name: 'username',
message: 'DKB Username:',
},
{
type: 'password',
name: 'password',
message: 'DKB Password:',
},
])
.then(async answers => {
try {
const balance = await getBalance(answers)
prettyPrint('dkb.de', balance)
process.exit(0)
}
catch (error) {
console.error(error)
process.exit(1)
}
})