import time
import pymysql
import random
import traceback
from log_settings import *
import logging
from auto_request import login, click, time_convs
from auto_request import host, user, db, passwd


def get_data(numtime, numtime2):
    try:
        pc = pymysql.connect(host=host, user=user, passwd=passwd, db=db, port=3306)
        cursor = pc.cursor()
        cursor.execute(
            "SELECT  user_id,id FROM topic WHERE is_online=1  and create_time > '%s' and create_time <= '%s'" % (
                numtime, numtime2))
        data = cursor.fetchall()
        topic_id = list(data)
        topic_id_list = []
        for i in topic_id and topic_id:
            cursor.execute(
                "select user_id from user_extra where user_id =" + str(i[0]) + " and is_shadow =0")
            data = cursor.fetchall()
            user_id = list(data)
            if user_id:
                topic_id_list.append(i)
        logging.info("Database version : %s " % topic_id_list)
        pc.close()
        return topic_id_list

    except:
        logging.error("catch exception,get_data:%s" % traceback.format_exc())
        return []


if __name__ == "__main__":

    try:

        time_list = [1, 2, 3, 4, 5, 6, 7]

        for i in time_list:
            numtime, numtime2 = time_convs(i + 1, i - 1)
            user_id = get_data(numtime, numtime2)
            dicts = {}

            if user_id:

                for i in user_id:

                    if i[0] not in dicts.keys():
                        dicts.setdefault(i[0], [])
                        dicts[i[0]].append(i[1])

                    else:
                        dicts[i[0]].append(i[1])

                for key, value in dicts.items():
                    rand_num = random.randint(0, len(value) - 1)

                    rand_id = value[rand_num]

                    urge_num = random.randint(0, 1)

                    for i in range(urge_num):

                        time.sleep(random.randint(1, 10))

                        cook = login()

                        if cook is not None:
                            click(cook, rand_id)
            else:
                pass

    except:
        logging.error("catch exception,main:%s" % traceback.format_exc())