[Mac]Unityのプロジェクトファイルで不要なものを削除してくれるアプリ作ってみた (GPT4o)

Unityのファイルは、ビルドファイルなど不要なものが多く溜まり、容量がとてつもなく大きくなることが多いかなと思っています。

なので、GPT4oさんの力を使って3分ぐらいで、Unityの不要なファイルを削除してくれるMac用のアプリを作ってみました。

ダウンロードはこちら

https://drive.google.com/file/d/11AoV8V20nTgXWqsleUJJh45Pe29synFv/view?usp=sharing

ここにUnityのファイルをドロップ


免責事項
不具合やプロジェクトファイルの破損などが発生しても、責任は負いません。プロジェクトファイルのバックアップを行った上、動作確認などを行ってください。

ソースコードも貼っておきます。

ProjectFile
-setup.py
-delete_files_dnd.py

(ビルド)
python3 setup.py py2app
# setup.py
from setuptools import setup

APP = ['delete_files_dnd.py']
DATA_FILES = []
OPTIONS = {
    'argv_emulation': True,
    'packages': ['tkinter', 'tkinterdnd2'],
}

setup(
    app=APP,
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
)
#delete_files_dnd.py

import os
import shutil
import tkinter as tk
from tkinter import messagebox
from tkinterdnd2 import DND_FILES, TkinterDnD

def delete_files_and_folders(root_folder):
    patterns = [
        '/Library/*.asset',
        '/obj',
        '/Build',
        '/Builds',
        '/Logs',
        '/Temp',
        '.vs',
        '.vscode',
        '*.csproj',
        '*.sln',
        '*.suo',
        '*.pdb',
        '*.user'
    ]

    for root, dirs, files in os.walk(root_folder, topdown=False):
        # Remove specified directories
        for name in dirs:
            dir_path = os.path.join(root, name)
            if any([name == pattern.strip('/').split('/')[0] for pattern in patterns]):
                print(f'Deleting directory: {dir_path}')
                shutil.rmtree(dir_path, ignore_errors=True)

        # Remove specified files
        for name in files:
            file_path = os.path.join(root, name)
            if any([name.endswith(pattern.split('.')[-1]) for pattern in patterns if '/' not in pattern]):
                print(f'Deleting file: {file_path}')
                os.remove(file_path)

def drop(event):
    folder_selected = event.data
    if folder_selected.startswith('{') and folder_selected.endswith('}'):
        folder_selected = folder_selected[1:-1]

    confirm = messagebox.askyesno('Confirm Deletion', f'Are you sure you want to delete specified files and folders in {folder_selected}?')
    if confirm:
        delete_files_and_folders(folder_selected)
        messagebox.showinfo('Done', 'Specified files and folders have been deleted.')

root = TkinterDnD.Tk()
root.title("Drag and Drop Folder Deletion")
root.geometry("400x200")

label = tk.Label(root, text="Drag and drop a folder here", width=40, height=10, bg='lightgrey', relief='raised')
label.pack(padx=10, pady=10, expand=True, fill=tk.BOTH)

label.drop_target_register(DND_FILES)
label.dnd_bind('<<Drop>>', drop)

root.mainloop()

この記事が気に入ったらサポートをしてみませんか?