Einkauf_Suche/main.py
2023-11-23 08:33:44 +01:00

179 lines
7.7 KiB
Python

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QLineEdit, QPushButton, QCheckBox, QMessageBox
from concurrent.futures import ThreadPoolExecutor
from hornbach import suche_auf_hornbach
from reichelt import suche_auf_reichelt
from kosatec import suche_auf_kosatec
from conrad import suche_auf_conrad
from contorion import suche_auf_contorion
from gastroteileshop import suche_auf_gastroteileshop
from tiroled import suche_auf_tiroled
from megabad import suche_auf_megabad
from ips import suche_auf_ips_shop
from brewes import suche_auf_brewes
from delker import suche_auf_delker
from knauss import suche_auf_knauss
from schildershop24 import suche_auf_schildershop24
from haefele import suche_auf_haefele
from esmeyer import suche_auf_esmeyer
from papstar import suche_auf_papstar
from lusini import suche_auf_lusini
from hygi import suche_auf_hygi
from schafferer import suche_auf_schafferer
from gastrokaufhaus import suche_auf_gastronomie_kaufhaus
from boettcher import suche_auf_boettcher
from bueroshop import suche_auf_bueroshop24
class WebseitenSucheApp(QWidget):
def __init__(self):
super().__init__()
self.selected_webpages = {
"Reichelt": False,
"Conrad": False,
"Kosatec": False,
"Hornbach": False,
"Contorion": False,
"Gastro Teile Shop": False,
"TiroLED": False,
"Megabad": False,
"IPS": False,
"Brewes": False,
"Delker": False,
"Knauss": False,
"Schildershop24": False,
"Häfele": False,
"Esmeyer": False,
"Papstar": False,
"Lusini": False,
"Hygi": False,
"Schafferer": False,
"Gastronomie Kaufhaus": False,
"Böttcher": False,
"Büroshop24": False
}
self.search_term = ""
self.init_ui()
def init_ui(self):
layout = QVBoxLayout()
# Webseiten-Auswahl
layout.addWidget(QLabel("Wählen Sie die Webseiten aus:"))
for webpage, checked in self.selected_webpages.items():
checkbox = QCheckBox(webpage)
checkbox.setChecked(checked)
checkbox.stateChanged.connect(lambda state, page=webpage: self.update_webpage_state(page, state))
layout.addWidget(checkbox)
# Suchbegriff-Eingabe
search_label = QLabel("Geben Sie den Suchbegriff ein:")
layout.addWidget(search_label)
search_input = QLineEdit(self)
search_input.textChanged.connect(self.update_search_term)
layout.addWidget(search_input)
# Suchen-Button
search_button = QPushButton("Suche starten", self)
search_button.clicked.connect(self.start_search)
layout.addWidget(search_button)
# Neues Suche-Button
new_search_button = QPushButton("Neue Suche starten", self)
new_search_button.clicked.connect(self.new_search)
layout.addWidget(new_search_button)
self.setLayout(layout)
self.setGeometry(300, 300, 400, 200)
self.setWindowTitle('Webseiten Suche App')
self.show()
def update_webpage_state(self, webpage, state):
self.selected_webpages[webpage] = state == 2 # 2 entspricht dem Zustand "ausgewählt"
def update_search_term(self, text):
self.search_term = text
def start_search(self):
selected_webpages = [webpage for webpage, selected in self.selected_webpages.items() if selected]
if not selected_webpages:
QMessageBox.warning(self, "Fehler", "Bitte wählen Sie mindestens eine Webseite aus.")
return
if not self.search_term:
QMessageBox.warning(self, "Fehler", "Bitte geben Sie einen Suchbegriff ein.")
return
try:
with ThreadPoolExecutor() as executor:
futures = []
for webseite in selected_webpages:
# Fügen Sie hier Ihre anderen Suchfunktionen hinzu
if webseite == "Reichelt":
futures.append(executor.submit(suche_auf_reichelt, self.search_term))
elif webseite == "Conrad":
futures.append(executor.submit(suche_auf_conrad, self.search_term))
elif webseite == "Kosatec":
futures.append(executor.submit(suche_auf_kosatec, self.search_term))
elif webseite == "Hornbach":
futures.append(executor.submit(suche_auf_hornbach, self.search_term))
elif webseite =="Contorion":
futures.append(executor.submit(suche_auf_contorion, self.search_term))
elif webseite == "Gastro Teile Shop":
futures.append(executor.submit(suche_auf_gastroteileshop, self.search_term))
elif webseite == "TiroLED":
futures.append(executor.submit(suche_auf_tiroled, self.search_term))
elif webseite == "Megabad":
futures.append(executor.submit(suche_auf_megabad, self.search_term))
elif webseite == "IPS":
futures.append(executor.submit(suche_auf_ips_shop, self.search_term))
elif webseite == "Brewes":
futures.append(executor.submit(suche_auf_brewes, self.search_term))
elif webseite == "Delker":
futures.appen(executor.submit(suche_auf_delker, self.search_term))
elif webseite == "Knauss":
futures.append(executor.submit(suche_auf_knauss, self.search_term))
elif webseite == "Schildershop24":
futures.append(executor.submit(suche_auf_schildershop24, self.search_term))
elif webseite == "Häfele":
futures.append(executor.submit(suche_auf_haefele, self.search_term))
elif webseite == "Esmeyer":
futures.append(executor.submit(suche_auf_esmeyer, self.search_term))
elif webseite == "Papstar":
futures.append(executor.submit(suche_auf_papstar, self.search_term))
elif webseite == "Lusini":
futures.append(executor.submit(suche_auf_lusini, self.search_term))
elif webseite == "Hygi":
futures.append(executor.submit(suche_auf_hygi, self.search_term))
elif webseite == "Schafferer":
futures.append(executor.submit(suche_auf_schafferer, self.search_term))
elif webseite == "Gastronomie Kaufhaus":
futures.append(executor.submit(suche_auf_gastronomie_kaufhaus, self.search_term))
elif webseite == "Böttcher":
futures.append(executor.submit(suche_auf_boettcher, self.search_term))
elif webseite == "Büroshop24":
futures.append(executor.submit(suche_auf_bueroshop24, self.search_term))
for future in futures:
future.result() # Warte auf das Ende der Suche
QMessageBox.information(self, "Suche abgeschlossen", "Die Suche wurde erfolgreich abgeschlossen.")
except Exception as e:
QMessageBox.critical(self, "Fehler", f"Fehler bei der Suche: {e}")
def new_search(self):
# Implementieren Sie hier die Logik für eine neue Suche
# Das könnte bedeuten, dass Sie die GUI zurücksetzen oder andere Vorbereitungen treffen
print("Neue Suche starten")
if __name__ == '__main__':
app = QApplication(sys.argv)
window = WebseitenSucheApp()
sys.exit(app.exec_())