#!/usr/bin/env python import time import re from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import Select browser = webdriver.Chrome() #Sign into Garmin for sleep (& HR?) data #browser.get('https://connect.garmin.com/en-US/signin') #Get login iframe browser.get('https://sso.garmin.com/sso/login?service=https%3A%2F%2Fconnect.garmin.com%2Fmodern%2F&webhost=olaxpw-conctmodern007.garmin.com&source=https%3A%2F%2Fconnect.garmin.com%2Fen-US%2Fsignin&redirectAfterAccountLoginUrl=https%3A%2F%2Fconnect.garmin.com%2Fmodern%2F&redirectAfterAccountCreationUrl=https%3A%2F%2Fconnect.garmin.com%2Fmodern%2F&gauthHost=https%3A%2F%2Fsso.garmin.com%2Fsso&locale=en_US&id=gauth-widget&cssUrl=https%3A%2F%2Fstatic.garmincdn.com%2Fcom.garmin.connect%2Fui%2Fcss%2Fgauth-custom-v1.2-min.css&privacyStatementUrl=%2F%2Fconnect.garmin.com%2Fen-US%2Fprivacy%2F&clientId=GarminConnect&rememberMeShown=true&rememberMeChecked=false&createAccountShown=true&openCreateAccount=false&usernameShown=false&displayNameShown=false&consumeServiceTicket=false&initialFocus=true&embedWidget=false&generateExtraServiceTicket=false&globalOptInShown=true&globalOptInChecked=false&mobile=false&connectLegalTerms=true#') time.sleep(5) #give dom time to load username = browser.find_element_by_id("username") password = browser.find_element_by_id("password") username.send_keys(" ") password.send_keys(" ") browser.find_element_by_id("login-btn-signin").click() #goto wellness screen browser.get('https://connect.garmin.com/modern/dashboard/ ') time.sleep(5) sleep_tot = browser.find_element_by_class_name("sleep-total-time").text sleep_hrs = int(str(sleep_tot[2:4]).replace(':','')) print(sleep_tot) print(sleep_hrs) if sleep_hrs >= 10: sleep_min = int(sleep_tot[5:7]) else: sleep_min = int(sleep_tot[4:6]) print("You slept: " + str(sleep_hrs) + " hrs") print("You slept: " + str(sleep_min) + " mins") #Get HR data browser.find_element_by_xpath("//a[contains(@title, 'Hrv')]").click() time.sleep(5) avgHR = browser.find_element_by_xpath("//div[contains(@class,'data-block')][contains(., 'Avg HR')]").text.encode('utf-8') avgHR = re.findall(b'\d+', avgHR) print(int(avgHR[0])) maxHR = browser.find_element_by_xpath("//div[contains(@class,'data-block')][contains(., 'Max HR')]").text.encode('utf-8') maxHR = re.findall(b'\d+', maxHR) print(int(maxHR[0])) #Export fit file & get HRV data #Sign into withings browser2 = webdriver.Chrome() browser2.get('https://account.health.nokia.com/connectionwou/account_login?r=https%3A%2F%2Fdashboard.health.nokia.com%2F') time.sleep(5) username2 = browser2.find_element_by_name("email") password2 = browser2.find_element_by_name("password") username2.send_keys(" ") password2.send_keys(" ") browser2.find_element_by_class_name("btn").click() time.sleep(10) browser2.get('https://dashboard.health.nokia.com/ /timeline') time.sleep(5) metrics = browser2.find_elements_by_class_name("val") for metric in metrics: print(metric.text) #Sign into alancouzens.com and get checkin form up browser3 = webdriver.Chrome() browser3.get('https://alancouzens.com') athlete = browser3.find_element_by_name("name") password = browser3.find_element_by_name("pass") athlete.send_keys(" ") password.send_keys(" ") browser3.find_element_by_id("LoginBut").click() #Hit morning check in button browser3.find_element_by_id("MorningBut").click() #Find fields above and enter data from this morning. sleepH = browser3.find_element_by_name("sleepH") sleepM = browser3.find_element_by_name("sleepM") sleepH.send_keys(sleep_hrs) sleepM.send_keys(sleep_min) weight = browser3.find_element_by_name("weight") weightval = metrics[0].text weight.send_keys(weightval) #select lbs dropdown = Select((browser3.find_element_by_name("unit"))) unit = dropdown.select_by_index(1) fat = browser3.find_element_by_name("fat") fatval = metrics[1].text fat.send_keys(fatval) #select lbs dropdown2 = Select((browser3.find_element_by_name("funit"))) funit = dropdown2.select_by_index(1) RHRM = browser3.find_element_by_name("RHRM") RHRMval = int(maxHR[0]) RHRM.send_keys(RHRMval) RHRA = browser3.find_element_by_name("RHRA") RHRAval = int(avgHR[0]) RHRA.send_keys(RHRAval)