diff --git a/bundle_checker.py b/bundle_checker.py index e98c07e..b770654 100644 --- a/bundle_checker.py +++ b/bundle_checker.py @@ -1,16 +1,51 @@ # bundle_checker.py import logging +import os +from datetime import datetime from bundle_parser import BundleParser from models import Base, Bundle, BundleVersion, BundleSalesHistory, BundleItem -import requests -# Konfiguriere das Logging -logging.basicConfig(level=logging.DEBUG, format="%(asctime)s [%(levelname)s] %(message)s") +# === Logging-Konfiguration === + +# Eigener Formatter, der lange Nachrichten für den Konsolen-Output kürzt +class TruncateFormatter(logging.Formatter): + def __init__(self, fmt=None, datefmt=None, max_length=300): + super().__init__(fmt, datefmt) + self.max_length = max_length + + def format(self, record): + message = super().format(record) + if len(message) > self.max_length: + return message[:self.max_length] + " ... [truncated]" + return message + +# Erstelle einen Logger logger = logging.getLogger(__name__) +logger.setLevel(logging.DEBUG) + +# Datei-Handler: Schreibt alle Logeinträge in eine Datei mit Zeitstempel im Dateinamen +timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") +log_filename = f"bundle_checker_{timestamp}.log" +file_handler = logging.FileHandler(log_filename) +file_handler.setLevel(logging.DEBUG) +file_formatter = logging.Formatter("%(asctime)s [%(levelname)s] %(message)s", "%Y-%m-%d %H:%M:%S") +file_handler.setFormatter(file_formatter) + +# Konsolen-Handler: Gibt verkürzte Nachrichten aus +console_handler = logging.StreamHandler() +console_handler.setLevel(logging.DEBUG) +console_formatter = TruncateFormatter("%(asctime)s [%(levelname)s] %(message)s", "%Y-%m-%d %H:%M:%S", max_length=300) +console_handler.setFormatter(console_formatter) + +# Füge beide Handler zum Logger hinzu +logger.addHandler(file_handler) +logger.addHandler(console_handler) + +# === Ende Logging-Konfiguration === def main(): overview_url = "https://www.humblebundle.com/bundles" - # Hier kannst du zwischen "books", "games" und "software" wählen: + # Wähle hier die gewünschte Kategorie, z. B. "books", "games" oder "software" category = "books" logger.info("Extrahiere Bundle-URLs von der Übersichtsseite ...")