-
-
Save ValdikSS/d39de7882a439a757c13dde9e8d8747e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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