from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QTableWidget, QTableWidgetItem, QHBoxLayout, QLabel,QMessageBox
from PyQt5.QtCore import QUrl, Qt.
from selenium import webdriver.
from selenium.webdriver.support.ui import WebDriverWait.
from selenium.webdriver.support import expected_conditions as EC.
from selenium.webdriver.common.by import By.
from selenium.webdriver.common.alert import Alert.
import sys.
import json.
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('Wp bot')
self.setGeometry(300, 300, 900, 600)
self.layout = QVBoxLayout()
self.table = QTableWidget()
self.table.setRowCount(30)
self.table.setColumnCount(3)
self.table.setHorizontalHeaderLabels(['Ad Soyad', 'Tel No', 'Mesaj'])
self.load_data()
self.layout.addWidget(self.table)
button_layout = QHBoxLayout()
self.button = QPushButton('İşlem')
self.button.clicked.connect(self.on_button_click)
button_layout.addWidget(self.button)
self.save_button = QPushButton('Kaydet')
self.save_button.clicked.connect(self.save_data)
button_layout.addWidget(self.save_button)
self.layout.addLayout(button_layout)
self.setLayout(self.layout)
self.table.setSizeAdjustPolicy(QTableWidget.AdjustToContents)
self.table.horizontalHeader().setStretchLastSection(True)
chrome_options = webdriver.ChromeOptions()
self.driver = webdriver.Chrome(options=chrome_options)
self.driver.get('https://web.whatsapp.com')
self.show_message('QR kodunu tarayın ve giriş yapın. İşleme başlamak için "İşlem" düğmesine tıklayın')
def load_data(self):
try:
with open('data.json', 'r') as f:
data = json.load(f)
for i, row in enumerate(data):
for j, value in enumerate(row):
item = QTableWidgetItem(value)
self.table.setItem(i, j, item)
except FileNotFoundError:
pass.
def save_data(self):
data = []
for row in range(self.table.rowCount()):
row_data = []
for col in range(self.table.columnCount()):
item = self.table.item(row, col)
row_data.append(item.text() if item else '')
data.append(row_data)
try:
with open('data.json', 'w') as f:
json.dump(data, f)
self.show_message('Bilgiler başarıyla kaydedildi')
except IOError:
self.show_message('Bilgiler kaydedilirken bir hata oluştu')
def on_button_click(self):
for row in range(self.table.rowCount()):
tel_item = self.table.item(row, 1)
mesaj_item = self.table.item(row, 2)
if tel_item and mesaj_item and tel_item.text() and mesaj_item.text():
tel_no = tel_item.text()
mesaj = mesaj_item.text()
url = f"https://api.whatsapp.com/send?phone={tel_no}&text={mesaj}"
self.driver.get(url)
try:
action_button = WebDriverWait(self.driver, 60).until(
EC.presence_of_element_located((By.ID, "action-button"))
)
action_button.click()
next_button = WebDriverWait(self.driver, 60).until(
EC.presence_of_element_located((By.CSS_SELECTOR, "a._9vcv._9vcx"))
)
next_button.click()
send_button = WebDriverWait(self.driver, 60).until(
EC.presence_of_element_located((By.CSS_SELECTOR, "button.x1c4vz4f.x2lah0s.xdl72j9.xfect85.x1iy03kw.x1lfpgzf"))
)
send_button.click()
except:
pass.
def show_message(self, message):
message_box = QMessageBox()
message_box.setText(message)
message_box.exec_()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())