Compare commits

...

2 Commits

Author SHA1 Message Date
b9f28f7f75 Code Optimiert 2023-12-29 17:19:53 +01:00
8bff182bfc Datenbank erstellt
Datenbank erstellt für die Kategorien und Webseiten

database.py um die Datenbank zu erstellen
2023-12-29 16:17:47 +01:00
3 changed files with 283 additions and 445 deletions

57
database.py Normal file
View File

@ -0,0 +1,57 @@
import sqlite3
# Verbindung zur Datenbank herstellen (eine neue Datenbank wird erstellt, wenn sie nicht vorhanden ist)
connection = sqlite3.connect('webseiten.db')
cursor = connection.cursor()
# Tabelle für Kategorien erstellen
cursor.execute('''
CREATE TABLE IF NOT EXISTS categories (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
)
''')
# Tabelle für Webseiten erstellen
cursor.execute('''
CREATE TABLE IF NOT EXISTS webpages (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
category_id INTEGER,
FOREIGN KEY (category_id) REFERENCES categories (id)
)
''')
# Kategorien hinzufügen
categories = ["IT/Elektronik", "Baumarkt", "Schilder", "Verpackungen",
"Küchenbedarf", "Reinigungs Artikel", "Büro Artikel",
"Deko", "Landwirtschaft/Garten", "Arbeitsschutz", "Hygiene",
"Etiketten/Papier", "Drogentest"]
for category in categories:
cursor.execute("INSERT INTO categories (name) VALUES (?)", (category,))
# Webseiten hinzufügen
webpages = [
["Reichelt", "Kosatec", "Conrad"],
["Hornbach", "Contorion","Gastroteile Shop", "TiroLED", "Megabad", "Baubeschlagshop", "IPS", "Häfele", "Delker", "Knauss"],
["Brewes", "Schildershop24", "Skiltex", "VKF-Renzel"],
["Papstar", "Pacovis", "Transpak", "TVV-Verpackungen", "Eierschachteln.de", "DM-Folien"],
["Esmeyer", "Lusini", "Tischwelt", "Schafferer", "Gastronomie Kaufhaus", "Börner", "GGM-Gastro"],
["Hygi", "Proficlean Shop", "Reinigungsberater", "Franz-Mensch"],
["Böttcher", "Buchhandlung am Markt", "Büroshop24.de"],
["Frank-Flechtwaren", "Betzold", "VBS-Hobby"],
["Siepmann", "FK-Söhnchen", "Wahl-Agar", "KOX"],
["Arbeitsplatzmatten Profi", "ARA"],
["Rossmann"],
["PML", "Label-Ident"],
["Ökonomed"]
]
for category_id, webpage_list in enumerate(webpages, start=1):
for webpage in webpage_list:
cursor.execute("INSERT INTO webpages (name, category_id) VALUES (?, ?)", (webpage, category_id))
# Änderungen speichern und Verbindung schließen
connection.commit()
connection.close()

View File

@ -7,10 +7,8 @@ from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup
import sqlite3
import sys
import concurrent.futures
BLANK_PAGE_URL = ""
@ -34,115 +32,73 @@ class SearchThread(QThread):
finally:
self.search_finished.emit()
def search_for_website(self,webseite):
search_functions = {
"Reichelt": self.suche_auf_reichelt,
"Conrad": self.suche_auf_conrad,
"Kosatec": self.suche_auf_kosatec,
"Hornbach": self.suche_auf_hornbach,
"Contorion": self.suche_auf_contorion,
"Gastroteile Shop": self.suche_auf_gastroteileshop,
"TiroLED": self.suche_auf_tiroled,
"Megabad": self.suche_auf_megabad,
"Baubeschlagshop": self.suche_auf_baubeschlag,
"IPS": self.suche_auf_ips_shop,
"Brewes": self.suche_auf_brewes,
"Delker": self.suche_auf_delker,
"Knauss": self.suche_auf_knauss,
"schildershop24": self.suche_auf_schildershop24,
"Häfele": self.suche_auf_haefele,
"Esmeyer": self.suche_auf_esmeyer,
"Papstar": self.suche_auf_papstar,
"Pacovis": self.suche_auf_pacovis,
"Lusini": self.suche_auf_lusini,
"Hygi": self.suche_auf_hygi,
"Tischwelt": self.suche_auf_tischwelt,
"Schafferer": self.suche_auf_schafferer,
"Gastronomie Kaufhaus": self.suche_auf_gastronomie_kaufhaus,
"Arbeitsplatzmatten Profi": self.suche_auf_arbeitsplatzmattenprofi,
"Skiltex": self.suche_auf_skiltex,
"Franz-Mensch": self.suche_auf_franzmensch,
"Frank-Flechtwaren": self.suche_auf_frankflechtwaren,
"ARA": self.suche_auf_ara_arbeitsschutz,
"VKF-Renzel": self.suche_auf_vkf_renzel,
"Börner": self.suche_auf_boerner,
"GGM-Gastro": self.suche_auf_ggmgastro,
"Böttcher": self.suche_auf_boettcher,
"Büroshop24": self.suche_auf_bueroshop24,
"Buchhandlung am Markt": self.suche_buchhandlung_am_markt,
"Label-Ident": self.suche_auf_labelident,
"Transpak": self.suche_auf_transpak,
"PML": self.suche_auf_pml,
"DM-Folien": self.suche_auf_dmfolien,
"Proficleanshop": self.suche_auf_proficleanshop,
"Siepmann": self.suche_auf_siepmann,
"FK-Söhnchen": self.suche_auf_fksoehnchen,
"Wahl-Agar": self.suche_auf_wahl_agrar,
"TVV-Verpackungen": self.suche_auf_tvv,
"Eierschachteln.de": self.suche_auf_eierschachteln,
"KOX": self.suche_auf_kox,
"Reinigungsberater.de": self.suche_auf_reinigungsberater,
"VBS-Hobby": self.suche_auf_vbshobby,
"Ökonomed": self.suche_auf_oekonomed,
"Rossmann": self.suche_auf_rossmann,
"Betzold": self.suche_auf_betzold,
}
search_function = search_functions.get(webseite)
if search_function:
search_function()
else:
print(f"Keine Suchfunktion für die Webseite '{webseite}' gefunden.")
def start_search_on_webseite(self, webseite):
try:
self.driver.execute_script(f"window.open('{BLANK_PAGE_URL}', '_blank');")
self.driver.switch_to.window(self.driver.window_handles[-1])
if webseite == "Reichelt":
self.suche_auf_reichelt()
elif webseite == "Conrad":
self.suche_auf_conrad()
elif webseite == "Kosatec":
self.suche_auf_kosatec()
elif webseite == "Hornbach":
self.suche_auf_hornbach()
elif webseite =="Contorion":
self.suche_auf_contorion()
elif webseite == "Gastroteile Shop":
self.suche_auf_gastroteileshop()
elif webseite == "TiroLED":
self.suche_auf_tiroled()
elif webseite == "Megabad":
self.suche_auf_megabad()
elif webseite == "Baubeschlagshop":
self.suche_auf_baubeschlag()
elif webseite == "IPS":
self.suche_auf_ips_shop()
elif webseite == "Brewes":
self.suche_auf_brewes()
elif webseite == "Delker":
self.suche_auf_delker()
elif webseite == "Knauss":
self.suche_auf_knauss()
elif webseite == "Schildershop24":
self.suche_auf_schildershop24()
elif webseite == "Häfele":
self.suche_auf_haefele()
elif webseite == "Esmeyer":
self.suche_auf_esmeyer()
elif webseite == "Papstar":
self.suche_auf_papstar()
elif webseite == "Pacovis":
self.suche_auf_pacovis()
elif webseite == "Lusini":
self.suche_auf_lusini()
elif webseite == "Hygi":
self.suche_auf_hygi()
elif webseite == "Tischwelt":
self.suche_auf_tischwelt()
elif webseite == "Schafferer":
self.suche_auf_schafferer()
elif webseite == "Gastronomie Kaufhaus":
self.suche_auf_gastronomie_kaufhaus()
elif webseite == "Arbeitsplatzmatten Profi":
self.suche_auf_arbeitsplatzmattenprofi()
elif webseite == "Skiltex":
self.suche_auf_skiltex()
elif webseite == "Franz-Mensch":
self.suche_auf_franzmensch()
elif webseite == "Frank-Flechtwaren":
self.suche_auf_frankflechtwaren()
elif webseite == "ARA":
self.suche_auf_ara_arbeitsschutz()
elif webseite == "VKF-Renzel":
self.suche_auf_vkf_renzel()
elif webseite == "Börner":
self.suche_auf_boerner()
elif webseite == "GGM-Gastro":
self.suche_auf_ggmgastro()
elif webseite == "Böttcher":
self.suche_auf_boettcher()
elif webseite == "Büroshop24":
self.suche_auf_bueroshop24()
elif webseite == "Buchhandlung am Markt":
self.suche_buchhandlung_am_markt()
elif webseite == "Label-Ident":
self.suche_auf_labelident()
elif webseite == "Transpak":
self.suche_auf_transpak()
elif webseite == "PM":
self.suche_auf_pml()
elif webseite == "DM-Folien":
self.suche_auf_dmfolien()
elif webseite == "Proficleanshop":
self.suche_auf_proficleanshop()
elif webseite == "Siepmann":
self.suche_auf_siepmann()
elif webseite == "FK-Söhnchen":
self.suche_auf_fksoehnchen()
elif webseite == "Wahl-Agar":
self.suche_auf_wahl_agrar()
elif webseite == "TVV-Verpackungen":
self.suche_auf_tvv()
elif webseite == "Eierschachteln.de":
self.suche_auf_eierschachteln()
elif webseite == "KOX":
self.suche_auf_kox()
elif webseite == "Reinigungsberater.de":
self.suche_auf_reinigungsberater()
elif webseite == "VBS-Hobby":
self.suche_auf_vbshobby()
elif webseite == "Ökonomed":
self.suche_auf_oekonomed()
elif webseite == "Rossmann":
self.suche_auf_rossmann()
elif webseite == "Betzold":
self.suche_auf_betzold()
self.search_for_website(webseite)
except Exception as e:
print(f"Fehler bei der Suche auf {webseite}: {e}")
@ -604,7 +560,6 @@ class SearchThread(QThread):
# Webseite aufrufen und auf das vollständige Laden warten
self.driver.get(search_url)
def suche_auf_wahl_agrar(self):
# URL für die Suche generieren
search_url = 'https://www.agrar-fachversand.com/de/' # Ersetzen Sie dies durch die tatsächliche URL für Wahl Agrar
@ -692,75 +647,34 @@ class SearchThread(QThread):
self.driver.get(search_url)
categories = ["IT/Elektronik", "Baumarkt","Schilder","Verpackungen",
"Küchenbedarf","Reinigungs Artikel", "Büro Artikel",
"Deko","Landwirtschaft/Garten","Arbeitsschutz","Hygiene",
"Etiketten/Papier",
"Drogentest"]
webpages = [
["Reichelt", "Kosatec", "Conrad"],
["Hornbach",
"Contorion",
"IPS",
"Gastroteile Shop",
"TiroLED",
"Megabad",
"Baubeschlagshop",
"Häfele",
"Delker",
"Knauss"],
["Brewes",
"Schildershop24",
"Skiltex",
"VKF-Renzel"],
["Papstar",
"Pacovis",
"Transpak",
"TVV-Verpackungen",
"Eierschachteln.de",
"DM-Folien"],
["Esmeyer",
"Lusini",
"Tischwelt",
"Schafferer",
"Gastronomie Kaufhaus",
"Börner",
"GGM-Gastro"],
["Hygi",
"Franz-Mensch",
"Proficlean Shop",
"Reinigungsberater"],
["Böttcher",
"Büroshop24.de",
"Buchhandlung am Markt"],
["Frank-Flechtwaren",
"Betzold",
"VBS-Hobby"],
["Siepmann",
"FK-Söhnchen",
"Wahl-Agar",
"KOX"],
["ARA",
"Arbeitsplatzmatten Profi"],
["Rossmann"],
["PML",
"Label-Ident"],
["Ökonomed"]
]
class WebseitenSucheApp(QWidget):
def __init__(self):
super().__init__()
self.category_webpages_mapping = {category: webpages for category, webpages in zip(categories, webpages)}
self.checkbox_states = {webpage: False for category_webpages in webpages for webpage in category_webpages}
self.categories, self.webpages = self.get_categories_and_webpages()
self.checkbox_states = {webpage: False for category_webpages in self.webpages for webpage in category_webpages}
self.search_term = ""
self.driver = None
self.init_ui()
def get_categories_and_webpages(self):
connection = sqlite3.connect('webseiten.db')
cursor = connection.cursor()
cursor.execute("SELECT name FROM categories")
categories = [row[0] for row in cursor.fetchall()]
webpages = []
for category in categories:
cursor.execute("SELECT name FROM webpages WHERE category_id = (SELECT id FROM categories WHERE name = ?)", (category,))
webpages.append([row[0] for row in cursor.fetchall()])
# Verbindung schließen
connection.close()
return categories, webpages
def init_ui(self):
self.setStyleSheet("background-color: black; color: white;")
layout = QVBoxLayout()
@ -768,283 +682,153 @@ class WebseitenSucheApp(QWidget):
# Kategorien und Webseiten in zwei vertikalen Spalten
grid_layout = QGridLayout()
grid_layout.setVerticalSpacing(5)
# ...
# Add category in the first grid#############################################################
category = "Baumarkt"
category_label = QLabel(category)
grid_layout.addWidget(category_label, 0, 0, 1, 2)
num_columns = 2 # Anzahl der Spalten
for idx, category in enumerate(self.categories):
category_label = QLabel(category)
# Webseiten für die aktuelle Kategorie
connection = sqlite3.connect('webseiten.db')
cursor = connection.cursor()
cursor.execute("SELECT name FROM webpages WHERE category_id = (SELECT id FROM categories WHERE name = ?)", (category,))
category_webpages = [row[0] for row in cursor.fetchall()]
connection.close()
num_webpages = len(category_webpages)
# Hier kannst du die Anzahl der Zeilen und die Position für jede Kategorie individuell festlegen
num_rows_for_category = max(num_webpages, 1) # Mindestens eine Zeile
if category == "Baumarkt":
row_position = 0 # Starte die Kategorie "Baumarkt" in der ersten Reihe
elif category == "Schilder":
row_position = 4
elif category == "Hygiene":
row_position = 9
elif category == "Drogentest":
row_position = 11
elif category == "Büro Artikel":
row_position = 13
elif category == "Küchenbedarf":
row_position = 17
elif category == "Landwirtschaft/Garten":
row_position = 25
elif category == "Verpackungen":
row_position = 11
elif category == "Reinigungs Artikel":
row_position = 18
elif category == "Arbeitsschutz":
row_position = 23
elif category == "Deko":
row_position = 26
else:
row_position = idx * (num_rows_for_category + 1) # 1 zusätzliche Zeile für die Kategorie
col_position = idx % num_columns
grid_layout.addWidget(category_label, row_position, col_position * 2, 1, 2) # Col Position * 2, um den Abstand zu erhöhen
for row, webpage in enumerate(category_webpages):
checkbox = QCheckBox(webpage)
checkbox.setChecked(self.checkbox_states[webpage])
checkbox.stateChanged.connect(self.make_checkbox_callback(webpage))
checkbox.setStyleSheet("color: white; border: 1px solid white;")
# Hier kannst du Anpassungen für jede Kategorie vornehmen
if category == "IT/Elektronik":
green_webpages = ["Reichelt", "Kosatec", "Conrad"]
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;")
if category == "Schilder":
green_webpages = ["Brewes","Schildershop24","Skiltex","VKF-Renzel"]
if any(green_webpage in webpage for green_webpage in green_webpages):
checkbox.setStyleSheet("color: green;")
if category == "Hygiene":
green_webpages = ["Rossmann"]
if any(green_webpage in webpage for green_webpage in green_webpages):
checkbox.setStyleSheet("color: green;")
if category == "Drogentest":
green_webpages = ["Ökonomed"]
if any(green_webpage in webpage for green_webpage in green_webpages):
checkbox.setStyleSheet("color: green;")
if category == "Büro Artikel":
green_webpages = ["Böttcher","Buchhandlung am Markt"]
if any(green_webpage in webpage for green_webpage in green_webpages):
checkbox.setStyleSheet("color: green;")
yellow_webpages = ["Büroshop24.de"]
if any(yellow_webpage in webpage for yellow_webpage in yellow_webpages):
checkbox.setStyleSheet("color: yellow;")
if category == "Küchenbedarf":
green_webpages = ["Esmeyer","Lusini","Tischwelt","Schafferer","Gastronomie Kaufhaus"]
if any(green_webpage in webpage for green_webpage in green_webpages):
checkbox.setStyleSheet("color: green;")
yellow_webpages = ["Börner","GGM-Gastro"]
if any(yellow_webpage in webpage for yellow_webpage in yellow_webpages):
checkbox.setStyleSheet("color: yellow;")
if category == "Landwirtschaft/Garten":
green_webpages = ["Siepmann","FK-Söhnchen","Wahl-Agar","KOX"]
if any(green_webpage in webpage for green_webpage in green_webpages):
checkbox.setStyleSheet("color: green;")
if category == "Baumarkt":
green_webpages = ["Hornbach","Contorion","Gastroteile Shop","Megabad","Baubeschlagshop","TiroLED"]
if any(green_webpage in webpage for green_webpage in green_webpages):
checkbox.setStyleSheet("color: green;")
yellow_webpages = ["Häfele","Delker","Knauss","IPS"]
if any(yellow_webpage in webpage for yellow_webpage in yellow_webpages):
checkbox.setStyleSheet("color: yellow;")
if category == "Verpackungen":
green_webpages = ["Papstar","Pacovis","Transpak","TVV-Verpackungen","Eierschachteln.de","DM-Folien"]
if any(green_webpage in webpage for green_webpage in green_webpages):
checkbox.setStyleSheet("color: green;")
if category == "Reinigungs Artikel":
green_webpages = ["Hygi","Proficlean Shop","Reinigungsberater","Franz-Mensch"]
if any(green_webpage in webpage for green_webpage in green_webpages):
checkbox.setStyleSheet("color: green;")
if category == "Arbeitsschutz":
yellow_webpages = ["ARA","Arbeitsplatzmatten Profi"]
if any(yellow_webpage in webpage for yellow_webpage in yellow_webpages):
checkbox.setStyleSheet("color: yellow;")
if category == "Deko":
green_webpages = ["Frank-Flechtwaren","Betzold","VBS-Hobby"]
if any(green_webpage in webpage for green_webpage in green_webpages):
checkbox.setStyleSheet("color: green;")
if category == "Etiketten/Papier":
green_webpages = ["Label-Ident","PML"]
if any(green_webpage in webpage for green_webpage in green_webpages):
checkbox.setStyleSheet("color: green;")
grid_layout.addWidget(checkbox, row + 1 + row_position, col_position * 2, 1, 2)
# Setze den Stretch-Faktor für die zusätzliche Zeile zwischen den Kategorien
grid_layout.setRowStretch(row_position + num_rows_for_category, 0)
# Add corresponding webpages in the first column
for row, webpage in enumerate(self.category_webpages_mapping[category]):
checkbox = QCheckBox(webpage)
checkbox.setChecked(self.checkbox_states[webpage])
checkbox.stateChanged.connect(self.make_checkbox_callback(webpage))
checkbox.setStyleSheet("color: white; border: 1px solid white;")
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;")
yellow_webpages = ["IPS","Delker", "Knauss", "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 = "Verpackungen"
category_label = QLabel(category)
grid_layout.addWidget(category_label, 8, 0, 1, 2)
for row, webpage in enumerate(self.category_webpages_mapping[category]):
checkbox = QCheckBox(webpage)
checkbox.setChecked(self.checkbox_states[webpage])
checkbox.stateChanged.connect(self.make_checkbox_callback(webpage))
checkbox.setStyleSheet("color: white; border: 1px solid white;")
green_webpages = ["Papstar", "Pacovis", "Transpak","TVV-Verpackungen","Eierschachteln.de","DM-Folien"]
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 + 9, 0, 1, 2)
category = "Deko"
category_label = QLabel(category)
grid_layout.addWidget(category_label, 15, 0, 1, 2)
for row, webpage in enumerate(self.category_webpages_mapping[category]):
checkbox = QCheckBox(webpage)
checkbox.setChecked(self.checkbox_states[webpage])
checkbox.stateChanged.connect(self.make_checkbox_callback(webpage))
checkbox.setStyleSheet("color: white; border: 1px solid white;")
green_webpages = ["Frank-Flechtwaren", "Betzold", "VBS-Hobby"]
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 + 16, 0, 1, 2)
category = "Landwirtschaft/Garten"
category_label = QLabel(category)
grid_layout.addWidget(category_label, 19, 0, 1, 2)
for row, webpage in enumerate(self.category_webpages_mapping[category]):
checkbox = QCheckBox(webpage)
checkbox.setChecked(self.checkbox_states[webpage])
checkbox.stateChanged.connect(self.make_checkbox_callback(webpage))
checkbox.setStyleSheet("color: white; border: 1px solid white;")
green_webpages = ["Siepmann","FK-Söhnchen","Wahl-Agar","KOX"]
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 + 20, 0, 1, 2)
category = "Arbeitsschutz"
category_label = QLabel(category)
grid_layout.addWidget(category_label, 24, 0, 1, 2)
for row, webpage in enumerate(self.category_webpages_mapping[category]):
checkbox = QCheckBox(webpage)
checkbox.setChecked(self.checkbox_states[webpage])
checkbox.stateChanged.connect(self.make_checkbox_callback(webpage))
checkbox.setStyleSheet("color: white; border: 1px solid white;")
green_webpages = ["ARA","Arbeitsplatzmatten Profi"]
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 + 25, 0, 1, 2)
category = "Hygiene"
category_label = QLabel(category)
grid_layout.addWidget(category_label, 27, 0, 1, 2)
for row, webpage in enumerate(self.category_webpages_mapping[category]):
checkbox = QCheckBox(webpage)
checkbox.setChecked(self.checkbox_states[webpage])
checkbox.stateChanged.connect(self.make_checkbox_callback(webpage))
checkbox.setStyleSheet("color: white; border: 1px solid white;")
green_webpages = ["Rossmann"]
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 + 28, 0, 1, 2)
category = "Drogentest"
category_label = QLabel(category)
grid_layout.addWidget(category_label, 29, 0, 1, 2)
for row, webpage in enumerate(self.category_webpages_mapping[category]):
checkbox = QCheckBox(webpage)
checkbox.setChecked(self.checkbox_states[webpage])
checkbox.stateChanged.connect(self.make_checkbox_callback(webpage))
checkbox.setStyleSheet("color: white; border: 1px solid white;")
green_webpages = ["Ökonomed"]
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 + 30, 0, 1, 2)
# Add category in the second grid#############################################################
category = "IT/Elektronik"
category_label = QLabel(category)
grid_layout.addWidget(category_label, 0, 2, 1, 2)
for row, webpage in enumerate(self.category_webpages_mapping[category]):
checkbox = QCheckBox(webpage)
checkbox.setChecked(self.checkbox_states[webpage])
checkbox.stateChanged.connect(self.make_checkbox_callback(webpage))
checkbox.setStyleSheet("color: white; border: 1px solid white;")
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 = "Schilder"
category_label = QLabel(category)
grid_layout.addWidget(category_label, 4, 2, 1, 2)
for row, webpage in enumerate(self.category_webpages_mapping[category]):
checkbox = QCheckBox(webpage)
checkbox.setChecked(self.checkbox_states[webpage])
checkbox.stateChanged.connect(self.make_checkbox_callback(webpage))
checkbox.setStyleSheet("color: white; border: 1px solid white;")
green_webpages = ["Brewes", "Schildershop24","Skiltex","VKF-Renzel"]
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)
category = "Küchenbedarf"
category_label = QLabel(category)
grid_layout.addWidget(category_label, 9, 2, 1, 2)
for row, webpage in enumerate(self.category_webpages_mapping[category]):
checkbox = QCheckBox(webpage)
checkbox.setChecked(self.checkbox_states[webpage])
checkbox.stateChanged.connect(self.make_checkbox_callback(webpage))
checkbox.setStyleSheet("color: white; border: 1px solid white;")
green_webpages = ["Esmeyer", "Lusini", "Tischwelt", "Schafferer", "Gastronomie Kaufhaus","Börner","GGM-Gastro"]
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+ 10, 2, 1, 2)
category = "Reinigungs Artikel"
category_label = QLabel(category)
grid_layout.addWidget(category_label, 17, 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.checkbox_states[webpage])
checkbox.stateChanged.connect(self.make_checkbox_callback(webpage))
checkbox.setStyleSheet("color: white; border: 1px solid white;")
green_webpages = ["Proficlean Shop", "Hygi", "Reinigungsberater", "Franz-Mensch"]
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+ 18, 2, 1, 2)
category = "Büro Artikel"
category_label = QLabel(category)
grid_layout.addWidget(category_label, 22, 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.checkbox_states[webpage])
checkbox.stateChanged.connect(self.make_checkbox_callback(webpage))
checkbox.setStyleSheet("color: white; border: 1px solid white;")
green_webpages = ["Böttcher", "Büroshop24.de", "Buchhandlung am Markt"]
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+ 23, 2, 1, 2)
category = "Etiketten/Papier"
category_label = QLabel(category)
grid_layout.addWidget(category_label, 26, 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.checkbox_states[webpage])
checkbox.stateChanged.connect(self.make_checkbox_callback(webpage))
checkbox.setStyleSheet("color: white; border: 1px solid white;")
green_webpages = ["PML","Label-Ident"]
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+ 27, 2, 1, 2)
##########################################################################################################################
layout.addLayout(grid_layout)
self.setLayout(layout)
# Suchbegriff-Eingabe
self.search_label = QLabel("Geben Sie den Suchbegriff ein:")
@ -1061,20 +845,17 @@ class WebseitenSucheApp(QWidget):
layout.addWidget(search_button)
search_button.setStyleSheet("color: white; border: 1px solid white;")
# Neues Suche-Button
new_search_button = QPushButton("Neue Suche starten", self)
new_search_button.clicked.connect(self.clear_checkboxes)
layout.addWidget(new_search_button)
new_search_button.setStyleSheet("color: white; border: 1px solid white;")
self.setLayout(layout)
self.setGeometry(300, 300, 400, 200)
self.setWindowTitle('Webseiten Suche App')
self.show()
def make_checkbox_callback(self, webpage):
def checkbox_callback(state):
self.checkbox_states[webpage] = state == Qt.Checked

BIN
webseiten.db Normal file

Binary file not shown.