Anpassungen

Das Layout wurde angepasst.
Beschreibungen für die Webseiten wurden hinzugefügt.
This commit is contained in:
Domenik Rath 2023-11-29 11:34:16 +01:00
parent bd51ecc0bb
commit f742e406cd

View File

@ -1,4 +1,4 @@
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout,QLabel, QLineEdit, QPushButton, QCheckBox, QMessageBox
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout,QLabel, QLineEdit, QPushButton, QCheckBox, QMessageBox, QGridLayout
from concurrent.futures import ThreadPoolExecutor
from PyQt5.QtCore import Qt, QThread, pyqtSignal
from selenium import webdriver
@ -41,51 +41,51 @@ class SearchThread(QThread):
self.driver.switch_to.window(self.driver.window_handles[-1])
if webseite == "Reichelt":
if webseite == "Reichelt: Technikbedarf":
self.suche_auf_reichelt()
elif webseite == "Conrad":
elif webseite == "Conrad: Technik Marktplatz":
self.suche_auf_conrad()
elif webseite == "Kosatec":
elif webseite == "Kosatec: Elektro Artikel":
self.suche_auf_kosatec()
elif webseite == "Hornbach":
elif webseite == "Hornbach: Bad, Baustoffe, Holz, Fenster & Türen, Bodenbeläge, Werkzeug, Farben & Tapeten, Garten, Heizen":
self.suche_auf_hornbach()
elif webseite =="Contorion":
elif webseite =="Contorion: Befestigungstechnik, Handwerkzeug, Elektrowerkzeug, Materialbearbeitung, Betriebsausstattung":
self.suche_auf_contorion()
elif webseite == "Gastroteile Shop":
elif webseite == "Gastroteile Shop: Geräte/Anwendung, Dichtungs- Elektro- Gas- Wasser-Komponenten, Werkzeuge":
self.suche_auf_gastroteileshop()
elif webseite == "TiroLED":
elif webseite == "TiroLED: LED Beleuchtung, Digital Signage":
self.suche_auf_tiroled()
elif webseite == "Megabad":
elif webseite == "Megabad: Badarmaturen, Badkeramik, Badmöbel, Badewannen, Duschwannen, Duschkabine, Badheizkörper":
self.suche_auf_megabad()
elif webseite == "IPS":
elif webseite == "IPS: Verbindungs- Befestigungs- Dichtungs- Schlauch-Technik, Gewindefittings, Klemmringverschraubungen, Rohre":
self.suche_auf_ips_shop()
elif webseite == "Brewes":
elif webseite == "Brewes: Sicherheitsschilder, Verkehrszeichen, Absperrketten, Prüfplaketten, Lagerkennzeichnung":
self.suche_auf_brewes()
elif webseite == "Delker":
elif webseite == "Delker: Baugeräte,Beschlagsysteme und Sicherheitstechnik,Elektro- & Druckluftwerkzeuge,Betriebseinrichtungen":
self.suche_auf_delker()
elif webseite == "Knauss":
elif webseite == "Knauss: Armaturen, Geschirrbrausen, Reinigung, Haushalt, Wellness, Garten":
self.suche_auf_knauss()
elif webseite == "Schildershop24":
elif webseite == "Schildershop24: Beschilderung, Hauseingang, Firma & Gewerbe, KFZ & Straße":
self.suche_auf_schildershop24()
elif webseite == "Häfele":
elif webseite == "Häfele: Griffe & Türdrücker, Möbelbeschläge & Wohnraumlösungen, Türbeschläge, Schiebebeschläge & Rollläden":
self.suche_auf_haefele()
elif webseite == "Esmeyer":
elif webseite == "Esmeyer: Besteck & Geschirr, alles für Getränke, gedeckter Tisch, Essen & Trinken":
self.suche_auf_esmeyer()
elif webseite == "Papstar":
elif webseite == "Papstar: Bio-Einweggeschirr, Teller & Schalen, Becher & Gläser, Besteck, Fingerfood-Artikel, Servietten":
self.suche_auf_papstar()
elif webseite == "Lusini":
elif webseite == "Lusini: Gastrobedarf":
self.suche_auf_lusini()
elif webseite == "Hygi":
elif webseite == "Hygi: Reinigungsmittel, Pflegemittel & Waschmittel, Desinfektionsmittel, Besen,Müllsäcke & Haushaltswaren":
self.suche_auf_hygi()
elif webseite == "Schafferer":
elif webseite == "Schafferer: MARKEN, ESSEN & TRINKEN, WOHNEN & SCHENKEN, KOCHEN & GENIESSE, LUNCH, KINDER, THEMEN":
self.suche_auf_schafferer()
elif webseite == "Gastronomie Kaufhaus":
elif webseite == "Gastronomie Kaufhaus: Gastrobedarf":
self.suche_auf_gastronomie_kaufhaus()
elif webseite == "Böttcher":
elif webseite == "Böttcher: Bürobedarf, Papiere, Folien, Etiketten, Druckerpatronen, Büromöbel & Stahlschränke":
self.suche_auf_boettcher()
elif webseite == "Büroshop24":
elif webseite == "Büroshop24: Papier, Tinte & Toner, Ordner & Mappen, Schreibwaren, Versand, Schulbedarf, Bürobedarf":
self.suche_auf_bueroshop24()
elif webseite == "Buchhandlung am Markt":
elif webseite == "Buchhandlung am Markt: Bücher":
self.suche_buchhandlung_am_markt()
elif webseite == "Transpak":
self.suche_auf_transpak()
@ -113,18 +113,12 @@ class SearchThread(QThread):
# URL für die Suche generieren
search_url = 'https://www.brewes.de/catalogsearch/result?q='
search_url = f'https://www.brewes.de/catalogsearch/result?q={self.search_term}'
# Webseite aufrufen und auf das vollständige Laden warten
self.driver.get(search_url)
WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.ID, "search")))
# Suchbegriff eingeben und Suche starten
search_box = self.driver.find_element(By.ID, "search")
search_box.clear() # Falls vorheriger Text vorhanden ist
search_box.send_keys(self.search_term)
search_box.send_keys(Keys.RETURN)
def suche_auf_conrad(self):
# WebDriver initialisieren
@ -426,8 +420,6 @@ class SearchThread(QThread):
self.driver.get(search_url)
WebDriverWait(self.driver, 10).until(EC.presence_of_element_located((By.ID, "autocomplete-0-input")))
def suche_auf_bueroshop24(self):
# URL für die Suche generieren
@ -480,11 +472,27 @@ class SearchThread(QThread):
categories = ["IT/EDV", "Haustechnik","Küche", "Verwaltung", "Transporte"]
webpages = [
["Reichelt: Technikbedarf", "Conrad: Technik Marktplatz", "Kosatec: Elektro Artikel"],
["Hornbach: Bad & Sanitär, Baustoffe, Holz, Fenster & Türen, Bodenbeläge & Fliesen, Eisenwaren, Farben & Tapeten, Garten, Heizen, Klima & Lüftung, Innendeko & Bildershop, Küche, Leuchten & Elektro",
"Contorion", "Gastroteile Shop", "TiroLED", "Megabad", "IPS", "Brewes", "Delker", "Knauss", "Schildershop24", "Häfele"],
["Esmeyer", "Papstar", "Lusini", "Hygi", "Schafferer", "Gastronomie Kaufhaus"],
["Böttcher", "Büroshop24", "Buchhandlung am Markt"],
["Reichelt: Technikbedarf", "Kosatec: Elektro Artikel", "Conrad: Technik Marktplatz"],
["Hornbach: Bad, Baustoffe, Holz, Fenster & Türen, Bodenbeläge, Werkzeug, Farben & Tapeten, Garten, Heizen",
"Contorion: Befestigungstechnik, Handwerkzeug, Elektrowerkzeug, Materialbearbeitung, Betriebsausstattung",
"Gastroteile Shop: Geräte/Anwendung, Dichtungs- Elektro- Gas- Wasser-Komponenten, Werkzeuge",
"TiroLED: LED Beleuchtung, Digital Signage",
"Megabad: Badarmaturen, Badkeramik, Badmöbel, Badewannen, Duschwannen, Duschkabine, Badheizkörper",
"IPS: Verbindungs- Befestigungs- Dichtungs- Schlauch-Technik, Gewindefittings, Klemmringverschraubungen, Rohre",
"Brewes: Sicherheitsschilder, Verkehrszeichen, Absperrketten, Prüfplaketten, Lagerkennzeichnung",
"Delker: Baugeräte,Beschlagsysteme und Sicherheitstechnik,Elektro- & Druckluftwerkzeuge,Betriebseinrichtungen",
"Knauss: Armaturen, Geschirrbrausen, Reinigung, Haushalt, Wellness, Garten",
"Schildershop24: Beschilderung, Hauseingang, Firma & Gewerbe, KFZ & Straße",
"Häfele: Griffe & Türdrücker, Möbelbeschläge & Wohnraumlösungen, Türbeschläge, Schiebebeschläge & Rollläden"],
["Esmeyer: Besteck & Geschirr, alles für Getränke, gedeckter Tisch, Essen & Trinken",
"Papstar: Bio-Einweggeschirr, Teller & Schalen, Becher & Gläser, Besteck, Fingerfood-Artikel, Servietten",
"Lusini: Gastrobedarf",
"Hygi: Reinigungsmittel, Pflegemittel & Waschmittel, Desinfektionsmittel, Besen,Müllsäcke & Haushaltswaren ",
"Schafferer: MARKEN, ESSEN & TRINKEN, WOHNEN & SCHENKEN, KOCHEN & GENIESSE, LUNCH, KINDER, THEMEN",
"Gastronomie Kaufhaus: Gastrobedarf"],
["Böttcher: Bürobedarf, Papiere, Folien, Etiketten, Druckerpatronen, Büromöbel & Stahlschränke",
"Buchhandlung am Markt: Bücher",
"Büroshop24: Papier, Tinte & Toner, Ordner & Mappen, Schreibwaren, Versand, Schulbedarf, Bürobedarf"],
["Transpak"]
]
@ -504,25 +512,95 @@ class WebseitenSucheApp(QWidget):
def init_ui(self):
layout = QVBoxLayout()
# Kategorien und Webseiten in vertikalen Spalten
for category, category_webpages in zip(categories, webpages):
category_label = QLabel(category)
layout.addWidget(category_label)
# Kategorien und Webseiten in zwei vertikalen Spalten
grid_layout = QGridLayout()
for webpage in category_webpages:
checkbox = QCheckBox(webpage)
checkbox.setChecked(self.selected_webpages[webpage])
checkbox.stateChanged.connect(self.make_checkbox_callback(webpage))
# Add category in the first column#############################################################
category = "Haustechnik"
category_label = QLabel(category)
grid_layout.addWidget(category_label, 0, 0, 1, 2)
green_webpages = ["Reichelt","Kosatec","Hornbach","Contorion","Gastroteile Shop","TiroLED","Megabad","Esmeyer","Papstar","Lusini","Hygi","Schafferer","Gastronomie Kaufhaus","Böttcher","Büroshop24","Buchhandlung am Markt","Transpak"]
if any(green_webpage in webpage for green_webpage in green_webpages):
checkbox.setStyleSheet("color: green;")
# Add corresponding webpages in the first column
for row, webpage in enumerate(self.category_webpages_mapping[category]):
checkbox = QCheckBox(webpage)
checkbox.setChecked(self.selected_webpages[webpage])
checkbox.stateChanged.connect(self.make_checkbox_callback(webpage))
yellow_webpages = ["Conrad","IPS","Brewes","Delker","Knauss","Schildershop24","Häfele",]
if any(yellow_webpage in webpage for yellow_webpage in yellow_webpages):
checkbox.setStyleSheet("color: yellow;")
green_webpages = ["Hornbach", "Contorion", "Gastroteile Shop", "TiroLED", "Megabad" ]
if any(green_webpage in webpage for green_webpage in green_webpages):
checkbox.setStyleSheet("color: green;")
yellow_webpages = ["IPS", "Brewes","Delker", "Knauss", "Schildershop24", "Häfele"]
if any(yellow_webpage in webpage for yellow_webpage in yellow_webpages):
checkbox.setStyleSheet("color: yellow;")
grid_layout.addWidget(checkbox, row + 1, 0, 1, 2)
category = "Küche"
category_label = QLabel(category)
grid_layout.addWidget(category_label, 12, 0, 1, 2)
for row, webpage in enumerate(self.category_webpages_mapping[category]):
checkbox = QCheckBox(webpage)
checkbox.setChecked(self.selected_webpages[webpage])
checkbox.stateChanged.connect(self.make_checkbox_callback(webpage))
green_webpages = ["Esmeyer", "Papstar", "Lusini", "Hygi", "Schafferer", "Gastronomie Kaufhaus"]
if any(green_webpage in webpage for green_webpage in green_webpages):
checkbox.setStyleSheet("color: green;")
yellow_webpages = []
if any(yellow_webpage in webpage for yellow_webpage in yellow_webpages):
checkbox.setStyleSheet("color: yellow;")
grid_layout.addWidget(checkbox, row + 13, 0, 1, 2)
# Add "IT/EDV" category in the second column#############################################################
category = "IT/EDV"
category_label = QLabel(category)
grid_layout.addWidget(category_label, 0, 2, 1, 2)
# Add corresponding webpages in the second column
for row, webpage in enumerate(self.category_webpages_mapping[category]):
checkbox = QCheckBox(webpage)
checkbox.setChecked(self.selected_webpages[webpage])
checkbox.stateChanged.connect(self.make_checkbox_callback(webpage))
green_webpages = ["Reichelt", "Kosatec" ]
if any(green_webpage in webpage for green_webpage in green_webpages):
checkbox.setStyleSheet("color: green;")
yellow_webpages = ["Conrad"]
if any(yellow_webpage in webpage for yellow_webpage in yellow_webpages):
checkbox.setStyleSheet("color: yellow;")
grid_layout.addWidget(checkbox, row+ 1, 2, 1, 2)
category = "Verwaltung"
category_label = QLabel(category)
grid_layout.addWidget(category_label, 4, 2, 1, 2)
# Add corresponding webpages in the second column
for row, webpage in enumerate(self.category_webpages_mapping[category]):
checkbox = QCheckBox(webpage)
checkbox.setChecked(self.selected_webpages[webpage])
checkbox.stateChanged.connect(self.make_checkbox_callback(webpage))
green_webpages = []
if any(green_webpage in webpage for green_webpage in green_webpages):
checkbox.setStyleSheet("color: green;")
yellow_webpages = []
if any(yellow_webpage in webpage for yellow_webpage in yellow_webpages):
checkbox.setStyleSheet("color: yellow;")
grid_layout.addWidget(checkbox, row+ 5, 2, 1, 2)
##########################################################################################################################
layout.addLayout(grid_layout)
layout.addWidget(checkbox)
# Suchbegriff-Eingabe
search_label = QLabel("Geben Sie den Suchbegriff ein:")
layout.addWidget(search_label)