SXXXXXXX_DownloaderYouTube/downloaderyoutube/__main__.py
2025-09-15 10:49:26 +02:00

67 lines
2.0 KiB
Python

import tkinter as tk
import logging
import sys
# Import the necessary components from our application
from downloaderyoutube.gui.gui import App
from downloaderyoutube.utils.logger import setup_basic_logging, shutdown_logging_system
# --- Logging Configuration --
# This dictionary configures the logging system. It can be expanded later.
LOGGING_CONFIG = {
"default_root_level": logging.DEBUG,
"specific_levels": {
# You can set different levels for different modules if needed
# "pytube": logging.WARNING,
},
"format": "%(asctime)s [%(levelname)-8s] %(name)-25s : %(message)s",
"date_format": "%Y-%m-%d %H:%M:%S",
"enable_console": True,
"enable_file": False, # Set to True to enable file logging
# "file_path": "downloader_app.log", # Uncomment if file logging is enabled
}
def main():
"""
Application entry point.
Initializes logging, creates the GUI, and starts the main loop.
"""
# --- Diagnostic Prints ---
print("-" * 50)
print(f"--- PYTHON EXECUTABLE: {sys.executable}")
root = tk.Tk()
# --- Setup Logging ---
# This is a crucial step to initialize the queue-based logging system.
setup_basic_logging(
root_tk_instance_for_processor=root, logging_config_dict=LOGGING_CONFIG
)
# Get a logger for the main entry point
logger = logging.getLogger(__name__)
logger.info("Application starting...")
# --- Create and run the App ---
app = App(master=root)
def on_closing():
"""
Handles the window closing event to ensure a clean shutdown.
"""
logger.info("Shutdown sequence initiated.")
# Properly shut down the logging system before closing the app
shutdown_logging_system()
root.destroy()
# Assign the custom closing function to the window's close button
root.protocol("WM_DELETE_WINDOW", on_closing)
# Start the Tkinter event loop
root.mainloop()
print("Application has been closed.")
if __name__ == "__main__":
main()