#import redis
import time
#import json
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import time
import os
import urllib.parse
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import dataset
import codecs
import random
import requests
import time
import sys
import docker
import codecs
import random
import os
import time


driver=None
headers = {
        "Authorization": "Bearer " + "t35vhZtWNgvDNWHc3DJh0OKll3mcB9GvC8K2EAkBug2",
        "Content-Type": "application/x-www-form-urlencoded"
}



def send_msg(kw):
    params = {"message": "處理關鍵字: "+kw}  
    r = requests.post("https://notify-api.line.me/api/notify",headers=headers, params=params)


def empty_query(q):
    global driver
    googleurl='https://www.google.com/search?q='+urllib.parse.quote(q)
    driver.get(googleurl)
    time.sleep(3)


def process_query(qs,domain):
    print('processing...')
    print(qs)
    q=qs
    global driver
    googleurl='https://www.google.com/search?q='+urllib.parse.quote(q)
    driver.get(googleurl)
    time.sleep(3)
    for i in range(10):
        elmts=driver.find_elements_by_xpath("//div[@class='g']//div[@class='yuRUbf']//a")
        idx=1
        print("idx="+str(idx))
        ranking=-1
        for elmt in elmts:
            href=elmt.get_attribute('href')
            txt=elmt.text
            if len(txt)>10:
                if domain in href:
                    print(domain+" in "+ str(href)+" i:"+str(i))
                    return i

        elmt=driver.find_element_by_xpath("//a[@id='pnnext']")
        webdriver.ActionChains(driver).move_to_element(elmt).perform()
        webdriver.ActionChains(driver).move_to_element(elmt).click().perform()

    time.sleep(2)




def re_get_webdriver():
    global driver
    result=[]
    client = docker.from_env()
    ls=client.containers.list()
    print(ls)
    for l in ls:
        print(l.name)
        if 'p4444' in l.name:
            l.restart()
            print('restarted')
            time.sleep(6)
        else:
            print('name not correct')

#    options = webdriver.EdgeOptions()
    try:
        print('trying 4444....')
        options = webdriver.ChromeOptions()
        driver = webdriver.Remote(
            command_executor='http://127.0.0.1:4444/wd/hub',desired_capabilities=options.to_capabilities())
        print('4444 done')
        driver.set_window_size(1400,1000)
        print('driver is fine')
        return
    except:
        print('driver except')
        driver=None
        return None






def run_once(url,domain):
    global driver
    i=random.randint(0,20)
    re_get_webdriver()
    if driver is None:
        print('driver is none')
        return
    try:
        return process_query(url,domain)
    except:
        print('process_query exception')

kw='ai行銷 choozmo'
domain='choozmo.com'
rank=run_once( kw,domain )
if rank is not None:
    db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/seo?charset=utf8mb4')
    table=db['seo_clickjobs']
    print('upserting....')
#    table.insert({'kw':kw,'domain':domain,'category':'choozmo','page':rank},keys=['kw'])
    table.insert({'kw':kw,'domain':domain,'category':'choozmo','page':rank})

    db.commit()

print(rank)
time.sleep(0.001)