# Generated by Selenium IDE from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import requests import json import time import sys from datetime import date def postReport(cookies, date): url = 'https://advertiser.trafficjunky.com/tj-analytics/overview?draw=2&columns[0][data]=hour&columns[0][name]=hour&columns[0][searchable]=true&columns[0][orderable]=true&columns[0][search][value]=&columns[0][search][regex]=false&columns[1][data]=campaign_id&columns[1][name]=campaign_id&columns[1][searchable]=true&columns[1][orderable]=true&columns[1][search][value]=&columns[1][search][regex]=false&columns[2][data]=campaign_name&columns[2][name]=campaign_name&columns[2][searchable]=true&columns[2][orderable]=true&columns[2][search][value]=&columns[2][search][regex]=false&columns[3][data]=impressions&columns[3][name]=impressions&columns[3][searchable]=true&columns[3][orderable]=true&columns[3][search][value]=&columns[3][search][regex]=false&columns[4][data]=clicks&columns[4][name]=clicks&columns[4][searchable]=true&columns[4][orderable]=true&columns[4][search][value]=&columns[4][search][regex]=false&columns[5][data]=ctr&columns[5][name]=ctr&columns[5][searchable]=true&columns[5][orderable]=true&columns[5][search][value]=&columns[5][search][regex]=false&columns[6][data]=conv&columns[6][name]=conv&columns[6][searchable]=true&columns[6][orderable]=true&columns[6][search][value]=&columns[6][search][regex]=false&columns[7][data]=revenue&columns[7][name]=revenue&columns[7][searchable]=true&columns[7][orderable]=true&columns[7][search][value]=&columns[7][search][regex]=false&columns[8][data]=ecpm&columns[8][name]=ecpm&columns[8][searchable]=true&columns[8][orderable]=true&columns[8][search][value]=&columns[8][search][regex]=false&columns[9][data]=ecpc&columns[9][name]=ecpc&columns[9][searchable]=true&columns[9][orderable]=true&columns[9][search][value]=&columns[9][search][regex]=false&columns[10][data]=ecpa&columns[10][name]=ecpa&columns[10][searchable]=true&columns[10][orderable]=true&columns[10][search][value]=&columns[10][search][regex]=false&order[0][column]=3&order[0][dir]=desc&start=0&length=9999999&search[value]=&search[regex]=false&filters={"start_date":"' + date + '","end_date":"' + date + '","campaign_id":{"value":[],"operator":"whereIn"},"campaign_type":{"value":[],"operator":"whereIn"},"is_retargeting":"","country_code":{"value":[],"operator":"whereIn"},"device_targeting":"","os_targeting":{"value":[],"operator":"whereIn"},"ad_format":{"value":[],"operator":"whereIn"},"site_id":{"value":[],"operator":"whereIn"},"source_id":{"value":[],"operator":"whereIn"},"dimensions":{"level1":"hour","level2":"campaigns"}}&_=1694446328773' payload = {} headers = { 'authority': 'advertiser.trafficjunky.com', 'accept': 'application/json, text/javascript, */*; q=0.01', 'accept-language': 'en-GB,en-US;q=0.9,en;q=0.8,es;q=0.7', 'cookie': cookies, 'sec-ch-ua': '"Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114"', 'sec-ch-ua-arch': '"x86"', 'sec-ch-ua-full-version': '"114.0.5735.198"', 'sec-ch-ua-full-version-list': '"Not.A/Brand";v="8.0.0.0", "Chromium";v="114.0.5735.198", "Google Chrome";v="114.0.5735.198"', 'sec-ch-ua-mobile': '?0', 'sec-ch-ua-model': '""', 'sec-ch-ua-platform': '"Linux"', 'sec-ch-ua-platform-version': '"6.2.0"', 'sec-fetch-dest': 'empty', 'sec-fetch-mode': 'cors', 'sec-fetch-site': 'same-origin', 'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36', 'x-csrf-token': '3w240kokdNy4pKMGlYstrC1Rpg1OC2MFRHqwIysL', 'x-requested-with': 'XMLHttpRequest' } response = requests.request("GET", url, headers=headers, data=payload) return response.text def postToBigQuery(tj_data, date): url = 'https://us-central1-subscription-site.cloudfunctions.net/traffic-junky-import-hourly?reportDate=' + date payload = {'tj_data': json.dumps(tj_data), 'password': 'teNNis2020!'} requests.request("POST", url, verify=False, data=payload) username = sys.argv[1] password = sys.argv[2] date = sys.argv[3] if len(sys.argv) > 3 else str(date.today()) print('Ingesting date: ' + date) driver = webdriver.Chrome() vars = {} wait = WebDriverWait(driver, 60) driver.get("https://www.trafficjunky.com/sign-in") driver.set_window_size(1704, 981) time.sleep(5) driver.find_element(By.ID, "username").send_keys(username) time.sleep(5) driver.find_element(By.ID, "password").send_keys(password) time.sleep(5) driver.find_element(By.ID, "submitBtn").click() wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "#menu-analytics > div"))) print('logged in') all_cookies = driver.get_cookies(); cookies = '' for cookie in all_cookies: cookies += cookie['name'] + '=' + cookie['value'] + '; ' report = postReport(cookies, date) report = json.loads(report) postToBigQuery(report['data'], date)