Auto-organize Your Downloads Folder

Automatically move files into folders based on file type.

Details

How it works

This script helps keep your Downloads folder organized by categorizing files into folders like Images, Videos, and Documents.

Python


import os
import shutil
from pathlib import Path
import time

DOWNLOAD_PATH = str(Path.home() / "Downloads")

FILE_TYPES = {
    "Images": [".jpg", ".jpeg", ".png", ".gif", ".svg"],
    "Videos": [".mp4", ".mov", ".avi", ".mkv"],
    "Documents": [".pdf", ".docx", ".txt", ".xlsx", ".pptx"],
    "Archives": [".zip", ".rar", ".7z", ".tar"],
    "Music": [".mp3", ".wav", ".aac"],
    "Code": [".py", ".js", ".html", ".css", ".ts"]
}

def organize_files():
    for filename in os.listdir(DOWNLOAD_PATH):
        file_path = os.path.join(DOWNLOAD_PATH, filename)

        if os.path.isfile(file_path):
            file_ext = os.path.splitext(filename)[1].lower()

            moved = False
            for folder, extensions in FILE_TYPES.items():
                if file_ext in extensions:
                    target_folder = os.path.join(DOWNLOAD_PATH, folder)
                    os.makedirs(target_folder, exist_ok=True)
                    shutil.move(file_path, os.path.join(target_folder, filename))
                    print(f"Moved {filename} to {folder}")
                    moved = True
                    break
            if not moved:
                print(f"Skipped {filename} (not matching category)")

if __name__ == "__main__":
    INTERVAL_MINUTES = 5

    print(f"Running file organizer every {INTERVAL_MINUTES} minutes...
")
    while True:
        organize_files()
        print("Waiting...
")
        time.sleep(INTERVAL_MINUTES * 6