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