from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.service import Service
import pyperclip
import time
import sys

# try:
#     if sys.argv[1]:
#         with open(sys.argv[1], 'r', encoding='utf8') as f:
#             groups = [group.strip() for group in f.readlines()]
# except IndexError:
#     print('Please provide the group name as the first argument.')

# with open('msg.txt', 'r', encoding='utf8') as f:
#     msg = f.read()

#driver = webdriver.Chrome("C:\chromedriver\chromedriver.exe")
# driver = webdriver.Chrome("C:\chromedriver\chromedriver.exe")

service = Service(executable_path='C:\Chromedriver\chromedriver.exe')
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(service=service, options=options)
driver.maximize_window()

# browser.get('https://web.whatsapp.com/')

# for group in groups:
#     try:
#         search_xpath = '//div[@contenteditable="true"][@data-tab="3"]'

#         search_box = WebDriverWait(browser, 500).until(
#             EC.presence_of_element_located((By.XPATH, search_xpath))
#         )
    

#         search_box.clear()

#         time.sleep(1)

#         pyperclip.copy(group)

#         search_box.send_keys(Keys.SHIFT, Keys.INSERT)  # Keys.CONTROL + "v"

#         time.sleep(2)

#         group_xpath = f'//span[@title="{group}"]'
#         group_title = browser.find_element_by_xpath(group_xpath)

#         group_title.click()

#         time.sleep(1)
    
#         input_xpath = '//div[@contenteditable="true"][@data-tab="10"]'
#         input_box = browser.find_element_by_xpath(input_xpath)

#         pyperclip.copy(msg)
#         input_box.send_keys(Keys.SHIFT, Keys.INSERT)  # Keys.CONTROL + "v"
#         input_box.send_keys(Keys.ENTER)

#         time.sleep(1)

#         if sys.argv[2]:
#             attachment_box = browser.find_element_by_xpath(
#                 '//span[@data-icon="clip"]')
#             attachment_box.click()
#             time.sleep(1)

#             # image_box = browser.find_element_by_xpath(
#             #     '//span[@]data-icon="attach-image"')
#             # image_box.send_keys(sys.argv[2])
#             image_box = browser.find_element(By.XPATH('//span[@]data-icon="attach-image"'))
#             image_box.send_keys(sys.argv[2])
#             time.sleep(2)

#             send_btn = browser.find_element_by_xpath(
#                 '//span[@data-icon="send"]')
#             send_btn.click()
#             time.sleep(2)

#     except Exception:
#         pass
driver.get("https://web.whatsapp.com/")
wait = WebDriverWait(driver, 300)
try:
    if sys.argv[1]:
        with open(sys.argv[1], 'r', encoding='utf8') as f:
            groups = [group.strip() for group in f.readlines()]
except IndexError:
    print("Please enter the filename as first argument.")

with open('msg.txt', 'r', encoding='utf8') as f:
    msg = f.read()

for index, item in enumerate(groups):
    try:
        search_xpath = '//div[@contenteditable="true"][@data-tab="3"]'
        if index > 0:
            search_box = WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.XPATH, search_xpath)))
        else:
            search_box = wait.until(EC.presence_of_element_located((By.XPATH, search_xpath)))
        pyperclip.copy(item)
        search_box.send_keys(Keys.CONTROL+"a")
        search_box.send_keys(Keys.DELETE)
        search_box.send_keys(Keys.CONTROL + "v")
        time.sleep(3)

        x_arg = f'//span[@title="{item}"]'
        group_title = WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.XPATH, x_arg)))
        group_title.click()
        time.sleep(3)

        inp_xpath = '//div[@contenteditable="true"][@data-tab="10"]'
        input_box = WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.XPATH, inp_xpath)))

        pyperclip.copy(msg)
        input_box.clear()
        input_box.send_keys(Keys.CONTROL + "v")
        time.sleep(2)
        input_box.send_keys(Keys.ENTER)
        time.sleep(1)

        try:
            if sys.argv[2]:
                attachment_box = WebDriverWait(driver, 5).until(
                    # EC.presence_of_element_located((By.XPATH, '//div[@title = "Attach"]')))
                    EC.presence_of_element_located((By.XPATH, '//span[@data-icon = "plus"]')))
                attachment_box.click()
                time.sleep(1)

                image_box = WebDriverWait(driver, 5).until(EC.presence_of_element_located(
                    (By.XPATH, '//input[@accept="image/*,video/mp4,video/3gpp,video/quicktime"]')))
                image_box.send_keys(sys.argv[2])
                time.sleep(2)

                send_button = WebDriverWait(driver, 5).until(EC.presence_of_element_located(
                    (By.XPATH, '//span[@data-icon="send"]')))
                send_button.click()
                time.sleep(2)
        except IndexError:
            pass
    except Exception as e:
        print(e)
        continue