Python Addons Installer – DarkCorners

Date: 17/12/2025

Category: Python

  • Phần mềm hỗ trợ cài đặt addon python hàng loạt.
  • Hỗ trợ nhiều addon khác nhau. Sử dụng cho cài đặt nhiều máy.
  1. Khởi động phần mềm.
  2. Chọn những addon cần cài đặt trong danh sách.
  3. Nhấn nút [Bắt Đầu].
import ttkbootstrap as tb
from ttkbootstrap.constants import *
import tkinter as tk
from tkinter import messagebox
import subprocess
import threading
import sys

# Danh sách addons với cấu trúc {"name": ..., "script": ...}
addons = [
	{"name": "Flask", "script": "pip install flask"},
    {"name": "Keyboard", "script": "pip install keyboard"},
    {"name": "PY Auto GUI", "script": "pip install pyautogui"},
	{"name": "Requests", "script": "pip install requests"},
	{"name": "Beautiful Soup 4", "script": "pip install beautifulsoup4"},
	{"name": "Pillow", "script": "pip install pillow"},
	{"name": "PyperClip", "script": "pip install pyperclip"},
	{"name": "Google Search", "script": "pip install googlesearch-python"},
	{"name": "Wikipedia", "script": "pip install wikipedia"},
	{"name": "PyInstaller", "script": "pip install pyinstaller"},
	{"name": "Custom Tkinter", "script": "pip install customtkinter"},
	{"name": "TTK Bootstrap", "script": "pip install ttkbootstrap"},
	{"name": "Webdriver Manager", "script": "pip install webdriver-manager"},
	{"name": "FFmpeg Python", "script": "pip install ffmpeg-python git+https://github.com/openai/whisper.git"},
	{"name": "Whisper", "script": "pip install whisper"},
	{"name": "Google Translate", "script": "pip install googletrans==4.0.0-rc1"},
	{"name": "OpenAI Whisper", "script": "pip install openai-whisper"},
	{"name": "MoviePY", "script": "pip install moviepy"},
	{"name": "SRT", "script": "pip install srt"},
	{"name": "Selenium", "script": "pip install selenium"},
	{"name": "ImageIO FFmpeg", "script": "pip install imageio[ffmpeg]"},
	{"name": "YT-DLP", "script": "pip install yt-dlp"},
	{"name": "GDown", "script": "pip install gdown"},
	{"name": "Browser Cookie 3", "script": "pip install browser-cookie3"},
	{"name": "Torch", "script": "pip install torch"},
	{"name": "Torch Vision", "script": "pip install torchvision"},
	{"name": "Torch Audio", "script": "pip install torchaudio --index-url https://download.pytorch.org/whl/cu118"},
	{"name": "Pytesseract", "script": "pip install pytesseract"},
	{"name": "Pynput", "script": "pip install pynput"},
	{"name": "OpenCV Python", "script": "pip install opencv-python"},
	{"name": "Sound Device", "script": "pip install sounddevice"},
	{"name": "Numpy", "script": "pip install numpy"},
	{"name": "Vosk", "script": "pip install vosk"},
	{"name": "Python Dateutil", "script": "pip install python-dateutil"},
	{"name": "ISO Date", "script": "pip install isodate"},
	{"name": "Google Auth & Client", "script": "pip install --upgrade google-auth-oauthlib google-api-python-client"},
	{"name": "Win 10 Toast & Sound", "script": "pip install win10toast playsound==1.2.2"},
    {"name": "Transformers", "script": "pip install -U transformers"},
    {"name": "Sentence Piece", "script": "pip install sentencepiece"},
    {"name": "TQDM", "script": "pip install tqdm"},
    {"name": "PY MySQL", "script": "pip install pymysql"},
]

install_thread = None
stop_install = False

# Hàm cài addon
def install_selected():
    global install_thread, stop_install
    stop_install = False
    selected_indices = addon_listbox.curselection()
    if not selected_indices:
        messagebox.showwarning("Cảnh báo", "Vui lòng chọn ít nhất một addon để cài đặt!")
        return
    selected_addons = [addons[i] for i in selected_indices]
    progress_bar["maximum"] = len(selected_addons)
    progress_bar["value"] = 0
    install_thread = threading.Thread(target=run_install, args=(selected_addons,))
    install_thread.start()

def run_install(selected_addons):
    global stop_install
    for i, addon in enumerate(selected_addons, start=1):
        if stop_install:
            break
        try:
            log_text.insert(tk.END, f"Đang cài đặt: {addon['name']}...\n")
            log_text.see(tk.END)
            subprocess.run(addon["script"].split(), capture_output=False)
            log_text.insert(tk.END, f"✅ Hoàn tất: {addon['name']}\n")
        except Exception as e:
            log_text.insert(tk.END, f"❌ Lỗi khi cài {addon['name']}: {e}\n")
        log_text.see(tk.END)
        progress_bar["value"] = i
    log_text.insert(tk.END, "\n🎉 Hoàn tất quá trình cài đặt.\n")

def stop_install_process():
    global stop_install
    stop_install = True
    log_text.insert(tk.END, "\n⏹ Quá trình cài đặt đã bị dừng.\n")
    log_text.see(tk.END)

# Hàm chọn tất cả addons
def select_all():
    addon_listbox.select_set(0, tk.END)

def deselect_all():
    addon_listbox.selection_clear(0, tk.END)

def center_window(root, width=600, height=500):
    # Lấy kích thước màn hình
    screen_width = root.winfo_screenwidth()
    screen_height = root.winfo_screenheight()
    # Tính vị trí bắt đầu trục ngang và trục đứng
    aaaxxx = (screen_width // 2) - (width // 2)
    bbbyyy = (screen_height // 2) - (height // 2) - (40)
    # Đặt geometry
    root.geometry(f"{width}x{height}+{aaaxxx}+{bbbyyy}")

# Giao diện chính
app = tb.Window(themename="cosmo")  # giao diện nhẹ hơn
app.title("Python Addons Installer - DarkCorners")
center_window(app, 600, 500)

# Hàng 1: Tiêu đề
title_label = tb.Label(app, text="🐍 Python Addons Installer", font=("Arial", 16, "bold"), bootstyle="info")
title_label.pack(pady=10)

# Hàng 2: Danh sách addons với Listbox thay vì nhiều Checkbutton
addons_frame = tb.Labelframe(app, text="DANH SÁCH ADDONS", bootstyle="primary", padding=5)
addons_frame.pack(fill="both", expand=True, padx=10, pady=5)
listbox_frame = tk.Frame(addons_frame)
listbox_frame.pack(fill="both", expand=True)
scrollbar = tk.Scrollbar(listbox_frame, orient="vertical")
addon_listbox = tk.Listbox(listbox_frame, selectmode="multiple", yscrollcommand=scrollbar.set, bg="#1e1e1e", fg="white")
scrollbar.config(command=addon_listbox.yview)
for addon in addons:
    addon_listbox.insert(tk.END, addon["name"])
addon_listbox.pack(side="left", fill="both", expand=True)
scrollbar.pack(side="right", fill="y")

# Hàng 3: Điều khiển
control_frame = tb.Frame(app)
control_frame.pack(fill="x", padx=10, pady=5)
tb.Button(control_frame, text="Bắt Đầu", bootstyle="success-outline", command=install_selected).pack(side="left", padx=5)
tb.Button(control_frame, text="Dừng", bootstyle="danger-outline", command=stop_install_process).pack(side="left", padx=5)
tb.Button(control_frame, text="Chọn tất cả", bootstyle="info-outline", command=select_all).pack(side="left", padx=5)
tb.Button(control_frame, text="Bỏ chọn tất cả", bootstyle="secondary-outline", command=deselect_all).pack(side="left", padx=5)
tb.Button(control_frame, text="Thoát", bootstyle="warning-outline", command=app.destroy).pack(side="right", padx=5)

# Thanh tiến trình
progress_bar = tb.Progressbar(app, mode="determinate", bootstyle="info-striped")
progress_bar.pack(fill="x", padx=10, pady=5)

# Khung log
log_text = tk.Text(app, height=8, bg="#1e1e1e", fg="white", insertbackground="white")
log_text.pack(fill="both", padx=10, pady=5)

app.mainloop()
pyinstaller --noconsole --onefile --windowed --add-data "6-PythonAddonsInstaller-icon.ico;." --icon=6-PythonAddonsInstaller-icon.ico 6-PythonAddonsInstaller-Source.py

Để lại một bình luận