import sys
import codecs
import traceback
import requests
import re
import pandas as pd
import random
import urllib
import json
import gspread
import datetime
from gspread_pandas import Spread, Client
from oauth2client.service_account import ServiceAccountCredentials
import os
import redis
import time
import fire
import dataset


def run_once(pport, dockername):
    db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/seo?charset=utf8mb4')
    lst = []
    
    cursor = db.query('select term, domain from seo.selected_kw where client not in ("毛怪")')
    for c in cursor:
        lst.append([c['term'], c['domain']])
    
    obj = random.choice(lst)
    kw = obj[0]
    domain = obj[1]
    print(kw, domain)
    
    intval = os.system(f'python3 general_clickbot.py get --kw="{kw}" --domain="{domain}" --port="{str(pport)}"')
    
    print('執行完成genetal_clickbot')
    
    if intval == -1:
        print('-1')
        sys.exit()
    db.close()

def run_specific(pport, dockername):
    db = dataset.connect('mysql://choozmo:pAssw0rd@db.ptt.cx:3306/seo?charset=utf8mb4')
    lst = []
    
    cursor = db.query('select term, domain from seo.selected_kw where client="神助物流"')
    for c in cursor:
        lst.append([c['term'], c['domain']])
    
    obj = random.choice(lst)
    kw = obj[0]
    domain = obj[1]
    print(kw,domain)

    intval = os.system(f'python3 general_clickbot.py get --kw="{kw}" --domain="{domain}" --port="{str(pport)}"')    
    print('執行完成神助genetal_clickbot')

    if intval == -1:
        print('-1')
        sys.exit()
    db.close()

class JParams(object):
    
    def get(self, port=9222):
        while True:
            try:
                os.system('docker container restart tiny1')
                os.system('docker container restart tiny2')
                os.system('docker container restart tiny3')
                os.system('docker container restart tiny8')
                time.sleep(1)
                run_once(9922, 'tiny1')
                run_once(9923, 'tiny2')
                run_once(9924, 'tiny3')
                run_specific(9929, 'tiny8')
                time.sleep(20)
                break           
            except:
                os.system('docker container restart tiny1')
                time.sleep(15)


if __name__ == '__main__':
    fire.Fire(JParams)