2021-05-13 22:40:24 +05:00
#!/bin/bash
2021-05-14 02:44:12 +05:00
source .env # import credentials, tg api, cookie path, bml api
2021-05-19 03:17:09 +05:00
init( ) {
2021-05-14 02:27:01 +05:00
if [ ! -f delay ] # if delay file missing
2021-05-14 01:47:41 +05:00
then
2021-05-14 02:27:01 +05:00
echo 160 > delay # make delay file with 160 sec
2021-05-14 01:47:41 +05:00
fi
2021-05-19 03:17:09 +05:00
}
login( ) {
2021-09-19 20:14:44 +05:00
echo ""
echo ""
echo = = = = = = = = = = =
echo LOGGING IN
2021-05-15 01:08:54 +05:00
curl -s -c $COOKIE $BML_URL /login --data-raw username = $BML_USERNAME --data-raw password = ${ BML_PASSWORD } # attempt to login and generate cookie
2021-09-19 20:14:44 +05:00
echo ""
echo ""
echo = = = = = = = = = = =
echo SELECTING PROFILE
2021-05-15 01:08:54 +05:00
PROFILE = $( curl -s -b $COOKIE $BML_URL /profile | jq -r '.payload | .profile | .[] | .profile' | head -n 1) ; echo $PROFILE # get Personal Profile
curl -s -b $COOKIE $BML_URL /profile --data-raw profile = $PROFILE # select Personal Profile
2021-09-19 20:14:44 +05:00
echo ""
echo ""
}
getnumberofaccounts( ) {
NUMBEROFACCOUNTS = $( cat .env | grep BML_ACCOUNTID | cut --complement -d "'" -f 1 | cut -f1 -d "'" | wc -l)
NUMBEROFACCOUNTS = $( expr $NUMBEROFACCOUNTS - 1)
echo ""
echo $NUMBEROFACCOUNTS Accounts loaded
2021-05-19 03:17:09 +05:00
}
2021-09-09 00:26:24 +05:00
getaccountdetails( ) {
REQACCOUNTDETAILS = $( curl -s -b $COOKIE $BML_URL /account/$BML_ACCOUNTID | jq -r .payload)
ACCOUNTTYPE = $( echo $REQACCOUNTDETAILS | jq -r .product)
ACCOUNTNUMBER = $( echo $REQACCOUNTDETAILS | jq -r .accountNumber)
CURRENCY = $( echo $REQACCOUNTDETAILS | jq -r .currency)
}
2021-05-19 03:17:09 +05:00
send_tg( ) {
2021-09-19 20:14:44 +05:00
TGTEXT = $( echo $ACCOUNTTYPE %0A$ACCOUNTNUMBER %0A%0A$DESCRIPTION %0A$FROMTOAT : $ENTITY %0A$CURRENCY : $AMOUNT | sed "s/ /%20/g" ) ; echo $TGTEXT # format text for telegram
echo ""
echo ""
echo SENDING TO TG
2021-05-19 03:17:09 +05:00
curl -s $TG_BOTAPI $TG_BOT_TOKEN /sendMessage?chat_id= $TG_CHATID '&' text = $TGTEXT #send to telegram
2021-09-19 20:14:44 +05:00
echo ""
echo ""
2021-05-19 03:17:09 +05:00
}
req_history( ) {
2021-09-19 20:14:44 +05:00
echo ""
echo ""
echo = = = = = = = = = = =
echo Requesting History for : $BML_ACCOUNTID
2021-05-19 03:17:09 +05:00
REQ_HISTORY = $( curl -s -b $COOKIE $BML_URL /account/$BML_ACCOUNTID /history/today) ; echo $REQ_HISTORY
2021-09-19 20:14:44 +05:00
#LOGIN_STATUS=$(echo $REQ_HISTORY | jq -r .success) ; echo $LOGIN_STATUS
echo ""
echo ""
echo = = = = = = = = = = =
2021-05-19 03:17:09 +05:00
}
check_diff( ) {
2021-05-15 01:08:54 +05:00
CHECKDIFF1 = $( echo $HISTORY | wc -c) ; echo $CHECKDIFF1 # check intial and previous history
2021-05-19 03:17:09 +05:00
#HISTORY=$(curl -s -b $COOKIE $BML_URL/account/$BML_ACCOUNTID/history/today | jq -r '.payload | .history | .[]') ; echo $HISTORY # request history
HISTORY = $( echo $REQ_HISTORY | jq -r '.payload | .history | .[]' ) ; echo $HISTORY
2021-05-15 01:08:54 +05:00
CHECKDIFF2 = $( echo $HISTORY | wc -c) ; echo $CHECKDIFF2 # check new history
2021-05-19 03:17:09 +05:00
}
read_delay( ) {
2021-05-15 01:08:54 +05:00
DELAY = $( cat delay) ; echo $DELAY # read delay file and get value
2021-05-19 03:17:09 +05:00
}
init
login
loop( ) {
2021-09-19 20:14:44 +05:00
i = 0
# if [ "$LOGIN_STATUS" != "true" ]
# then
# echo ""
# echo ""
# echo " LOGGED OUT - SLEEPING
# sleep 200
# login
# infinite_loop
# fi
2021-05-19 03:17:09 +05:00
2021-09-19 20:14:44 +05:00
for account in ` cat .env | grep BML_ACCOUNTID | cut --complement -d "'" -f 1 | cut -f1 -d "'" `
do
accountid[ $i ] = $account ;
i = $(( $i + 1 )) ;
BML_ACCOUNTID = $( cat .env | grep BML_ACCOUNTID | cut --complement -d "'" -f 1 | cut -f1 -d "'" | head -n$i | tail -n1)
echo ""
echo $BML_ACCOUNTID Selected
echo ""
getaccountdetails
req_history
check_diff
read_delay
2021-05-19 03:17:09 +05:00
2021-05-14 02:27:01 +05:00
if [ " $CHECKDIFF1 " != " $CHECKDIFF2 " ] # if previous history do not match with new history
2021-05-13 22:40:24 +05:00
then
2021-05-17 00:15:40 +05:00
if [ " $CHECKDIFF2 " = "1" ]
2021-05-13 22:40:24 +05:00
then
2021-05-17 00:15:40 +05:00
echo "=============" ; echo NEW DAY ; echo "============="
2021-08-30 15:30:06 +05:00
# curl -s $TG_BOTAPI$TG_BOT_TOKEN/sendMessage?chat_id=$TG_CHATID'&'text=GO%20TO%20SLEEP%0AITS%0000
2021-05-17 00:15:40 +05:00
else
2021-09-19 20:14:44 +05:00
echo ""
echo ""
echo = = = = = = = = = = = = = =
echo History of $ACCOUNTTYPE - $ACCOUNTNUMBER
2021-05-17 00:15:40 +05:00
echo $HISTORY | jq
2021-09-19 20:14:44 +05:00
echo ""
echo ""
2021-05-17 00:15:40 +05:00
DESCRIPTION = $( echo $HISTORY | jq -r .description | head -n1) ; echo $DESCRIPTION # get last trascation description
AMOUNT = $( echo $HISTORY | jq -r .amount | head -n1) ; echo $AMOUNT # get last trascation amount
if [ " $DESCRIPTION " = "Transfer Credit" ] # if last trascation is description is Transfer Credit
then
FROMTOAT = From
ENTITY = $( echo $HISTORY | jq -r .narrative3 | head -n1) ; echo $ENTITY # get last persona or place name
elif [ " $DESCRIPTION " = "Transfer Debit" ] # if last trascation descripton is Transfer Debit
then
FROMTOAT = To
ENTITY = $( echo $HISTORY | jq -r .narrative3 | head -n1) ; echo $ENTITY # get last person or place name
2021-08-27 17:28:03 +05:00
elif [ " $DESCRIPTION " = "Cash Deposit-ATM" ] || [ " $DESCRIPTION " = "ATM Withdrawal" ] || [ " $DESCRIPTION " = "Purchase" ] # if last trascation descripton is ATM Withdrawal
2021-05-17 00:15:40 +05:00
then
FROMTOAT = At
ENTITY = $( echo $HISTORY | jq -r .narrative3 | head -n1) ; echo $ENTITY #get last ATM name
elif [ " $DESCRIPTION " = "Salary" ] # if last trascation descripton is Salary
then
FROMTOAT = From
ENTITY = $( echo $HISTORY | jq -r .narrative2 | head -n1) ; echo $ENTITY # get last trascation company name
fi
2021-05-19 03:17:09 +05:00
send_tg
2021-05-13 22:40:24 +05:00
fi
else
2021-09-19 20:14:44 +05:00
echo " Nothing new....Next check in $DELAY seconds "
2021-05-13 22:40:24 +05:00
fi
done
2021-05-19 03:17:09 +05:00
}
2021-09-19 20:14:44 +05:00
infinite_loop( ) {
while true; do
loop
sleep $DELAY # initiate delay read from delay file
done
}
infinite_loop