import traceback
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import time
import os
import datetime
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
from selenium.webdriver.common.keys import Keys
import codecs
import random
import requests
import time
import rpyc
import sys
import codecs
import sys
import time
import dataset
import os

def scrolling(driver,pgnum):
    ub = driver.find_element_by_css_selector('body')
    for i in range(pgnum):
        ub.send_keys(Keys.PAGE_DOWN)
        if pgnum>1:
            time.sleep(0.3)


def restart_browser():
#    os.system('docker container restart p4444')
#    time.sleep(10)

    options = webdriver.ChromeOptions()
#    options.add_argument("--proxy-server=socks5://130.61.93.198:1080")
    options.add_argument("start-maximized")
    options.add_argument('user-data-dir=C:\\Users\\user\\AppData\\Local\\Google\\Chrome\\User Data')
    options.add_argument('--profile-directory=Profile 7')

    driver=webdriver.Chrome(desired_capabilities=options.to_capabilities())
    driver.set_window_size(1400,1000)
    return driver

db2 = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/hhh?charset=utf8mb4')
#cursor=db2.query('select * from yt_tasks where yid not in (SELECT yid FROM hhh.yt_hhh_progress)')
cursor=db2.query('select * from yt_tasks2 where yid not in (SELECT yid FROM hhh.yt_hhh_progress)')

table=db2['yt_hhh_progress']
yid=spath=title=desc=None
for c in cursor:
    print(c)
    yid=c['yid']
    spath=c['path']
    print(spath)

    title=c['title']
    desc=c['desc']
    break

driver=restart_browser()
url='https://www.youtube.com/upload'

driver.get(url)
print(spath)

time.sleep(5)
elmt=driver.find_element_by_xpath("//input[@type='file']")
elmt.send_keys(spath)
time.sleep(6)

elmts=driver.find_elements_by_xpath("//div[@id='textbox']")
elmt=elmts[0]
elmt.click()
for i in range(20):
    elmt.send_keys(Keys.BACKSPACE)
    time.sleep(0.1)
elmt.send_keys(title)
time.sleep(1)

elmt=elmts[1]
elmt.click()
for i in range(15):
    elmt.send_keys(Keys.ARROW_UP)
    time.sleep(0.1)
elmt.send_keys(Keys.RETURN)
elmt.send_keys(Keys.ARROW_UP)

elmt.send_keys(desc)
elmt.send_keys(Keys.RETURN)

time.sleep(1)

elmt=driver.find_element_by_xpath("//*[@id='next-button']")
elmt.click()
time.sleep(3)

elmt=driver.find_element_by_xpath("//*[@id='next-button']")
elmt.click()
time.sleep(3)

elmt=driver.find_element_by_xpath("//*[@id='next-button']")
elmt.click()

elmt=driver.find_element_by_xpath("//div[@class='value style-scope ytcp-video-info']")
new_yid=elmt.text
table.insert({'yid':yid,'new_yid':new_yid,'dt':datetime.datetime.now()})

#time.sleep(9999)

time.sleep(3)
elmt=driver.find_element_by_xpath("//*[@id='done-button']")
elmt.click()
time.sleep(3)

cnt=0
while True:
    try:
        cnt+=1
#        elmt=driver.find_element_by_xpath("//span[contains(text(),'檢查完畢,未發現任何問題')]")

#        if cnt >=20:
#            break
        elmt=driver.find_element_by_xpath("//span[contains(text(),'檢查完畢,未發現任何問題')]")
        break
    except:
        print('not yet')
        time.sleep(5)

driver.quit()
#檢查完畢,未發現任何問題。
sys.exit()
#time.sleep(9999)