Advertisement
askanton

variant

Sep 1st, 2020
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 9.88 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. # импортируем библиотеки
  3. import subprocess
  4. import sys
  5. from PySide2 import QtWidgets
  6. from PySide2.QtCore import (QCoreApplication, QMetaObject, QRect)
  7. from PySide2.QtWidgets import *
  8. import logging
  9. from telethon import TelegramClient, events
  10. from pars_conf import account, list_all  # импортируем данные из файл конфигурации
  11.  
  12. # включаем логирование
  13. logging.basicConfig(format='[%(levelname) 5s/%(as ctime)s] %(name)s: %(message)s', level=logging.INFO)
  14.  
  15.  
  16. # отрисовавыем интерфейс
  17. class Ui_TGParser(object):
  18.     def setupUi(self, TGParser):
  19.         if not TGParser.objectName():
  20.             TGParser.setObjectName(u"TGParser")
  21.         TGParser.resize(420, 484)
  22.         self.centralwidget = QWidget(TGParser)
  23.         self.centralwidget.setObjectName(u"centralwidget")
  24.         self.groupBox = QGroupBox(self.centralwidget)
  25.         self.groupBox.setObjectName(u"groupBox")
  26.         self.groupBox.setGeometry(QRect(10, 10, 401, 111))
  27.         self.lineEdit_2 = QLineEdit(self.groupBox)
  28.         self.lineEdit_2.setText(str(account[0]))
  29.         self.lineEdit_2.setObjectName(u"lineEdit_2")
  30.         self.lineEdit_2.setGeometry(QRect(110, 20, 150, 20))
  31.         self.lineEdit_3 = QLineEdit(self.groupBox)
  32.         self.lineEdit_3.setText(str(account[1]))
  33.         self.lineEdit_3.setObjectName(u"lineEdit_3")
  34.         self.lineEdit_3.setGeometry(QRect(110, 50, 150, 20))
  35.         self.lineEdit_4 = QLineEdit(self.groupBox)
  36.         self.lineEdit_4.setText(str(account[2]))
  37.         self.lineEdit_4.setObjectName(u"lineEdit_4")
  38.         self.lineEdit_4.setGeometry(QRect(110, 80, 150, 20))
  39.         self.label_3 = QLabel(self.groupBox)
  40.         self.label_3.setObjectName(u"label_3")
  41.         self.label_3.setGeometry(QRect(20, 20, 47, 13))
  42.         self.label_4 = QLabel(self.groupBox)
  43.         self.label_4.setObjectName(u"label_4")
  44.         self.label_4.setGeometry(QRect(20, 50, 47, 13))
  45.         self.label_5 = QLabel(self.groupBox)
  46.         self.label_5.setObjectName(u"label_5")
  47.         self.label_5.setGeometry(QRect(20, 80, 81, 16))
  48.         self.pushButton = QPushButton(self.groupBox)
  49.         self.pushButton.setObjectName(u"pushButton")
  50.         self.pushButton.setGeometry(QRect(280, 40, 101, 31))
  51.         self.groupBox_2 = QGroupBox(self.centralwidget)
  52.         self.groupBox_2.setObjectName(u"groupBox_2")
  53.         self.groupBox_2.setGeometry(QRect(10, 130, 401, 281))
  54.         self.plainTextEdit = QPlainTextEdit(self.groupBox_2)
  55.         self.plainTextEdit.setObjectName(u"plainTextEdit")
  56.         self.plainTextEdit.setPlainText(str(list_all))
  57.         self.plainTextEdit.setGeometry(QRect(110, 20, 150, 211))
  58.         self.label_9 = QLabel(self.groupBox_2)
  59.         self.label_9.setObjectName(u"label_9")
  60.         self.label_9.setGeometry(QRect(10, 20, 71, 16))
  61.         self.pushButton_3 = QPushButton(self.groupBox_2)
  62.         self.pushButton_3.setObjectName(u"pushButton_3")
  63.         self.pushButton_3.setGeometry(QRect(10, 240, 70, 31))
  64.         self.pushButton_4 = QPushButton(self.groupBox_2)
  65.         self.pushButton_4.setObjectName(u"pushButton_4")
  66.         self.pushButton_4.setGeometry(QRect(290, 240, 101, 31))
  67.         self.lineEdit_10 = QLineEdit(self.groupBox_2)
  68.         self.lineEdit_10.setObjectName(u"lineEdit_10")
  69.         self.lineEdit_10.setGeometry(QRect(85, 240, 191, 20))
  70.         self.pushButton_5 = QPushButton(self.centralwidget)
  71.         self.pushButton_5.setObjectName(u"pushButton_5")
  72.         self.pushButton_5.setGeometry(QRect(70, 420, 101, 31))
  73.         self.pushButton_6 = QPushButton(self.centralwidget)
  74.         self.pushButton_6.setObjectName(u"pushButton_6")
  75.         self.pushButton_6.setGeometry(QRect(240, 420, 101, 31))
  76.         TGParser.setCentralWidget(self.centralwidget)
  77.         self.statusbar = QStatusBar(TGParser)
  78.         self.statusbar.setObjectName(u"statusbar")
  79.         TGParser.setStatusBar(self.statusbar)
  80.         self.retranslateUi(TGParser)
  81.         QMetaObject.connectSlotsByName(TGParser)
  82.  
  83.     def retranslateUi(self, TGParser):
  84.         TGParser.setWindowTitle(QCoreApplication.translate("TGParser", u"TG Parser 2.0", None))
  85.         self.groupBox.setTitle(QCoreApplication.translate("TGParser", u"Account Data", None))
  86.         self.label_3.setText(QCoreApplication.translate("TGParser", u"API", None))
  87.         self.label_4.setText(QCoreApplication.translate("TGParser", u"HASH", None))
  88.         self.label_5.setText(QCoreApplication.translate("TGParser", u"Your channel Name", None))
  89.         self.pushButton.setText(QCoreApplication.translate("TGParser", u"Apply", None))
  90.         self.groupBox_2.setTitle(QCoreApplication.translate("TGParser", u"Groups Data", None))
  91.         self.plainTextEdit.setPlaceholderText("")
  92.         self.plainTextEdit.setReadOnly(True)
  93.         self.label_9.setText(QCoreApplication.translate("TGParser", u"Channels list:", None))
  94.         self.pushButton_3.setText(QCoreApplication.translate("TGParser", u"Add chanel", None))
  95.         self.pushButton_4.setText(QCoreApplication.translate("TGParser", u"Remove Channel", None))
  96.         self.pushButton_5.setText(QCoreApplication.translate("TGParser", u"Start", None))
  97.         self.pushButton_6.setText(QCoreApplication.translate("TGParser", u"Stop", None))
  98.         self.pushButton_6.setEnabled(False)
  99.  
  100.  
  101. class TGParser(QtWidgets.QMainWindow, Ui_TGParser):  # Собираем класс с нашими основными действиями
  102.     zoe: None  # переменная для хранения номера подпроцесса
  103.  
  104.     def __init__(self):
  105.         super().__init__()
  106.         self.setupUi(self)  # Создание формы и Ui (наш дизайн)
  107.         self.show()  # Показать наше окно
  108.         # прописывем реакции на кнопки
  109.         self.pushButton.clicked.connect(self.apply)
  110.         self.pushButton_3.clicked.connect(self.chanel_list_add)
  111.         self.pushButton_4.clicked.connect(self.chanel_list_rem)
  112.         self.pushButton_5.clicked.connect(self.start)
  113.         self.pushButton_6.clicked.connect(self.stop)
  114.  
  115.     def stop(self):  # функция которая останавливает парсер
  116.         subprocess.Popen("TASKKILL /F /PID {pid} /T".format(pid=self.zoe))  # останавливаем подпроцесс парсера
  117.         # активируем кнопки и поля ввода
  118.         self.lineEdit_2.setEnabled(True)
  119.         self.lineEdit_3.setEnabled(True)
  120.         self.lineEdit_4.setEnabled(True)
  121.         self.lineEdit_10.setEnabled(True)
  122.         self.pushButton.setEnabled(True)
  123.         self.pushButton_3.setEnabled(True)
  124.         self.pushButton_4.setEnabled(True)
  125.         self.pushButton_5.setEnabled(True)
  126.         self.pushButton_6.setEnabled(False)
  127.  
  128.     def start(self):  # функция которая запускает парсер
  129.         process = subprocess.Popen("gui_tg_pars.py", shell=True)  # запускаем скрипт с парсером в отдельном подпроцессе
  130.         self.zoe = process.pid  # сохраняем номер подпроцесса
  131.         # деактивируем кнопки и поля ввода
  132.         self.lineEdit_2.setEnabled(False)
  133.         self.lineEdit_3.setEnabled(False)
  134.         self.lineEdit_4.setEnabled(False)
  135.         self.lineEdit_10.setEnabled(False)
  136.         self.pushButton.setEnabled(False)
  137.         self.pushButton_3.setEnabled(False)
  138.         self.pushButton_4.setEnabled(False)
  139.         self.pushButton_5.setEnabled(False)
  140.         self.pushButton_6.setEnabled(True)
  141.  
  142.     def apply(self):  # функция ввода данных для парсера
  143.         account[0] = self.lineEdit_2.text()  # берем API
  144.         account[1] = self.lineEdit_3.text()  # берем HASH
  145.         account[2] = self.lineEdit_4.text()  # берем название канала в который будем пересылать сообщения
  146.         output = open("pars_conf.py", 'w')  # перезаписываем новые даные в файл конфига
  147.         print("account =", account, file=output)
  148.         print("list_all =", list_all, file=output)
  149.         output.close()  # закрываем файл
  150.  
  151.     def chanel_list_add(self):  # функция которая добавляет канал в список каналов для парсинга
  152.         if self.lineEdit_10.text() not in list_all:  # проверяем нет ли уже такого канала
  153.             list_all.append(self.lineEdit_10.text())  # добавляем канал в список
  154.         self.plainTextEdit.setPlainText(str(list_all))  # обновляем поле с введными каналами
  155.         output = open("pars_conf.py", 'w')  # перезаписываем новые даные в файл конфига
  156.         print("account =", account, file=output)
  157.         print("list_all =", list_all, file=output)
  158.         output.close()  # закрываем файл
  159.  
  160.     def chanel_list_rem(self):  # функция которая удаляет канал из списка каналов для парсинга
  161.         list_all.remove(self.lineEdit_10.text())  # удаляем канал из списка
  162.         self.plainTextEdit.setPlainText(str(list_all))  # обновляем поле с введными каналами
  163.         output = open("pars_conf.py", 'w')  # перезаписываем новые даные в файл конфига
  164.         print("account =", account, file=output)
  165.         print("list_all =", list_all, file=output)
  166.         output.close()  # закрываем файл
  167.  
  168.  
  169. if __name__ == '__main__':
  170.     app = QtWidgets.QApplication(sys.argv)  # Новый экземпляр QApplication
  171.     tg_Parser = TGParser()  # Сздание инстанса класса Калькулятор, который мы создадим далее
  172.     sys.exit(app.exec_())  # Запуск
  173.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement