Advertisement
askanton

For_hand_made

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