Esempio n. 1
0
def display_results(
        db_path, query, req_date, table_row, table_results, data_source, search_count):
    call_count = 1
    conn = sqlite3.connect(db_path)
    # print('display_results.py db connect')
    db = conn.cursor()
    k = (query.encode('utf-8', errors='replace').decode('cp1251', errors='replace'), req_date,)
    db.execute("select * from requests where keyword=? and date=?", k)
    arr = []
    for res in db.fetchone():
        if res != 0:
            arr.append(res)
        else:
            arr.append('> 100')
    for i in range(len(arr)):
        if (data_source == 'file'):
            table_results.setRowCount(table_row + 1)
            table_results.setItem(table_row, i, QtWidgets.QTableWidgetItem(str(arr[i]).encode('cp1251', errors='replace').decode('utf-8', errors='replace')))
        elif (data_source == 'line'):
            # print('display_results')
            # print(table_row)
            # print(call_count)
            # print(search_count)
            table_results.setRowCount(table_row + call_count + search_count)
            table_results.setItem(table_row + search_count, i, QtWidgets.QTableWidgetItem(str(arr[i]).encode('cp1251', errors='replace').decode('utf-8', errors='replace')))
    call_count += 1
    search_count += 1
    db.close()
    conn.close()
    # print('display_results.py db close')
    remove_empty_rows(1, table_results)
    return search_count
Esempio n. 2
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
Esempio n. 3
0
def table_input(add_list, table_row, table_results, data_source, search_count, file_search_count):
    global call_count
    # список уже ранее добавленных позиций
    add_list_items = []
    for item in add_list:
        add_list_items.append(item[0])
    for i, item in enumerate(add_list):
        # print(call_count)
        # ################# working ####################
        if data_source == "file":
            file_search_count = True
            # print("file")
            if call_count == 1:
                if item[0] in add_list_items:
                    table_row += 1
                    table_results.setRowCount(table_row + 1)
                    table_results.setItem(table_row - 1, 0, QtWidgets.QTableWidgetItem(item[0]))
            else:
                if item[0] in add_list_items:
                    table_row += 1
                    table_results.setRowCount(table_row + 1)
                    table_results.setItem(table_row - 1, 0, QtWidgets.QTableWidgetItem(item[0]))
        elif data_source == "line":
            # print("line")
            if call_count == 1:
                if item[0] in add_list_items:
                    # print(table_row)
                    # print(call_count)
                    table_row += 1
                    table_results.setRowCount(table_row)
                    table_results.setItem(table_row - 1, 0, QtWidgets.QTableWidgetItem(item[0]))
            else:
                if item[0] in add_list_items:
                    # print(table_row)
                    # print(call_count)
                    # print(file_search_count)
                    if file_search_count:
                        table_row += 1
                        table_row += search_count - call_count + 1
                        table_results.setRowCount(table_row + 1)
                        table_results.setItem(table_row, 0, QtWidgets.QTableWidgetItem(item[0]))
                    else:
                        table_row += search_count - call_count + 1
                        table_results.setRowCount(table_row + 1)
                        table_results.setItem(table_row, 0, QtWidgets.QTableWidgetItem(item[0]))
                        # table_row += 1

        remove_empty_rows(0, table_results)
    call_count += 1
    return file_search_count
Esempio n. 4
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