-

Markdown Klasör Ağacı Oluşturucu

Bu betik ile bir klasör seçersiniz, ardından seçtiğiniz klasörün altında bulunan tüm dosya ve klasörlerin markdown şeklinde klasör ağacını oluşturur.

Ekran Görüntüsü

Markdown Generator
Kullanım

Bu script bir Python betiğidir, çalıştırabilmek için bilgisayarınızda Python yüklü olmalıdır.
Buraya tıklayarak indirme sayfasına ulaşabilirsiniz.

markdown-generator.py
import os
import sys
import subprocess
import importlib.util
from pathlib import Path
import tkinter as tk
from tkinter import filedialog

def check_and_install_library(lib_name, import_name):
    if importlib.util.find_spec(import_name) is None:
        cevap = input(f"Bu betiğin çalışması için {lib_name} kütüphanesinin yüklü olması gerekir. Şimdi yüklensin mi? (E/H): ")
        if cevap.lower() == 'e':
            subprocess.check_call([sys.executable, "-m", "pip", "install", lib_name])
            print(f"{lib_name} başarıyla yüklendi.\n")
        else:
            print("Gerekli kütüphane yüklenmediği için işlem iptal edildi.")
            input("\nÇıkmak için Enter'a basın...")
            sys.exit()

check_and_install_library("pyperclip", "pyperclip")
import pyperclip

def generate_ascii_tree(directory, prefix=""):
    path = Path(directory)
    tree_str = ""

    if prefix == "":
        tree_str += f"{path.name}/\n"

    items = sorted(path.iterdir(), key=lambda x: (x.is_file(), x.name.lower()))
    
    pointers = ["├── "] * (len(items) - 1) + ["└── "] if items else []

    for pointer, item in zip(pointers, items):
        if item.is_dir():
            tree_str += f"{prefix}{pointer}{item.name}/\n"
            extension = "│   " if pointer == "├── " else "    "
            tree_str += generate_ascii_tree(item, prefix=prefix + extension)
        else:
            tree_str += f"{prefix}{pointer}{item.name}\n"

    return tree_str

if __name__ == "__main__":
    root = tk.Tk()
    root.withdraw()
    root.attributes("-topmost", True)
    
    target_directory = filedialog.askdirectory(title="Ağaç Çıktısı Alınacak Klasörü Seçin")
    
    if target_directory:
        tree_output = generate_ascii_tree(target_directory)
        print("\n" + tree_output)
        
        copy_choice = input("Sonuç panoya kopyalansın mı? (E/H): ")
        if copy_choice.lower() == 'e':
            pyperclip.copy(tree_output)
            print("Ağaç çıktısı başarıyla panoya kopyalandı!")
    else:
        print("Herhangi bir klasör seçilmedi.")
        
    input("\nÇıkmak için Enter'a basın...")