import time
import os.path
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options
import json
import time
import random

def get_search_repsonses(browser: webdriver.Chrome, logs):
    for log in logs:
        message = log["message"]
        if "Network.responseReceived" in message:
            params = json.loads(message)["message"].get("params")
            if params:
                response = params.get("response")
                if response:
                    if "api.csfloat.com" in response["url"]:
                        body = browser.execute_cdp_cmd('Network.getResponseBody', {'requestId': params["requestId"]})
                        if "body" in body:
                            return body["body"]


def getItemInfo(inspect_link: str):
    #custom_temp_dir = '/var/www/highfloat_scraper/chromeuser'
    # username = "u9c85bfe1559a05bf-zone-custom"
    # password = "u9c85bfe1559a05bf"
    # PROXY_DNS = "43.152.113.55:2334"
    # proxy = {"http":"http://{}:{}@{}".format(username, password, PROXY_DNS)}
    proxy = "http://uw0g9g5j:mXC7JRAq3shWe34X@proxy.proxy-cheap.com:31112"
    chrome_options = Options()
    chrome_options.add_argument("--no-sandbox")
    chrome_options.add_argument("--remote-debugging-pipe")
    chrome_options.add_argument("--headless=new")
    chrome_options.add_argument("--ignore-ssl-errors=yes")
    chrome_options.add_argument("--ignore-certificate-errors")
    chrome_options.add_argument("--blink-settings=imagesEnabled=false")
    chrome_options.add_argument("--disable-dev-shm-usage")
    chrome_options.add_argument(f"--proxy-server={proxy}")
    #chrome_options.add_argument("--disable-gpu")
    #chrome_options.add_argument(f'user-data-dir={custom_temp_dir}')
    chrome_options.set_capability('goog:loggingPrefs', {'performance': 'ALL'})

    chrome_options.binary_location = "/var/www/highfloat_scraper/chrome-linux64/chrome"
    webdriver_service = Service("/var/www/highfloat_scraper/chromedriver-linux64/chromedriver")

    browser = webdriver.Chrome(service=webdriver_service, options=chrome_options)

    try:
        browser.get("https://csfloat.com/checker")
        print(browser.page_source)
        f = open("aids.html", "w")
        f.write(browser.page_source)
        f.close()
        url_input = WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.ID, "mat-input-0")))

        browser.execute_script(f"arguments[0].value = '{inspect_link}'", url_input)
        browser.execute_script("arguments[0].dispatchEvent(new Event('input'))", url_input)

        time.sleep(2)
        logs = browser.get_log("performance")
        iteminfo = get_search_repsonses(browser=browser, logs=logs)
        print(iteminfo)
        time.sleep(2)
        #browser.close()
        browser.delete_all_cookies()
        browser.quit()
        return iteminfo
    except Exception as e:
        print(str(e))
        browser.quit()
        return str(e)
    finally:
        if browser:
            browser.quit()


# if __name__ == "__main__":

    
#     listings_url_set = MarketBot.getHashedNameListHighOrLow()
#     listing_info_list = MarketBot.buildInspectLinksList(listings_url_set=listings_url_set)
#     for listing in listing_info_list:
#         for single in listing:
#             inspect_link = listing[single]["link"]
#             print(inspect_link)
#             getItemInfo(str(inspect_link))
