179 lines
7.7 KiB
Python
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_())
|