Exemple #1
0
def search(search_work, table_list, query, query_url,
           db_path, req_date, day_limit, day_overdraft, limit_police, hour,
           res_list, rank, label_info, table_results, rate_url,
           lcdNumber_hour_limit, lcdNumber_day_limit, progressBar,
           value, log, limit_data):
    # поднимаем флаг search_work для подсчёта лимитов
    search_work = True
    q_able = qCount(table_list) - limit_data[1]
    q_next = 0
    print(q_able)
    # ########################################################################
    # анализируем список запросов
    for i, item in enumerate(table_list):
        query = item[0]
        # если запрос не пустой начинаем его обработку
        if (len(query) != 0):
            # получаем данные по текущим лимитам на кол-во запросов
            limit_data = limit(db_path, req_date, day_limit,
                               day_overdraft, limit_police, hour,
                               search_work)
            if (q_able > 0):
                coreFunction(
                    query_url, query, progressBar, value, rate_url,
                    rank, res_list, req_date, day_limit, limit_data,
                    table_list, table_results, lcdNumber_hour_limit,
                    lcdNumber_day_limit, db_path, log, item,
                    label_info)
                q_able -= 1
                q_next += 1
                print(q_able)
            else:
                label_info.setText(
                    'Превышен лимит запросов!\nПродолжим через ' +
                    str(61 - int(datetime.now().strftime('%M'))) +
                    ' минут.')
                print("overload")
                # лимит в этом часу исчерпан,
                # но суточный еще доступен
                remove_empty_rows(1, table_results)
                print("sleep")
                # time.sleep(10.0)
                time.sleep((61 - int(
                    datetime.now().strftime('%M'))) * 60.0)
                q_able = q_next
                print(q_able)
                continue
            sql_con(db_path, res_list, query, req_date)
            res_list = []
            rank = 0
        else:
            # в случае пустого запроса
            label_info.setText(
                'Внимание!\nБыл выбран пустой запрос.')
            remove_empty_rows(1, table_results)
            continue
    search_work = False
Exemple #2
0
def coreFunction(query_url, query, progressBar, value, rate_url, rank,
                 res_list, req_date, day_limit, limit_data, table_list,
                 table_results, lcdNumber_hour_limit, lcdNumber_day_limit,
                 db_path, log, label_info, data_source, search_count):
    pBar = pbarThread(progressBar, value)
    pBar.start()
    r = requests.get(
        (query_url + query),
        verify="C:\\Python34\\Lib\\site-packages\\requests\\cacert.pem")
    ranking(r, rate_url, rank, res_list, query, req_date,
            day_limit, limit_data,
            lcdNumber_hour_limit, lcdNumber_day_limit)
    sql_con(db_path, res_list, query, req_date)
    count = display_results(db_path, query, req_date,
                            len(table_list), table_results,
                            data_source, search_count)
    pBar.stop()
    log.write('Поиск из GUI по запросу "' + query + '";\n')
    table_list[len(table_list) - 1][1] = True
    res_list = []
    rank = 0
    # label_info.setText('Ваш запрос обработан.')
    return count
Exemple #3
0
def search(search_work, table_list, query, query_url,
           db_path, req_date, day_limit, day_overdraft, limit_police, hour,
           res_list, rank, label_info, table_results, rate_url,
           lcdNumber_hour_limit, lcdNumber_day_limit, progressBar,
           value, log):
    pBar = pbarThread(progressBar, value)
    pBar.start()
    # поднимаем флаг search_work для подсчёта лимитов
    search_work = True
    q_count = 0
    # #####################################################################
    # анализируем список запросов
    for i, item in enumerate(table_list):
        query = item[0]
        worked = item[1]
        if ((query != '') or (worked is not True)):
            q_count += 1
            limit_data = limit(db_path, req_date, day_limit,
                               day_overdraft, limit_police, hour,
                               search_work)
            if q_count > limit_data[1]:
                label_info.setText('Превышен лимит запросов!\n\
                                    Продолжим через')  # timer
                label_info.setText(' минут.')
                remove_empty_rows(1, table_results)
                time.sleep((60 - int(
                    datetime.now().strftime('%M'))) * 60.0)
                continue
            else:
                # Проверяем не исчерпан ли суточный лимит на запросы.
                if (limit_data[2] >= 0):
                    # если не был - отправляем запрос в Яндекс
                    r = requests.get((query_url + query),
                       verify="C:\\Python34\\Lib\\site-packages\\requests\\cacert.pem")
                    pBar.stop()
                    # и помечаем запрос как отработанный
                    table_list[i][1] = True
                    # ранжируем запрос, записываем результат в БД
                    ranking(r, rate_url, rank, res_list, query, req_date,
                            day_limit, limit_data,
                            lcdNumber_hour_limit, lcdNumber_day_limit)
                    sql_con(db_path, res_list, query, req_date)
                    # обновляем табло лимитов
                    display_results(db_path, query, req_date,
                                    len(table_list), table_results)
                    log.write(
                        'Поиск по запросу "' + item[0] +
                        '";        \n')
                    res_list = []
                    rank = 0
                    label_info.setText('Ваш запрос обработан.')
                else:
                    # суточный лимит не доступен
                    label_info.setText(
                        'Превышен суточный \nлимит запросов!\nЗаходите завтра:)')
                    return
            sql_con(db_path, res_list, query, req_date)
            res_list = []
            rank = 0
        else:
            continue
    search_work = False