# 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
# import undetected_chromedriver as uc
# import brotli


# def get_search_responses(browser: webdriver.Chrome, logs):
    
#     browser.execute_cdp_cmd('Network.enable', {})
#     responses = []
#     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:
#                     url = response.get("url")
#                     if "api.csfloat.com" in url:
#                         try:
#                             request_id = params.get("requestId")
#                             print(f"Full log entry: {log}")
#                             print(f"Request ID: {request_id}")
                            
#                             # Explicitly enable network tracking
#                             browser.execute_cdp_cmd('Network.enable', {})
                            
#                             # Try different CDP methods
#                             body = browser.execute_cdp_cmd('Network.getResponseBody', {'requestId': request_id, 'base64Encoded': True})
#                             responses.append(body)
#                             print(f"CDP Response: {body}")
                            
#                             responses.append(body)
#                         except Exception as e:
#                             print(f"Detailed error: {type(e).__name__}: {e}")
#     return responses


# 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 = webdriver.ChromeOptions()
#     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("--enable-javascript")
#     #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.enable_bidi = True
#     chrome_options.set_capability('goog:loggingPrefs', {"browser": "ALL", "client": "ALL", "driver": "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)
#     browser.execute_cdp_cmd('Network.enable', {})
#     #browser = uc.Chrome(enable_cdp_events=True, headless=True, options=chrome_options, use_subprocess=True, browser_executable_path="/var/www/highfloat_scraper/chrome-linux64/chrome", driver_executable_path="/var/www/highfloat_scraper/chromedriver-linux64/chromedriver")
#     #browser = uc.Chrome(enable_cdp_events=True, options=chrome_options, use_subprocess=True, driver_executable_path="/var/www/highfloat_scraper/chromedriver-linux64/chromedriver", browser_executable_path="/var/www/highfloat_scraper/chrome-linux64/chrome")

#     try:
#         browser.get("https://csfloat.com/checker")
        
#         #print(browser.page_source)
#         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(3)
#         logs = browser.get_log("driver")
#         for entry in logs:
#             print(entry)
#             # try:
#             #     obj_serialized: str = entry.get("message")
#             #     obj = json.loads(obj_serialized)
#             #     message = obj.get("message")
#             #     method = message.get("method")
#             #     # if method in ['Network.requestWillBeSentExtraInfo' or 'Network.requestWillBeSent']:
#             #     #     try:
#             #     #         for c in message['params']['associatedCookies']:
#             #     #             if c['cookie']['name'] == 'authToken':
#             #     #                 bearer_token = c['cookie']['value']
#             #     #     except:
#             #     #         pass
#             #     print(type(message), method, message)
#             with open("negman.txt", "a") as f:
#                 f.write(str(entry))
#             #     print('--------------------------------------')
#             # except Exception as e:
#             #     raise e from None
#         #iteminfo = get_search_responses(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()


import time
from seleniumwire 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 HelperFunctions
from LoggingFormatter import logger

from seleniumwire.utils import decode
import seleniumwire.undetected_chromedriver as uc




def getItemInfo(inspect_link: str):
    logger.error("SELENIUMNEXECUTOR TRYING TO GET: " + str(inspect_link))
    chrome_options = uc.ChromeOptions()
    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("--enable-javascript")
    chrome_options.add_argument("--disable-gpu")
    options = {
        'proxy': {
            'http': 'http://alex133769:mArgare1he_country-de_streaming-1@geo.iproyal.com:12321',
            'https': 'http://alex133769:mArgare1he_country-de_streaming-1@geo.iproyal.com:12321',
            'no_proxy': 'localhost,127.0.0.1'
        }
    }

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

    browser = webdriver.Chrome(service=webdriver_service, options=chrome_options, seleniumwire_options=options)
    browser.execute_cdp_cmd('Network.enable', {})

    try:
        browser.get("https://csfloat.com/checker")
        
        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(4)

        iteminfo = None
        for res in browser.requests:
            if res.response:
                aids = str(decode(res.response.body, res.response.headers.get('Content-Encoding', 'identity')))
                #print(aids)
                if aids.startswith("b'{\"iteminfo\":"):
                    #print(aids)
                    dreck = str(aids[2:-4].strip().replace('\\xe2\\x84\\xa2', '™') + "}").encode("utf-8").decode("unicode_escape")
                    iteminfo = json.loads(dreck)
                    #print(dreck)
                    break
        #print(iteminfo)
        time.sleep(2)
        browser.delete_all_cookies()
        browser.quit()
        return iteminfo
    except Exception as e:
        logger.error("SELENIUMEXECUTOR FUCKED UP: " + str(e))
        browser.quit()
        return None
    finally:
        if browser:
            browser.quit()

#print(getItemInfo("steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20S76561198074859638A40278916444D2317248167127213814"))
# csfloat_iteminfo = getItemInfo(str("steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20S76561198074859638A40278916444D2317248167127213814"))
# print(csfloat_iteminfo["iteminfo"])
