import os
import shutil
import argparse
import tkinter as tk
from tkinter import filedialog

def organize_by_date(root_folder):
    for item in os.listdir(root_folder):
        item_path = os.path.join(root_folder, item)
        if not os.path.isfile(item_path):
            continue

        # Expect format YYYY-MM-DD at start of filename
        parts = item.split("-")
        if len(parts) < 3 or not (parts[0].isdigit() and parts[1].isdigit() and parts[2].isdigit()):
            print(f"Ignoring {item}, no valid date format")
            continue

        year = parts[0]
        month = parts[1]

        year_folder = os.path.join(root_folder, year)
        month_folder = os.path.join(year_folder, month)
        os.makedirs(month_folder, exist_ok=True)

        dest_path = os.path.join(month_folder, item)
        shutil.move(item_path, dest_path)
        print(f"Moved {item} -> {month_folder}")

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="Organize files by date")
    parser.add_argument("--folder", help="Path to the folder to organize")
    parser.add_argument("--dialog", action="store_true", help="Open a folder selection dialog")
    args = parser.parse_args()

    if args.dialog:
        root = tk.Tk()
        root.withdraw()
        folder = filedialog.askdirectory(title="Select folder to organize")
        if not folder:
            print("No folder selected, exiting.")
            exit(1)
    elif args.folder:
        folder = args.folder
    else:
        folder = os.getcwd()

    organize_by_date(folder)
