Exemplo n.º 1
0
    def search(self):
        # поднимаем флаг search_work для подсчёта лимитов
        self.search_work = True
        #################################################################
        for i, item in enumerate(self.table_list):
            self.query = self.table_list[i][0]
            if (len(self.query) != 0):
                q_count = 0
                if (self.table_list[i][1] != True):
                    q_count += 1
                if (self.table_list[i][1] != True):
                    r = requests.get(self.query_url + self.query)
                    self.r_count += 1
                    self.table_list[i][1] = True
                    self.limit_data = limit(
                                self.r_count, self.db_path, self.req_date,
                                self.day_limit, self.day_overdraft,
                                self.limit_police, self.hour,
                                self.search_work)
                    # Проверяем не исчерпан ли часовой лимит на запросы.
                    if (self.limit_data[0] == True) and\
                       (self.limit_data[2] >= 0):
                        # лимит в этом часу доступен и суточный не исчерпан
                        self.ranking(r)
                        self.sql_con(self.res_list)
                        # self.remove_empty_rows(1)
                        self.display_results()
                        # self.remove_empty_rows(1)
                        self.res_list = []
                        self.rank = 0
                    elif (self.limit_data[0] == False) and\
                         (self.limit_data[2] >= 0):
                        # лимит в этом часу исчерпан,
                        # но суточный еще доступен
                        self.label_info.setText(
                            'Превышен лимит запросов!\nОжидайте ' +
                            str(60 - int(datetime.now().strftime('%M'))) +
                            ' минут.')
                        self.remove_empty_rows(1)
                        return
                    else:
                        # суточный лимит не доступен
                        self.label_info.setText(
                            'Превышен суточный \nлимит запросов!\n\
Заходите завтра :)')
                        # self.remove_empty_rows(1)
                        return
                    self.sql_con(self.res_list)
                    self.res_list = []
                    self.rank = 0
                    self.recent_limit = self.limit_data[1] - 1
                else:
                    continue
            else:
                # случай пустого запроса
                self.label_info.setText(
                    'Внимание!\nБыл выбран пустой запрос.')
                self.remove_empty_rows(1)
        self.search_work = False
Exemplo 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
Exemplo n.º 3
0
 def start_search(self, event):
     self.search_work = True
     if self.file_taken and (len(self.query_list) != 0):
         for j, item in enumerate(self.query_list):
             self.query = self.query_list[j]
             r = requests.get(self.query_url + self.query)
             self.r_count += 1
             self.limit_data = limit(
                             self.r_count, self.db_path, self.req_date,
                             self.day_limit, self.day_overdraft,
                             self.limit_police, self.hour, self.search_work)
             if (self.limit_data[0]) and (self.limit_data[2] > 0):  # Проверяет не исчерпан ли часовой лимит на запросы. 
                 self.ranking(r)
                 self.sql_con(self.res_list)
                 self.res_list = []
                 self.rank = 0
                 self.recent_limit = self.limit_data[1] - 1
             elif (not self.limit_data[0]) and (self.limit_data[2] > 0):  # Проверяет не исчерпан ли часовой лимит на запросы. 
                 self.label_info.setText(str(self.recent_limit) +
                                         'Превышен лимит запросов!\nОжидайте ' +
                                         str(60 - int(datetime.now().strftime('%M'))) +
                                         ' минут.')
                 return
             else:
                 self.label_info.setText('Превышен суточный лимит запросов!\nЗаходите завтра :)')
                 return
         self.sql_con(self.res_list)
         self.res_list = []
         self.rank = 0
         self.file_taken = False
     elif (self.file_taken is False) and (len(self.query) != ''):
         r = requests.get(self.query_url + self.query)
         self.r_count += 1
         self.limit_data = limit(
                             self.r_count, self.db_path, self.req_date,
                             self.day_limit, self.day_overdraft,
                             self.limit_police, self.hour, self.search_work)
         self.ranking(r)
         self.sql_con(self.res_list)
         self.res_list = []
     else:
         self.label_info.setText('Внимание!\nБыл выбран пустой запрос.')
     self.search_work = False
Exemplo n.º 4
0
    def setupUi(self, YaP):
        self.limit_data = limit(self.r_count, self.db_path, self.req_date,
                                self.day_limit, self.day_overdraft,
                                self.limit_police, self.hour, self.search_work)
        YaP.setObjectName("YaP")
        YaP.setEnabled(True)
        YaP.resize(800, 600)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum,
                                           QtWidgets.QSizePolicy.Maximum)
        sizePolicy.setHorizontalStretch(50)
        sizePolicy.setVerticalStretch(50)
        sizePolicy.setHeightForWidth(YaP.sizePolicy().hasHeightForWidth())
        YaP.setSizePolicy(sizePolicy)
        YaP.setMinimumSize(QtCore.QSize(800, 600))
        YaP.setSizeIncrement(QtCore.QSize(0, 0))
        self.gridLayout = QtWidgets.QGridLayout(YaP)
        self.gridLayout.setObjectName("gridLayout")
        spacerItem = QtWidgets.QSpacerItem(20, 40,
                                           QtWidgets.QSizePolicy.Minimum,
                                           QtWidgets.QSizePolicy.Expanding)
        self.gridLayout.addItem(spacerItem, 2, 1, 1, 1)
        self.groupBox_mode = QtWidgets.QGroupBox(YaP)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.groupBox_mode.sizePolicy().hasHeightForWidth())
        self.groupBox_mode.setSizePolicy(sizePolicy)
        self.groupBox_mode.setMinimumSize(QtCore.QSize(220, 90))
        self.groupBox_mode.setObjectName("groupBox_mode")
        self.radioButton_single_mode = QtWidgets.QRadioButton(self.groupBox_mode)
        self.radioButton_single_mode.setGeometry(QtCore.QRect(10, 20, 131, 21))
        self.radioButton_single_mode.setObjectName("radioButton_single_mode")
        self.radioButton_single_mode.autoExclusive()
        self.radioButton_single_mode.setChecked(True)
        self.radioButton_file_mode = QtWidgets.QRadioButton(self.groupBox_mode)
        self.radioButton_file_mode.setGeometry(QtCore.QRect(10, 40, 101, 21))
        self.radioButton_file_mode.setObjectName("radioButton_file_mode")
        self.radioButton_file_mode.autoExclusive()
        self.checkBox = QtWidgets.QCheckBox(self.groupBox_mode)
        self.checkBox.setGeometry(QtCore.QRect(10, 60, 211, 21))
        self.checkBox.setObjectName("checkBox")
        self.gridLayout.addWidget(self.groupBox_mode, 0, 1, 1, 1)
        spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
        self.gridLayout.addItem(spacerItem, 2, 1, 1, 1)
        self.groupBox_limits = QtWidgets.QGroupBox(YaP)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.MinimumExpanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.groupBox_limits.sizePolicy().hasHeightForWidth())
        self.groupBox_limits.setSizePolicy(sizePolicy)
        self.groupBox_limits.setMinimumSize(QtCore.QSize(220, 340))
        self.groupBox_limits.setObjectName("groupBox_limits")
        self.splitter_gb_limits = QtWidgets.QSplitter(self.groupBox_limits)
        self.splitter_gb_limits.setGeometry(QtCore.QRect(20, -10, 177, 331))
        self.splitter_gb_limits.setOrientation(QtCore.Qt.Vertical)
        self.splitter_gb_limits.setObjectName("splitter_gb_limits")
        self.label_day_limit = QtWidgets.QLabel(self.splitter_gb_limits)
        self.label_day_limit.setObjectName("label_day_limit")
        self.lcdNumber_day_limit = QtWidgets.QLCDNumber(self.splitter_gb_limits)
        font = QtGui.QFont()
        font.setPointSize(18)
        font.setBold(False)
        font.setWeight(50)
        self.lcdNumber_day_limit.setFont(font)
        self.lcdNumber_day_limit.setFrameShape(QtWidgets.QFrame.NoFrame)
        self.lcdNumber_day_limit.setDigitCount(3)
        self.lcdNumber_day_limit.setSegmentStyle(QtWidgets.QLCDNumber.Filled)
        self.lcdNumber_day_limit.setProperty(
                    "intValue", (self.day_limit - self.limit_data[2])-1)
        self.lcdNumber_day_limit.setObjectName("lcdNumber_day_limit")
        self.label_hour_limit = QtWidgets.QLabel(self.splitter_gb_limits)
        self.label_hour_limit.setObjectName("label_hour_limit")
        self.lcdNumber_hour_limit = QtWidgets.QLCDNumber(self.splitter_gb_limits)
        font = QtGui.QFont()
        font.setPointSize(18)
        font.setBold(False)
        font.setWeight(50)
        self.lcdNumber_hour_limit.setFont(font)
        self.lcdNumber_hour_limit.setFrameShape(QtWidgets.QFrame.NoFrame)
        self.lcdNumber_hour_limit.setDigitCount(3)
        self.lcdNumber_hour_limit.setSegmentStyle(QtWidgets.QLCDNumber.Filled)
        self.lcdNumber_hour_limit.setProperty("intValue", self.limit_data[1])
        self.lcdNumber_hour_limit.setObjectName("lcdNumber_hour_limit")
        self.gridLayout.addWidget(self.groupBox_limits, 1, 1, 1, 1)
        self.groupBox_info = QtWidgets.QGroupBox(YaP)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.groupBox_info.sizePolicy().hasHeightForWidth())
        self.groupBox_info.setSizePolicy(sizePolicy)
        self.groupBox_info.setMinimumSize(QtCore.QSize(0, 110))
        self.groupBox_info.setMaximumSize(QtCore.QSize(16777215, 150))
        self.groupBox_info.setObjectName("groupBox_info")
        self.label_info = QtWidgets.QLabel(self.groupBox_info)
        self.label_info.setGeometry(QtCore.QRect(20, 10, 188, 81))
        font = QtGui.QFont()
        font.setPointSize(8)
        font.setBold(True)
        font.setItalic(False)
        font.setWeight(75)
        self.label_info.setFont(font)
        self.label_info.setTextFormat(QtCore.Qt.AutoText)
        self.label_info.setScaledContents(False)
        self.label_info.setAlignment(QtCore.Qt.AlignCenter)
        self.label_info.setObjectName("label_info")
        self.gridLayout.addWidget(self.groupBox_info, 3, 1, 2, 1)
        self.btn_save = QtWidgets.QPushButton(YaP)
        self.btn_save.setObjectName("btn_save")
        self.gridLayout.addWidget(self.btn_save, 5, 1, 1, 1)
        self.groupBox_main = QtWidgets.QGroupBox(YaP)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.groupBox_main.sizePolicy().hasHeightForWidth())
        self.groupBox_main.setSizePolicy(sizePolicy)
        self.groupBox_main.setMinimumSize(QtCore.QSize(530, 600))
        self.groupBox_main.setSizeIncrement(QtCore.QSize(600, 0))
        self.groupBox_main.setFlat(False)
        self.groupBox_main.setCheckable(False)
        self.groupBox_main.setObjectName("groupBox_main")
        self.gridLayout_3 = QtWidgets.QGridLayout(self.groupBox_main)
        self.gridLayout_3.setObjectName("gridLayout_3")
        self.gridLayout_main = QtWidgets.QGridLayout()
        self.gridLayout_main.setObjectName("gridLayout_main")
        self.btn_search = QtWidgets.QPushButton(self.groupBox_main)
        self.btn_search.setObjectName("btn_search")
        self.gridLayout_main.addWidget(self.btn_search, 0, 4, 1, 1)
        self.lineEdit_single_query = QtWidgets.QLineEdit(self.groupBox_main)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Fixed)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.lineEdit_single_query.sizePolicy().hasHeightForWidth())
        self.lineEdit_single_query.setSizePolicy(sizePolicy)
        self.lineEdit_single_query.setMinimumSize(QtCore.QSize(37, 0))
        self.lineEdit_single_query.setObjectName("lineEdit_single_query")
        self.gridLayout_main.addWidget(self.lineEdit_single_query, 0, 1, 1, 3)
        self.btn_fileopen = QtWidgets.QPushButton(self.groupBox_main)
        self.btn_fileopen.setObjectName("btn_fileopen")
        self.gridLayout_main.addWidget(self.btn_fileopen, 0, 0, 1, 1)
        self.btn_fileopen.setDisabled(True)
        self.table_results = QtWidgets.QTableWidget(self.groupBox_main)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding)
        sizePolicy.setHorizontalStretch(1)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.table_results.sizePolicy().hasHeightForWidth())
        self.table_results.setSizePolicy(sizePolicy)
        self.table_results.setMinimumSize(QtCore.QSize(500, 496))
        self.table_results.setRowCount(0)
        self.table_results.setColumnCount(3)
        self.table_results.setHorizontalHeaderLabels(
                    "КЛЮЧЕВОЕ СЛОВО;МЕСТО В ПОИСКЕ;ДАТА ЗАПРОСА".split(";"))
        self.table_results.setObjectName("table_results")
        self.table_results.horizontalHeader().setCascadingSectionResizes(False)
        self.table_results.horizontalHeader().setDefaultSectionSize(170)
        self.table_results.horizontalHeader().setMinimumSectionSize(31)
        self.table_results.horizontalHeader().setSortIndicatorShown(False)
        self.table_results.horizontalHeader().setStretchLastSection(False)
        self.table_results.verticalHeader().setCascadingSectionResizes(False)
        self.gridLayout_main.addWidget(self.table_results, 1, 0, 1, 5)
        self.label_filepath = QtWidgets.QLabel(self.groupBox_main)
        self.label_filepath.setMinimumSize(QtCore.QSize(0, 42))
        self.label_filepath.setObjectName("label_filepath")
        self.gridLayout_main.addWidget(self.label_filepath, 2, 0, 1, 5)
        self.gridLayout_3.addLayout(self.gridLayout_main, 0, 0, 1, 1)
        self.gridLayout.addWidget(self.groupBox_main, 0, 0, 6, 1)

        self.retranslateUi(YaP)
        QtCore.QMetaObject.connectSlotsByName(YaP)
Exemplo n.º 5
0
    def start_search(self, event):
        if self.timer.isActive():
            self.timer.stop()
        else:
            self.timer.start(100, self)
            self.label_done.setText(
                'Запросы обработаны, результаты занесены в базу данных.\n\
Для сохранения в файл нажмите кнопку \"Сохранить\".')
        if self.file_taken:
            for j, item in enumerate(self.query_list):
                self.query = self.query_list[j]
                r = requests.get(self.query_url + self.query)
                self.r_count += 1
                # функция limit() может быть вызвана только один раз          #
                # во избежание неправильных показателей счётчика.             #
                limit_data = limit(self.r_count, self.db_path, self.req_date) #
                # ########################################################### #
                if (limit_data[0]):
                    result = r.text
                    result_list = result.split('<url>')
                    for i, item in enumerate(result_list):
                        if self.rate_url in item:
                            self.rank += i
                            break
                    self.res_list.append((
                        self.query.encode('utf-8').decode('cp1251'),
                        self.rank,
                        self.req_date,))
                    self.file_queries.append(
                        self.query.encode('utf-8').decode('cp1251'))
                    limit_resume = str(limit_data[1]) + ' - Winter is close!'
                else:
                    limit_resume = str(limit_data[1]) +\
                        'Hour limit is here... Wait about ' +\
                        str(60 - int(datetime.now().strftime('%M'))) +\
                        ' minuntes, please!'
            self.sql_con(self.res_list)
            print(limit_resume)
            print(int(datetime.now().strftime('%Y-%m-%d')))
            print(int(datetime.now().strftime('%Y-%m-%d'))-1)
        else:
            r = requests.get(self.query_url + self.query)
            self.r_count += 1
            result = r.text
            result_list = result.split('<url>')
            for i, item in enumerate(result_list):
                if self.rate_url in item:
                    self.rank += i
                    break
            if self.rank != 0:
                self.res_label = ('По запросу \"' + self.query + '\" сайт poligon.info \
находится на ' + str(self.rank) + '-й позиции.\nДата запроса : '
                    + self.req_date + '.')
                self.label_r.setText(self.res_label)
                self.label_r.adjustSize()
                self.res_list.append((
                    self.query.encode('utf-8').decode('cp1251'),
                    self.rank,
                    self.req_date,))
                self.sql_con(self.res_list)
            else:
                self.res_label = ('По запросу \"' + self.query + '\" сайт poligon.info \
находится ниже 100-й позиции.\nДата запроса : '
                                  + self.req_date + '.')
                self.label_r.setText(self.res_label)
                self.label_r.adjustSize()
                self.res_list.append((
                    self.query.encode('utf-8').decode('cp1251'),
                    self.rank,
                    self.req_date,))
                self.sql_con(self.res_list)
                print('end')
                print(self.res_list)
Exemplo n.º 6
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
Exemplo n.º 7
0
 def start_search(self, event):
     self.search_work = True
     # YaP.timer = QtCore.QBasicTimer()
     # if YaP.timer.isActive():
     #     YaP.timer.stop()
     # else:
     #     YaP.timer.start(100, YaP)
     if self.file_taken:
         for j, item in enumerate(self.query_list):
             self.query = self.query_list[j]
             r = requests.get(self.query_url + self.query)
             self.r_count += 1
             self.limit_data = limit(
                             self.r_count, self.db_path, self.req_date,
                             self.day_limit, self.day_overdraft,
                             self.limit_police, self.hour, self.search_work)
             if (self.limit_data[0]):
                 result = r.text
                 result_list = result.split('<url>')
                 for i, item in enumerate(result_list):
                     if self.rate_url in item:
                         self.rank += i
                         break
                 if self.rank != 0:
                     self.cell_rank = str(self.rank)
                 else:
                     self.cell_rank = "< 100"
                 self.cell_date = self.req_date
                 # print(len(self.recent_requests))
                 if (self.query not in self.recent_requests):
                     self.cell_word = self.query
                     self.recent_requests.append(self.query)
                     self.table_results.setRowCount(self.table_row + 1)
                     self.table_results.setItem(
                         self.table_row, 0,
                         QtWidgets.QTableWidgetItem(self.cell_word))
                     self.table_results.setItem(
                         self.table_row, 1,
                         QtWidgets.QTableWidgetItem(self.cell_rank))
                     self.table_results.setItem(
                         self.table_row, 2,
                         QtWidgets.QTableWidgetItem(self.cell_date))
                     self.table_row += 1
                     self.label_info.setText('Запрос обработан.\nДля сохранения статистики\nнажмите кнопку \"Сохранить\".')
                 else:
                     self.label_info.setText('Этот запрос уже обработан.\nВведите другой запрос.')
                 self.recent_limit = self.limit_data[1]
                 self.lcdNumber_hour_limit.setProperty(
                     "intValue", self.recent_limit)
                 self.lcdNumber_day_limit.setProperty(
                     "intValue", (self.day_limit - self.limit_data[2]-1))
                 self.res_list.append((
                     self.query.encode('utf-8').decode('cp1251'),
                     self.rank,
                     self.req_date,))
                 self.sql_con(self.res_list)
                 self.res_list = []
                 self.rank = 0
                 self.recent_limit = self.limit_data[1] - 1
                 limit_resume = str(self.recent_limit) + '\
                                  - Winter is close!'
             else:
                 limit_resume = str(self.recent_limit) + '\
                         Hour limit is here... Wait about ' +\
                     str(60 - int(datetime.now().strftime('%M'))) +\
                     ' minuntes, please!'
         self.sql_con(self.res_list)
         self.res_list = []
         self.rank = 0
         self.file_taken = False
         # print(limit_resume)
     else:
         r = requests.get(self.query_url + self.query)
         self.r_count += 1
         self.limit_data = limit(
                             self.r_count, self.db_path, self.req_date,
                             self.day_limit, self.day_overdraft,
                             self.limit_police, self.hour, self.search_work)
         result = r.text
         result_list = result.split('<url>')
         for i, item in enumerate(result_list):
             if self.rate_url in item:
                 self.rank += i
                 break
         if self.rank != 0:
             self.cell_rank = str(self.rank)
         else:
             self.cell_rank = "< 100"
         self.cell_date = self.req_date
         # print(len(self.recent_requests))
         if (self.query not in self.recent_requests):
             self.cell_word = self.query
             self.recent_requests.append(self.query)
             self.table_results.setRowCount(self.table_row + 1)
             self.table_results.setItem(
                     self.table_row, 0,
                     QtWidgets.QTableWidgetItem(self.cell_word))
             self.table_results.setItem(
                     self.table_row, 1,
                     QtWidgets.QTableWidgetItem(self.cell_rank))
             self.table_results.setItem(
                     self.table_row, 2,
                     QtWidgets.QTableWidgetItem(self.cell_date))
             self.table_row += 1
             self.label_info.setText(
                     'Запрос обработан.\nДля сохранения статистики\nнажмите кнопку \"Сохранить\".')
         else:
             self.label_info.setText('Этот запрос уже обработан.\nВведите другой запрос.')
         self.recent_limit = self.limit_data[1]
         self.lcdNumber_hour_limit.setProperty(
             "intValue", self.recent_limit)
         self.lcdNumber_day_limit.setProperty(
             "intValue", (self.day_limit - self.limit_data[2]-1))
         self.res_list.append((
             self.query.encode('utf-8').decode('cp1251'),
             self.rank,
             self.req_date,))
         self.sql_con(self.res_list)
         self.res_list = []
     self.search_work = False
Exemplo n.º 8
0
conn.close()
# ключевое слово, для которого вычисляется позиция в выдаче Яндекса
query = ''
# список результатов рейтинга
res_list = []
# позиция в выдаче Яндекса
rank = 0
# имя xls-файла для списка запросов и вывода по ним статистики рейтингов
fname = ''
# кол-во столбцов в таблице представления данных
# table_row = 0
# превышение лимита запросов за предыдущий день
day_overdraft = 0
# список запросов, отображаемых в таблице
table_list = []
# список номеров строк в таблице с текущими запросами
table_indexes = []
# сюда поступают одиночные запросы перед добавлением в таблицу
table_add = []
# переключатель для функции подсчёта лимитов(чтобы не считал вхолостую)
search_work = False

ref_path = "file:///C:/Users/gnato/Desktop/Igor/progs/python_progs/YaP/reference.html"
# текущий час суток
# формат: strftime('%Y-%m-%d %H:%M:%S')
hour = int(datetime.now().strftime('%H'))
req_date = str(datetime.now().strftime('%Y-%m-%d'))
# данные по текущим лимитам, заполняются возвратом от функции limit()
limit_data = limit(db_path, req_date, day_limit, day_overdraft,
                   limit_police, hour, search_work, 1, 0, 0)