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
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
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
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