Advertisement
askanton

Забираем сообщения из других телеграм каналов в свой, используя ключевые слова

Nov 21st, 2020 (edited)
2,087
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 11.68 KB | None | 0 0
  1. Manual - https://youtu.be/BUy90smGff4
  2.  
  3. # -*- coding: utf-8 -*-
  4. # импортируем библиотеки
  5. import sys
  6. from PySide2 import QtWidgets
  7. from PySide2.QtCore import (QCoreApplication, QMetaObject, QRect)
  8. from PySide2.QtWidgets import *
  9. from telethon import TelegramClient, events
  10. from pars_conf import account, list_all, key_words  # импортируем данные из файл конфигурации
  11. from multiprocessing import Process
  12. client = TelegramClient('my_account', account[0], account[1])  # собираем телеграм клиента
  13. client.start()
  14. client.disconnect()
  15.  
  16. @client.on(events.NewMessage)  # обработчик который запускаеться при получении нового сообщения
  17. async def my_event_handler(event):  # берем событие
  18.         print("strated")
  19.         if event.chat.username in list_all:  # проверяем пришло ли событие из канала который входит в наш список
  20.             if len(key_words[0]) != 0:
  21.                 for i in range(0, len(key_words)):
  22.                     if key_words[i] in event.message.message:
  23.                         await client.forward_messages(account[2],
  24.                                                       event.message)  # пересылаем сообщение в нашу личный канал
  25.                         print("busted for key word")  # выводим в консоль оповещение
  26.             else:
  27.                 await client.forward_messages(account[2], event.message)  # пересылаем сообщение в нашу личный канал
  28.                 print("busted")  # выводим в консоль оповещение
  29.  
  30. def shaya():
  31.     client.start()
  32.     client.run_until_disconnected()
  33.  
  34. # отрисовавыем интерфейс
  35. class Ui_TGParser(object):
  36.     def setupUi(self, TGParser):
  37.         if not TGParser.objectName():
  38.             TGParser.setObjectName(u"TGParser")
  39.         TGParser.resize(420, 484)
  40.         self.centralwidget = QWidget(TGParser)
  41.         self.centralwidget.setObjectName(u"centralwidget")
  42.         self.groupBox = QGroupBox(self.centralwidget)
  43.         self.groupBox.setObjectName(u"groupBox")
  44.         self.groupBox.setGeometry(QRect(10, 10, 401, 111))
  45.         self.lineEdit_2 = QLineEdit(self.groupBox)
  46.         self.lineEdit_2.setText(str(account[0]))
  47.         self.lineEdit_2.setObjectName(u"lineEdit_2")
  48.         self.lineEdit_2.setGeometry(QRect(110, 20, 150, 20))
  49.         self.lineEdit_3 = QLineEdit(self.groupBox)
  50.         self.lineEdit_3.setText(str(account[1]))
  51.         self.lineEdit_3.setObjectName(u"lineEdit_3")
  52.         self.lineEdit_3.setGeometry(QRect(110, 50, 150, 20))
  53.         self.lineEdit_4 = QLineEdit(self.groupBox)
  54.         self.lineEdit_4.setText(str(account[2]))
  55.         self.lineEdit_4.setObjectName(u"lineEdit_4")
  56.         self.lineEdit_4.setGeometry(QRect(110, 80, 150, 20))
  57.         self.label_3 = QLabel(self.groupBox)
  58.         self.label_3.setObjectName(u"label_3")
  59.         self.label_3.setGeometry(QRect(20, 20, 47, 13))
  60.         self.label_4 = QLabel(self.groupBox)
  61.         self.label_4.setObjectName(u"label_4")
  62.         self.label_4.setGeometry(QRect(20, 50, 47, 13))
  63.         self.label_5 = QLabel(self.groupBox)
  64.         self.label_5.setObjectName(u"label_5")
  65.         self.label_5.setGeometry(QRect(20, 80, 81, 16))
  66.         self.pushButton = QPushButton(self.groupBox)
  67.         self.pushButton.setObjectName(u"pushButton")
  68.         self.pushButton.setGeometry(QRect(280, 40, 101, 31))
  69.         self.groupBox_2 = QGroupBox(self.centralwidget)
  70.         self.groupBox_2.setObjectName(u"groupBox_2")
  71.         self.groupBox_2.setGeometry(QRect(10, 130, 401, 281))
  72.         self.plainTextEdit = QPlainTextEdit(self.groupBox_2)
  73.         self.plainTextEdit.setObjectName(u"plainTextEdit")
  74.         self.plainTextEdit.setPlainText(str(list_all))
  75.         self.plainTextEdit.setGeometry(QRect(110, 20, 230, 140))
  76.         self.plainTextEdit_2 = QPlainTextEdit(self.groupBox_2)
  77.         self.plainTextEdit_2.setPlainText(str(key_words).replace("'","")[1:-1])
  78.         self.plainTextEdit_2.setObjectName(u"plainTextEdit")
  79.         self.plainTextEdit_2.setGeometry(QRect(110, 170, 230, 50))
  80.         self.label_9 = QLabel(self.groupBox_2)
  81.         self.label_9.setObjectName(u"label_9")
  82.         self.label_9.setGeometry(QRect(10, 20, 71, 16))
  83.         self.label_10 = QLabel(self.groupBox_2)
  84.         self.label_10.setObjectName(u"label_10")
  85.         self.label_10.setGeometry(QRect(10, 170, 71, 16))
  86.         self.pushButton_3 = QPushButton(self.groupBox_2)
  87.         self.pushButton_3.setObjectName(u"pushButton_3")
  88.         self.pushButton_3.setGeometry(QRect(10, 240, 70, 31))
  89.         self.pushButton_4 = QPushButton(self.groupBox_2)
  90.         self.pushButton_4.setObjectName(u"pushButton_4")
  91.         self.pushButton_4.setGeometry(QRect(290, 240, 101, 31))
  92.         self.lineEdit_10 = QLineEdit(self.groupBox_2)
  93.         self.lineEdit_10.setObjectName(u"lineEdit_10")
  94.         self.lineEdit_10.setGeometry(QRect(85, 240, 191, 20))
  95.         self.pushButton_5 = QPushButton(self.centralwidget)
  96.         self.pushButton_5.setObjectName(u"pushButton_5")
  97.         self.pushButton_5.setGeometry(QRect(70, 420, 101, 31))
  98.         self.pushButton_6 = QPushButton(self.centralwidget)
  99.         self.pushButton_6.setObjectName(u"pushButton_6")
  100.         self.pushButton_6.setGeometry(QRect(240, 420, 101, 31))
  101.         TGParser.setCentralWidget(self.centralwidget)
  102.         self.statusbar = QStatusBar(TGParser)
  103.         self.statusbar.setObjectName(u"statusbar")
  104.         TGParser.setStatusBar(self.statusbar)
  105.         self.retranslateUi(TGParser)
  106.         QMetaObject.connectSlotsByName(TGParser)
  107.  
  108.     def retranslateUi(self, TGParser):
  109.         TGParser.setWindowTitle(QCoreApplication.translate("TGParser", u"TG Parser 3.0", None))
  110.         self.groupBox.setTitle(QCoreApplication.translate("TGParser", u"Account Data", None))
  111.         self.label_3.setText(QCoreApplication.translate("TGParser", u"API", None))
  112.         self.label_4.setText(QCoreApplication.translate("TGParser", u"HASH", None))
  113.         self.label_5.setText(QCoreApplication.translate("TGParser", u"Your channel Name", None))
  114.         self.pushButton.setText(QCoreApplication.translate("TGParser", u"Apply", None))
  115.         self.groupBox_2.setTitle(QCoreApplication.translate("TGParser", u"Groups Data", None))
  116.         self.plainTextEdit.setPlaceholderText("")
  117.         self.plainTextEdit.setReadOnly(True)
  118.         self.label_9.setText(QCoreApplication.translate("TGParser", u"Channels list:", None))
  119.         self.label_10.setText(QCoreApplication.translate("TGParser", u"Key words:", None))
  120.         self.pushButton_3.setText(QCoreApplication.translate("TGParser", u"Add chanel", None))
  121.         self.pushButton_4.setText(QCoreApplication.translate("TGParser", u"Remove Channel", None))
  122.         self.pushButton_5.setText(QCoreApplication.translate("TGParser", u"Start", None))
  123.         self.pushButton_6.setText(QCoreApplication.translate("TGParser", u"Stop", None))
  124.         self.pushButton_6.setEnabled(False)
  125.  
  126.  
  127. class TGParser(QtWidgets.QMainWindow, Ui_TGParser):  # Собираем класс с нашими основными действиями
  128.     zoe: None  # переменная для хранения номера подпроцесса
  129.  
  130.     def __init__(self):
  131.         super().__init__()
  132.         self.setupUi(self)  # Создание формы и Ui (наш дизайн)
  133.         self.show()  # Показать наше окно
  134.         # прописывем реакции на кнопки
  135.         self.pushButton.clicked.connect(self.apply)
  136.         self.pushButton_3.clicked.connect(self.chanel_list_add)
  137.         self.pushButton_4.clicked.connect(self.chanel_list_rem)
  138.         self.pushButton_5.clicked.connect(self.start)
  139.         self.pushButton_6.clicked.connect(self.stop)
  140.  
  141.  
  142.  
  143.     def stop(self):  # функция которая останавливает парсер
  144.         # активируем кнопки и поля ввода
  145.         self.lineEdit_2.setEnabled(True)
  146.         self.lineEdit_3.setEnabled(True)
  147.         self.lineEdit_4.setEnabled(True)
  148.         self.lineEdit_10.setEnabled(True)
  149.         self.pushButton.setEnabled(True)
  150.         self.pushButton_3.setEnabled(True)
  151.         self.pushButton_4.setEnabled(True)
  152.         self.pushButton_5.setEnabled(True)
  153.         self.pushButton_6.setEnabled(False)
  154.         self.prime_thread.terminate()
  155.  
  156.  
  157.  
  158.     def start(self):  # функция которая запускает парсер
  159.         self.prime_thread = Process(target=shaya)
  160.         self.prime_thread.start()
  161.         # деактивируем кнопки и поля ввода
  162.         self.lineEdit_2.setEnabled(False)
  163.         self.lineEdit_3.setEnabled(False)
  164.         self.lineEdit_4.setEnabled(False)
  165.         self.lineEdit_10.setEnabled(False)
  166.         self.pushButton.setEnabled(False)
  167.         self.pushButton_3.setEnabled(False)
  168.         self.pushButton_4.setEnabled(False)
  169.         self.pushButton_5.setEnabled(False)
  170.         self.pushButton_6.setEnabled(True)
  171.  
  172.     def apply(self):  # функция ввода данных для парсера
  173.         account[0] = self.lineEdit_2.text()  # берем API
  174.         account[1] = self.lineEdit_3.text()  # берем HASH
  175.         account[2] = self.lineEdit_4.text()  # берем название канала в который будем пересылать сообщения
  176.         key_words = (self.plainTextEdit_2.toPlainText()).split(",")
  177.         print(key_words)
  178.         print(len(key_words[0]))
  179.         output = open("pars_conf.py", 'w')  # перезаписываем новые даные в файл конфига
  180.         print("account =", account, file=output)
  181.         print("list_all =", list_all, file=output)
  182.         print("key_words =", key_words, file=output)
  183.         output.close()  # закрываем файл
  184.  
  185.     def chanel_list_add(self):  # функция которая добавляет канал в список каналов для парсинга
  186.         if self.lineEdit_10.text() not in list_all:  # проверяем нет ли уже такого канала
  187.             list_all.append(self.lineEdit_10.text())  # добавляем канал в список
  188.         self.plainTextEdit.setPlainText(str(list_all))  # обновляем поле с введными каналами
  189.         output = open("pars_conf.py", 'w')  # перезаписываем новые даные в файл конфига
  190.         print("account =", account, file=output)
  191.         print("list_all =", list_all, file=output)
  192.         print("key_words =", key_words, file=output)
  193.         output.close()  # закрываем файл
  194.  
  195.     def chanel_list_rem(self):  # функция которая удаляет канал из списка каналов для парсинга
  196.         list_all.remove(self.lineEdit_10.text())  # удаляем канал из списка
  197.         self.plainTextEdit.setPlainText(str(list_all))  # обновляем поле с введными каналами
  198.         output = open("pars_conf.py", 'w')  # перезаписываем новые даные в файл конфига
  199.         print("account =", account, file=output)
  200.         print("list_all =", list_all, file=output)
  201.         print("key_words =", key_words, file=output)
  202.         output.close()  # закрываем файл
  203.  
  204.  
  205. if __name__ == '__main__':
  206.     app = QtWidgets.QApplication(sys.argv)  # Новый экземпляр QApplication
  207.     tg_Parser = TGParser()  # Сздание инстанса класса Калькулятор, который мы создадим далее
  208.     sys.exit(app.exec_())  # Запуск
  209.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement