Skip to content

Instantly share code, notes, and snippets.

@ValdikSS
Last active September 21, 2017 16:43
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ValdikSS/d39de7882a439a757c13dde9e8d8747e to your computer and use it in GitHub Desktop.
Save ValdikSS/d39de7882a439a757c13dde9e8d8747e to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
from sys import stderr
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import time
from pyvirtualdisplay import Display
display = Display(visible=0, size=(1024, 768))
display.start()
LOGIN="LOGIN HERE"
PASSWORD="PASSWORD HERE"
SELECTOR=".x233.x7m"
try:
#driver = webdriver.PhantomJS()
fp = webdriver.FirefoxProfile()
fp.set_preference('browser.tabs.remote.autostart.2', False)
fp.set_preference('browser.tabs.remote.autostart', False)
fp.update_preferences()
firefox_capabilities = DesiredCapabilities.FIREFOX.copy()
firefox_capabilities['marionette'] = True
#firefox_capabilities['firefox_profile'] = fp.encoded
driver = webdriver.Firefox(capabilities=firefox_capabilities, firefox_profile=fp)
#driver = webdriver.Firefox()
except Exception as e:
print("Can't start Firefox!", file=stderr)
display.stop()
raise e
print("Opened driver, navigating to AlfaBank", file=stderr)
try:
driver.get("https://click.alfabank.ru/ALFAIBSR/")
WebDriverWait(driver, 60).until(EC.presence_of_element_located((By.NAME, "username")))
login_input = driver.find_element_by_name("username")
login_input.send_keys(LOGIN)
password_input = driver.find_element_by_name("password")
password_input.send_keys(PASSWORD)
password_input.send_keys(Keys.RETURN)
print("Logged in, waiting for money class.", file=stderr)
money = WebDriverWait(driver, 60).until(EC.presence_of_element_located((By.CSS_SELECTOR, SELECTOR)))
print("Got money class!", file=stderr)
moneys = driver.find_elements_by_css_selector(SELECTOR)
money_list = [money.text for money in moneys]
money = "; ".join(money_list) + "\n"
try:
money_saved = open("money.txt", "r").read()
except FileNotFoundError:
money_saved = ""
except Exception as e:
print("Unknown exception!", repr(e))
money_saved = ""
if money_saved != money:
print("Money changed!")
print("Was:", money_saved)
print("Now:", money)
with open("money.txt", "w") as money_file:
money_file.write(money)
else:
print("Money not changed.", file=stderr)
except Exception as e:
#print(e)
pass
finally:
driver.quit()
display.stop()
#!/usr/bin/env python3
import requests
import json
from sys import stderr
CARDCODE = 'CARDCODE HERE'
PASSWORD = 'PASSWORD HERE'
s = requests.Session()
pdata = {"principal": CARDCODE, "secret": PASSWORD, "type": "AUTO"}
rjson = s.post('https://mybank.oplata.kykyryza.ru/api/v0001/authentication/authenticate', data=json.dumps(pdata))
r = rjson.json()
assert(r['status'] == 'OK')
rjson = s.get("https://mybank.oplata.kykyryza.ru/api/v0001/cards")
r = rjson.json()
assert(r['status'] == 'OK')
balance = r['data'][0]['equities'][0]['amount']
currency = r['data'][0]['equities'][0]['currencyCode']
try:
money_saved = open("money.txt", "r").read()
except FileNotFoundError:
money_saved = ""
except Exception as e:
print("Unknown exception!", repr(e))
money_saved = ""
if money_saved != balance:
print("Balance changed!")
print("Was:", money_saved, currency)
print("Now:", balance, currency)
print("Delta:", float(balance) - float(money_saved), currency)
with open("money.txt", "w") as money_file:
money_file.write(balance)
rjson = s.get("https://mybank.oplata.kykyryza.ru/api/v0001/hst?limit=3")
r = rjson.json()
assert(r['status'] == 'OK')
print()
print("Latest transactions:")
for tr in r['data']:
sign = '-' if tr['money']['income'] == False else '+'
amount = tr['money']['amount']
curr = tr['money']['currency']
desc = tr['description']
print(sign + str(amount), curr, desc)
else:
print("Balance not changed.", file=stderr)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment