Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- manual https://www.youtube.com/watch?v=DXVpTv9srPA
- # -*- coding: utf-8 -*-
- # импортируем библиотеки
- import subprocess
- import sys
- from PySide2 import QtWidgets
- from PySide2.QtCore import (QCoreApplication, QMetaObject, QRect)
- from PySide2.QtWidgets import *
- import logging
- from telethon import TelegramClient, events
- from pars_conf import account, list_all # импортируем данные из файл конфигурации
- # включаем логирование
- logging.basicConfig(format='[%(levelname) 5s/%(as ctime)s] %(name)s: %(message)s', level=logging.INFO)
- # отрисовавыем интерфейс
- class Ui_TGParser(object):
- def setupUi(self, TGParser):
- if not TGParser.objectName():
- TGParser.setObjectName(u"TGParser")
- TGParser.resize(420, 484)
- self.centralwidget = QWidget(TGParser)
- self.centralwidget.setObjectName(u"centralwidget")
- self.groupBox = QGroupBox(self.centralwidget)
- self.groupBox.setObjectName(u"groupBox")
- self.groupBox.setGeometry(QRect(10, 10, 401, 111))
- self.lineEdit_2 = QLineEdit(self.groupBox)
- self.lineEdit_2.setText(str(account[0]))
- self.lineEdit_2.setObjectName(u"lineEdit_2")
- self.lineEdit_2.setGeometry(QRect(110, 20, 150, 20))
- self.lineEdit_3 = QLineEdit(self.groupBox)
- self.lineEdit_3.setText(str(account[1]))
- self.lineEdit_3.setObjectName(u"lineEdit_3")
- self.lineEdit_3.setGeometry(QRect(110, 50, 150, 20))
- self.lineEdit_4 = QLineEdit(self.groupBox)
- self.lineEdit_4.setText(str(account[2]))
- self.lineEdit_4.setObjectName(u"lineEdit_4")
- self.lineEdit_4.setGeometry(QRect(110, 80, 150, 20))
- self.label_3 = QLabel(self.groupBox)
- self.label_3.setObjectName(u"label_3")
- self.label_3.setGeometry(QRect(20, 20, 47, 13))
- self.label_4 = QLabel(self.groupBox)
- self.label_4.setObjectName(u"label_4")
- self.label_4.setGeometry(QRect(20, 50, 47, 13))
- self.label_5 = QLabel(self.groupBox)
- self.label_5.setObjectName(u"label_5")
- self.label_5.setGeometry(QRect(20, 80, 81, 16))
- self.pushButton = QPushButton(self.groupBox)
- self.pushButton.setObjectName(u"pushButton")
- self.pushButton.setGeometry(QRect(280, 40, 101, 31))
- self.groupBox_2 = QGroupBox(self.centralwidget)
- self.groupBox_2.setObjectName(u"groupBox_2")
- self.groupBox_2.setGeometry(QRect(10, 130, 401, 281))
- self.plainTextEdit = QPlainTextEdit(self.groupBox_2)
- self.plainTextEdit.setObjectName(u"plainTextEdit")
- self.plainTextEdit.setPlainText(str(list_all))
- self.plainTextEdit.setGeometry(QRect(110, 20, 150, 211))
- self.label_9 = QLabel(self.groupBox_2)
- self.label_9.setObjectName(u"label_9")
- self.label_9.setGeometry(QRect(10, 20, 71, 16))
- self.pushButton_3 = QPushButton(self.groupBox_2)
- self.pushButton_3.setObjectName(u"pushButton_3")
- self.pushButton_3.setGeometry(QRect(10, 240, 70, 31))
- self.pushButton_4 = QPushButton(self.groupBox_2)
- self.pushButton_4.setObjectName(u"pushButton_4")
- self.pushButton_4.setGeometry(QRect(290, 240, 101, 31))
- self.lineEdit_10 = QLineEdit(self.groupBox_2)
- self.lineEdit_10.setObjectName(u"lineEdit_10")
- self.lineEdit_10.setGeometry(QRect(85, 240, 191, 20))
- self.pushButton_5 = QPushButton(self.centralwidget)
- self.pushButton_5.setObjectName(u"pushButton_5")
- self.pushButton_5.setGeometry(QRect(70, 420, 101, 31))
- self.pushButton_6 = QPushButton(self.centralwidget)
- self.pushButton_6.setObjectName(u"pushButton_6")
- self.pushButton_6.setGeometry(QRect(240, 420, 101, 31))
- TGParser.setCentralWidget(self.centralwidget)
- self.statusbar = QStatusBar(TGParser)
- self.statusbar.setObjectName(u"statusbar")
- TGParser.setStatusBar(self.statusbar)
- self.retranslateUi(TGParser)
- QMetaObject.connectSlotsByName(TGParser)
- def retranslateUi(self, TGParser):
- TGParser.setWindowTitle(QCoreApplication.translate("TGParser", u"TG Parser 2.0", None))
- self.groupBox.setTitle(QCoreApplication.translate("TGParser", u"Account Data", None))
- self.label_3.setText(QCoreApplication.translate("TGParser", u"API", None))
- self.label_4.setText(QCoreApplication.translate("TGParser", u"HASH", None))
- self.label_5.setText(QCoreApplication.translate("TGParser", u"Your channel Name", None))
- self.pushButton.setText(QCoreApplication.translate("TGParser", u"Apply", None))
- self.groupBox_2.setTitle(QCoreApplication.translate("TGParser", u"Groups Data", None))
- self.plainTextEdit.setPlaceholderText("")
- self.plainTextEdit.setReadOnly(True)
- self.label_9.setText(QCoreApplication.translate("TGParser", u"Channels list:", None))
- self.pushButton_3.setText(QCoreApplication.translate("TGParser", u"Add chanel", None))
- self.pushButton_4.setText(QCoreApplication.translate("TGParser", u"Remove Channel", None))
- self.pushButton_5.setText(QCoreApplication.translate("TGParser", u"Start", None))
- self.pushButton_6.setText(QCoreApplication.translate("TGParser", u"Stop", None))
- self.pushButton_6.setEnabled(False)
- class TGParser(QtWidgets.QMainWindow, Ui_TGParser): # Собираем класс с нашими основными действиями
- zoe: None # переменная для хранения номера подпроцесса
- def __init__(self):
- super().__init__()
- self.setupUi(self) # Создание формы и Ui (наш дизайн)
- self.show() # Показать наше окно
- # прописывем реакции на кнопки
- self.pushButton.clicked.connect(self.apply)
- self.pushButton_3.clicked.connect(self.chanel_list_add)
- self.pushButton_4.clicked.connect(self.chanel_list_rem)
- self.pushButton_5.clicked.connect(self.start)
- self.pushButton_6.clicked.connect(self.stop)
- def stop(self): # функция которая останавливает парсер
- subprocess.Popen("TASKKILL /F /PID {pid} /T".format(pid=self.zoe)) # останавливаем подпроцесс парсера
- # активируем кнопки и поля ввода
- self.lineEdit_2.setEnabled(True)
- self.lineEdit_3.setEnabled(True)
- self.lineEdit_4.setEnabled(True)
- self.lineEdit_10.setEnabled(True)
- self.pushButton.setEnabled(True)
- self.pushButton_3.setEnabled(True)
- self.pushButton_4.setEnabled(True)
- self.pushButton_5.setEnabled(True)
- self.pushButton_6.setEnabled(False)
- def start(self): # функция которая запускает парсер
- process = subprocess.Popen("gui_tg_pars.py", shell=True) # запускаем скрипт с парсером в отдельном подпроцессе
- self.zoe = process.pid # сохраняем номер подпроцесса
- # деактивируем кнопки и поля ввода
- self.lineEdit_2.setEnabled(False)
- self.lineEdit_3.setEnabled(False)
- self.lineEdit_4.setEnabled(False)
- self.lineEdit_10.setEnabled(False)
- self.pushButton.setEnabled(False)
- self.pushButton_3.setEnabled(False)
- self.pushButton_4.setEnabled(False)
- self.pushButton_5.setEnabled(False)
- self.pushButton_6.setEnabled(True)
- def apply(self): # функция ввода данных для парсера
- account[0] = self.lineEdit_2.text() # берем API
- account[1] = self.lineEdit_3.text() # берем HASH
- account[2] = self.lineEdit_4.text() # берем название канала в который будем пересылать сообщения
- output = open("pars_conf.py", 'w') # перезаписываем новые даные в файл конфига
- print("account =", account, file=output)
- print("list_all =", list_all, file=output)
- output.close() # закрываем файл
- def chanel_list_add(self): # функция которая добавляет канал в список каналов для парсинга
- if self.lineEdit_10.text() not in list_all: # проверяем нет ли уже такого канала
- list_all.append(self.lineEdit_10.text()) # добавляем канал в список
- self.plainTextEdit.setPlainText(str(list_all)) # обновляем поле с введными каналами
- output = open("pars_conf.py", 'w') # перезаписываем новые даные в файл конфига
- print("account =", account, file=output)
- print("list_all =", list_all, file=output)
- output.close() # закрываем файл
- def chanel_list_rem(self): # функция которая удаляет канал из списка каналов для парсинга
- list_all.remove(self.lineEdit_10.text()) # удаляем канал из списка
- self.plainTextEdit.setPlainText(str(list_all)) # обновляем поле с введными каналами
- output = open("pars_conf.py", 'w') # перезаписываем новые даные в файл конфига
- print("account =", account, file=output)
- print("list_all =", list_all, file=output)
- output.close() # закрываем файл
- if __name__ == '__main__':
- app = QtWidgets.QApplication(sys.argv) # Новый экземпляр QApplication
- tg_Parser = TGParser() # Сздание инстанса класса Калькулятор, который мы создадим далее
- sys.exit(app.exec_()) # Запуск
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement