diff --git a/einkauf_suche.py b/einkauf_suche.py index 32c9bb9..aa89395 100644 --- a/einkauf_suche.py +++ b/einkauf_suche.py @@ -57,6 +57,8 @@ class SearchThread(QThread): self.suche_auf_tiroled() elif webseite == "Megabad: Badarmaturen, Badkeramik, Badmöbel, Badewannen, Duschwannen, Duschkabine, Badheizkörper": self.suche_auf_megabad() + elif webseite == "Baubeschlagshop: Beschläge, Rollen, installationsbedarf": + self.suche_auf_baubeschlag() elif webseite == "IPS: Verbindungs- Befestigungs- Dichtungs- Schlauch-Technik, Gewindefittings, Klemmringverschraubungen, Rohre": self.suche_auf_ips_shop() elif webseite == "Brewes: Sicherheitsschilder, Verkehrszeichen, Absperrketten, Prüfplaketten, Lagerkennzeichnung": @@ -73,10 +75,14 @@ class SearchThread(QThread): self.suche_auf_esmeyer() elif webseite == "Papstar: Bio-Einweggeschirr, Teller & Schalen, Becher & Gläser, Besteck, Fingerfood-Artikel, Servietten": self.suche_auf_papstar() + elif webseite == "Pacovis: To Go Geschirr, Einweggeschirr Brasserie, Lebensmittelverarbeitung, Lebensmittelverpackungen": + self.suche_auf_pacovis() elif webseite == "Lusini: Gastrobedarf": self.suche_auf_lusini() elif webseite == "Hygi: Reinigungsmittel, Pflegemittel & Waschmittel, Desinfektionsmittel, Besen,Müllsäcke & Haushaltswaren": self.suche_auf_hygi() + elif webseite == "Tischwelt: Geschirr, Glas, Besteck, Buffet, Tischzubehör, Tischwäsche, Take Away, Geräte, Küchenbedarf, Möbel": + self.suche_auf_tischwelt() elif webseite == "Schafferer: MARKEN, ESSEN & TRINKEN, WOHNEN & SCHENKEN, KOCHEN & GENIESSE, LUNCH, KINDER, THEMEN": self.suche_auf_schafferer() elif webseite == "Gastronomie Kaufhaus: Gastrobedarf": @@ -174,34 +180,21 @@ class SearchThread(QThread): def suche_auf_kosatec(self): # Such-URL generieren - search_url = f'https://www.kosatec.de/suche?query={self.search_term}' + search_url = f'https://shop.kosatec.de/search?search={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.CSS_SELECTOR, "input[name='search']"))) - # Suchbegriff eingeben - search_box = self.driver.find_element(By.CSS_SELECTOR, "input[name='search']") - search_box.clear() # Falls vorheriger Text vorhanden ist - search_box.send_keys(self.search_term) - - # Enter-Taste drücken - search_box.send_keys(Keys.RETURN) def suche_auf_hornbach(self): # URL für die Suche generieren - search_url = 'https://www.hornbach.de/s/' + search_url = f'https://www.hornbach.de/s/{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.NAME, "global_search"))) - - # Suchbegriff eingeben und Suche starten - search_box = self.driver.find_element(By.NAME, "global_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_gastroteileshop(self): @@ -222,112 +215,70 @@ class SearchThread(QThread): def suche_auf_tiroled(self): # URL für die Suche generieren - search_url = 'https://www.tiroled.de/de/search' + search_url = f'https://www.tiroled.com/de/search?search={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.NAME, "search"))) - # Suchbegriff eingeben und Suche starten - search_box = self.driver.find_element(By.NAME, "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_megabad(self): # URL für die Suche generieren - search_url = 'https://www.megabad.com/' + search_url = f'https://www.megabad.com/search/?query=sdyc/#/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-bar-input"))) - # Suchbegriff eingeben und Suche starten - search_box = self.driver.find_element(By.ID, "search-bar-input") - search_box.clear() # Falls vorheriger Text vorhanden ist - search_box.send_keys(self.search_term) - search_box.send_keys(Keys.RETURN) + def suche_auf_baubeschlag(self): + # URL für die Suche generieren + search_url = f'https://www.baubeschlagshop.de/fts.php?criteria={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, "searchcriteria"))) def suche_auf_ips_shop(self): # URL für die Suche generieren - search_url = 'https://www.ips-kts.com/de/suche?query=' + search_url = f'https://www.ips-kts.com/de/suche?query={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.NAME, "query"))) - # Suchbegriff eingeben und Suche starten - search_box = self.driver.find_element(By.NAME, "query") - search_box.clear() # Falls vorheriger Text vorhanden ist - search_box.send_keys(self.search_term) - search_box.send_keys(Keys.RETURN) - def suche_auf_delker(self): # URL für die Suche generieren - search_url = 'https://www.delker2business.com/nw2017/' + search_url = f'https://www.delker2business.com/nwsearch/execute?query={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.NAME, "query"))) - # Suchbegriff eingeben und Suche starten - search_box = self.driver.find_element(By.NAME, "query") - search_box.clear() # Falls vorheriger Text vorhanden ist - search_box.send_keys(self.search_term) - - # Enter-Taste drücken, um die Suche zu starten - search_box.send_keys(Keys.RETURN) - def suche_auf_knauss(self): # URL für die Suche generieren - search_url = 'https://www.knauss.info/' + search_url = f'https://knauss.info/dksearch?sSearch={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.NAME, "sSearch"))) - # Suchbegriff eingeben und Suche starten - search_box = self.driver.find_element(By.NAME, "sSearch") - search_box.clear() # Falls vorheriger Text vorhanden ist - search_box.send_keys(self.search_term) - - # Enter-Taste drücken, um die Suche zu starten - search_box.send_keys(Keys.RETURN) - def suche_auf_schildershop24(self): # URL für die Suche generieren - search_url = 'https://www.schildershop24.de/' + search_url = f'https://www.schildershop24.de/?action=Query&-query.&query.stichwort=r{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-query-stichwort_neu"))) - # Suchbegriff eingeben und Suche starten - search_box = self.driver.find_element(By.ID, "search-query-stichwort_neu") - search_box.clear() # Falls vorheriger Text vorhanden ist - search_box.send_keys(self.search_term) - - # Enter-Taste drücken, um die Suche zu starten - search_box.send_keys(Keys.RETURN) - def suche_auf_esmeyer(self): # URL für die Suche generieren - search_url = 'https://www.esmeyer-shop.de/' + search_url = f'https://www.esmeyer-shop.de/search?search={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.NAME, "search"))) - - # Suchbegriff eingeben und Suche starten - search_box = self.driver.find_element(By.NAME, "search") - search_box.clear() # Falls vorheriger Text vorhanden ist - search_box.send_keys(self.search_term) - - # Enter-Taste drücken, um die Suche zu starten - search_box.send_keys(Keys.RETURN) - + def suche_auf_papstar(self): # URL für die Suche generieren search_url = 'https://www.papstar-shop.de/' @@ -344,23 +295,23 @@ class SearchThread(QThread): # Enter-Taste drücken, um die Suche zu starten search_box.send_keys(Keys.RETURN) + def suche_auf_pacovis(self): + # URL für die Suche generieren + search_url = f'https://www.pacovis.com/de-de/suche/1/search={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"))) + def suche_auf_lusini(self): # URL für die Suche generieren - search_url = 'https://www.lusini.de/' + search_url = f'https://www.lusini.com/de-de/search/#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-input"))) - # Suchbegriff eingeben und Suche starten - search_box = self.driver.find_element(By.ID, "search-input") - search_box.clear() # Falls vorheriger Text vorhanden ist - search_box.send_keys(self.search_term) - - # Enter-Taste drücken, um die Suche zu starten - search_box.send_keys(Keys.RETURN) - def suche_auf_hygi(self): # URL für die Suche generieren search_url = 'https://www.hygi.de/' @@ -377,23 +328,23 @@ class SearchThread(QThread): # Enter-Taste drücken, um die Suche zu starten search_box.send_keys(Keys.RETURN) + def suche_auf_tischwelt(self): + # URL für die Suche generieren + search_url = f'https://www.tischwelt.de/shop/Suche/?q={self.search_term}&search=Suchen' + + # 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"))) + def suche_auf_schafferer(self): # URL für die Suche generieren - search_url = 'https://www.schafferer.de/gastro/' + search_url = f'https://www.schafferer.de/gastro/Artikel-Suche/?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, "quicksearch-input"))) - # Suchbegriff eingeben und Suche starten - search_box = self.driver.find_element(By.ID, "quicksearch-input") - search_box.clear() # Falls vorheriger Text vorhanden ist - search_box.send_keys(self.search_term) - - # Enter-Taste drücken, um die Suche zu starten - search_box.send_keys(Keys.RETURN) - def suche_auf_gastronomie_kaufhaus(self): # URL für die Suche generieren @@ -439,20 +390,12 @@ class SearchThread(QThread): def suche_buchhandlung_am_markt(self): # URL für die Suche generieren - search_url = 'https://bam-mr.buchkatalog.de/' + search_url = f'https://bam-mr.buchkatalog.de/search?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, "mobile-search"))) - # Suchbegriff eingeben und Suche starten - search_box = self.driver.find_element(By.ID, "mobile-search") - search_box.clear() # Falls vorheriger Text vorhanden ist - search_box.send_keys(self.search_term) - - # Enter-Taste drücken, um die Suche zu starten - search_box.send_keys(Keys.RETURN) - def suche_auf_transpak(self): # URL für die Suche generieren search_url = f'https://www.shop.transpak.de/search?sSearch={self.search_term}' @@ -478,6 +421,7 @@ webpages = [ "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", + "Baubeschlagshop: Beschläge, Rollen, installationsbedarf", "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", @@ -486,8 +430,10 @@ webpages = [ "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", + "Pacovis: To Go Geschirr, Einweggeschirr Brasserie, Lebensmittelverarbeitung, Lebensmittelverpackungen", "Lusini: Gastrobedarf", - "Hygi: Reinigungsmittel, Pflegemittel & Waschmittel, Desinfektionsmittel, Besen,Müllsäcke & Haushaltswaren ", + "Hygi: Reinigungsmittel, Pflegemittel & Waschmittel, Desinfektionsmittel, Besen,Müllsäcke & Haushaltswaren", + "Tischwelt: Geschirr, Glas, Besteck, Buffet, Tischzubehör, Tischwäsche, Take Away, Geräte, Küchenbedarf, Möbel", "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", @@ -526,7 +472,7 @@ class WebseitenSucheApp(QWidget): checkbox.setChecked(self.selected_webpages[webpage]) checkbox.stateChanged.connect(self.make_checkbox_callback(webpage)) - green_webpages = ["Hornbach", "Contorion", "Gastroteile Shop", "TiroLED", "Megabad" ] + green_webpages = ["Hornbach", "Contorion", "Gastroteile Shop", "TiroLED", "Megabad", "Baubeschlagshop" ] if any(green_webpage in webpage for green_webpage in green_webpages): checkbox.setStyleSheet("color: green;") @@ -538,14 +484,14 @@ class WebseitenSucheApp(QWidget): category = "Küche" category_label = QLabel(category) - grid_layout.addWidget(category_label, 12, 0, 1, 2) + grid_layout.addWidget(category_label, 13, 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"] + green_webpages = ["Esmeyer", "Papstar", "Pacovis", "Lusini", "Hygi", "Tischwelt", "Schafferer", "Gastronomie Kaufhaus"] if any(green_webpage in webpage for green_webpage in green_webpages): checkbox.setStyleSheet("color: green;") @@ -553,7 +499,7 @@ class WebseitenSucheApp(QWidget): 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) + grid_layout.addWidget(checkbox, row + 14, 0, 1, 2) # Add "IT/EDV" category in the second column############################################################# category = "IT/EDV" @@ -657,8 +603,7 @@ class WebseitenSucheApp(QWidget): self.search_thread.wait() if hasattr(self.search_thread, 'error_message') and self.search_thread.error_message: QMessageBox.critical(None, "Fehler", self.search_thread.error_message) - else: - QMessageBox.information(None, "Suche abgeschlossen", "Die Suche wurde erfolgreich abgeschlossen.") +