Всем привет! В общем хочу написать небольшую программку на питоне.
Программа будет спамить стены определенных групп в вк.
Есть два скрипта:
1. Весь функционал спамера (класс Spamer)
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import vk_api, ccaptcha, time, random
class Spamer:
groups_list = []
smiles = ["✔", "➕", "✅", "👍", "✳"]
"""
В конструкторе читается файл groups_list.txt
и содержимое помещается в аттрибут self.groups_list
"""
def __init__(self):
f = open('groups_list.txt')
stroka = f.read()
f.close()
self.groups_list = stroka.split(', ')
"""
Метод получает элемент который нужно удалить из списка
и обновляет файл со списком групп
"""
def reorg_list(self, element):
self.groups_list.remove(element)
f = open('groups_list.txt', 'w')
stroka = ', '.join(self.groups_list)
f.write(stroka)
f.close()
"""
Метод спамер
"""
def spam(self):
access_token = ''
cap = ccaptcha.CCaptcha()
vk = vk_api.VkApi(token=access_token, captcha_handler=cap.handleImage)
errors = [15]
for i in range(1, 3000):
owner_id = random.choice(self.groups_list)
message = (("Добавляю всех " + random.choice(self.smiles)) * 3 + "\r\n") * 30
try:
response = vk.method(method="wall.post", values={"owner_id": "-" + str(owner_id), "message": message})
except vk_api.ApiError as err_msg:
print(err_msg)
print(owner_id)
if err_msg.code in errors:
self.reorg_list(owner_id)
continue
print("[url=http://vk.com/club][url=http://vk.com/club]http://vk.com/club[/url][/url]" + str(owner_id))
print(response)
time.sleep(10)
s = Spamer()
s.spam()
--------------------------------------------------------------------------------------------------------------------------
2. Скрипт который отвечает за обработку капчи(отображение, отправка назад и т.д.)
Этот скрипт написан на pyqt5.
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys, requests
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
class Ccaptcha(QWidget):
def __init__(self):
super().__init__()
def handleImage(self, captcha):
p = requests.get(captcha.get_url())
out = open("img.jpg", "wb")
out.write(p.content)
out.close()
self.captcha = captcha
self.initUI()
def sendAnswer(self):
answer = self.txt.text()
self.close()
self.captcha.try_again(answer)
#initialize GUI
def initUI(self):
# load image
pic = QPixmap()
pic.load('img.jpg')
# create label and set image inside
lbl = QLabel()
lbl.setPixmap(pic)
lbl.setFixedWidth(130)
# create one line text field
self.txt = QLineEdit()
self.txt.setFrame(False)
self.txt.setFixedSize(130, 30)
self.txt.returnPressed.connect(self.sendAnswer)
self.txt.setStyleSheet("background-color: #F5F5F5;"
"border: 2px solid darkblue;"
"font-size: 12pt;")
vbox = QVBoxLayout()
vbox.setContentsMargins(5,5,5,5)
vbox.addWidget(lbl)
vbox.addWidget(self.txt)
vbox.setAlignment(Qt.AlignHCenter)
self.setStyleSheet("background-color: darkblue")
self.setLayout(vbox)
self.setFixedWidth(200)
self.move(500, 300)
self.setWindowTitle('Каптча:')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
cap = Ccaptcha()
sys.exit(app.exec_())
Если запускать отдельно эти скрипты, то они работают.
Как можно соединить эти два скрипта чтобы они работали как одно целое?
При этом чтобы каждый класс находился в свое файле.
Класс Spamer в файле spamer.py, класс Ccaptcha в файле ccaptcha.py
То есть например класс Spamer выполняет свою работу, и когда сервер вк возвращает в ответе "требуется ввод капчи" то в игру вступает скрипт ccaptcha и показывает окошко для ввода капчи.
Прошу сильно не пинать, потому как я только начинаю изучать pyqt, да и питон в целом тоже