| |
| |
| |
| |
| |
| |
| |
|
|
| from datetime import datetime |
| from os import path, system |
| from time import sleep |
|
|
| from colorama import Back, Fore, Style |
|
|
|
|
| |
| def clear(): |
| system("clear") |
|
|
|
|
| MANDATORY_REQS = [ |
| "https://github.com/New-dev0/Telethon/archive/Cartoon.zip", |
| "gitpython", |
| "enhancer", |
| "telegraph", |
| "requests", |
| "python-decouple", |
| "aiohttp", |
| ] |
|
|
| OPT_PACKAGES = { |
| "bs4": "Used for site-scrapping (used in commands like - .gadget and many more)", |
| "yt-dlp": "Used for Youtuble Related Downloads...", |
| "youtube-search-python": "Used for youtube video search..", |
| "pillow": "Used for Image-Conversion related task. (size - approx 50mb ) (required for kang, convert and many more.)", |
| "psutil": "Used for .usage command.", |
| "lottie": "Used for animated sticker related conversion.", |
| "apscheduler": "Used in autopic/nightmode (scheduling tasks.)", |
| |
| } |
|
|
| APT_PACKAGES = ["ffmpeg", "neofetch", "mediainfo"] |
|
|
| DISCLAIMER_TEXT = "" |
|
|
| COPYRIGHT = f"Β©οΈ TeamUltroid {datetime.now().year}" |
|
|
| HEADER = f"""{Fore.MAGENTA} |
| ββ ββββ ββ ββ |
| ββ ββββ ββββ ββ |
| ββ ββββ βββββββββββββββββ |
| ββ ββββ ββ ββββββββ β£ββββ |
| ββββββββ βββββ ββββββββββ |
| ββββββββ βββββ ββββββββββ\n{Fore.RESET} |
| """ |
|
|
| INFO_TEXT = f""" |
| {Fore.GREEN}# Important points to know. |
| |
| {Fore.YELLOW}1. This script will just install basic requirements because of which some command whose requirements are missing won't work. You can view all optional requirements in (./resources/startup/optional-requirements.txt) |
| |
| 2. You can install that requirement whenever you want with 'pip install' (a very basic python+bash knowledge is required.) |
| |
| 3. Some of the plugins are disabled for 'Termux Users' to save resources (by adding in EXCLUDE_OFFICIAL). |
| - Read More - https://t.me/UltroidUpdates/36 |
| - Also, way to enable the disabled plugins is mentioned in that post. |
| |
| # Disabled Plugins Name |
| - autocorrect - compressor |
| - Gdrive - instagram |
| - nsfwfilter - glitch |
| - pdftools - writer |
| - youtube - megadl |
| - autopic - nightmode |
| - blacklist - forcesubscribe |
| |
| 4. You can't use 'VCBOT' on Termux. |
| |
| 5. You can't use 'MongoDB' on Termux (Android). |
| {Fore.RESET} |
| * Hope you are smart enought to understand. |
| * Enter 'A' to Continue, 'E' to Exit..\n |
| """ |
|
|
|
|
| def ask_and_wait(text, header: bool = False): |
| if header: |
| text = with_header(text) |
| print(text + "\nPress 'ANY Key' to Continue or 'Ctrl+C' to exit...\n") |
| input("") |
|
|
|
|
| def with_header(text): |
| return HEADER + "\n\n" + text |
|
|
|
|
| def yes_no_apt(): |
| yes_no = input("").strip().lower() |
| if yes_no in ["yes", "y"]: |
| return True |
| elif yes_no in ["no", "n"]: |
| return False |
| print("Invalid Input\nRe-Enter: ") |
| return yes_no_apt() |
|
|
|
|
| def ask_process_info_text(): |
| strm = input("").lower().strip() |
| if strm == "e": |
| print("Exiting...") |
| exit(0) |
| elif strm != "a": |
| print("Invalid Input") |
| print("Enter 'A' to Continue or 'E' to exit...") |
| ask_process_info_text() |
|
|
|
|
| def ask_process_apt_install(): |
| strm = input("").lower().strip() |
| if strm == "e": |
| print("Exiting...") |
| exit(0) |
| elif strm == "a": |
| for apt in APT_PACKAGES: |
| print(f"* Do you want to install '{apt}'? [Y/N] ") |
| if yes_no_apt(): |
| print(f"Installing {apt}...") |
| system(f"apt install {apt} -y") |
| else: |
| print(f"- Discarded {apt}.\n") |
| elif strm == "i": |
| names = " ".join(APT_PACKAGES) |
| print("Installing all apt-packages...") |
| system(f"apt install {names} -y") |
| elif strm != "s": |
| print("Invalid Input\n* Enter Again...") |
| ask_process_apt_install() |
|
|
|
|
| def ask_and_wait_opt(): |
| strm = input("").strip().lower() |
| if strm == "e": |
| print("Exiting...") |
| exit(0) |
| elif strm == "a": |
| for opt in OPT_PACKAGES.keys(): |
| print( |
| f"* {Fore.YELLOW}Do you want to install '{opt}'? [Y/N]\n- {OPT_PACKAGES[opt]}" |
| ) |
| if yes_no_apt(): |
| print(f"Installing {opt}...") |
| system(f"pip install {opt}") |
| else: |
| print(f"{Fore.YELLOW}- Discarded {opt}.\n") |
| elif strm == "i": |
| names = " ".join(OPT_PACKAGES.keys()) |
| print(f"{Fore.YELLOW}Installing all packages...") |
| system(f"pip install {names}") |
| elif strm != "s": |
| print("Invalid Input\n* Enter Again...") |
| ask_and_wait_opt() |
|
|
|
|
| def ask_make_env(): |
| strm = input("").strip().lower() |
| if strm in ["yes", "y"]: |
| print(f"{Fore.YELLOW}* Creating .env file..") |
| with open(".env", "a") as file: |
| for var in ["API_ID", "API_HASH", "SESSION", "REDIS_URI", "REDIS_PASSWORD"]: |
| inp = input(f"Enter {var}\n- ") |
| file.write(f"{var}={inp}\n") |
| print("* Created '.env' file successfully! π") |
|
|
| else: |
| print("OK!") |
|
|
|
|
| |
|
|
| clear() |
|
|
| print( |
| f""" |
| {Fore.BLACK}{Back.WHITE} _____________ |
| ββ ββ βββ βββββββ ββββββ βββββββ βββ ββββββ |
| β β β β β β β β β β β β β |
| β β β β β ββ ββ β β β β β β β β β |
| β βββ β β β β β ββββββ β β β β β β β |
| β β ββββ β β β ββ β βββ β β βββ β |
| β β β β β β β β β β β β |
| βββββββββββββββββ βββββ βββββ ββββββββββββββββββββββ |
| {Style.RESET_ALL} |
| {Fore.GREEN}- ULTROID Termux Installation - |
| The Main Aim of this script is to deploy Ultroid with basic requirements and save your phone resources. |
| {Fore.RESET} |
| |
| {COPYRIGHT} |
| """ |
| ) |
| print("Press 'Any Key' to continue...") |
| input("") |
| clear() |
|
|
| print(with_header(INFO_TEXT)) |
| ask_process_info_text() |
|
|
| clear() |
|
|
| print(with_header("Installing Mandatory requirements...")) |
| all_ = " ".join(MANDATORY_REQS) |
| system(f"pip install {all_}") |
|
|
| clear() |
| print( |
| with_header( |
| f"\n{Fore.GREEN}# Moving toward Installing Apt-Packages{Fore.RESET}\n\n" |
| ) |
| ) |
| print("---Enter---") |
| print(" - A = 'Ask Y/N for each'.") |
| print(" - I = 'Install all'") |
| print(" - S = 'Skip Apt installation.'") |
| print(" - E = Exit.\n") |
| ask_process_apt_install() |
|
|
| clear() |
| print( |
| with_header( |
| f""" |
| {Fore.YELLOW}# Installing other non mandatory requirements. |
| (You can Install them, if you want command using them to work!){Fore.RESET} |
| |
| {'- '.join(list(OPT_PACKAGES.keys()))} |
| |
| Enter [ A = Ask for each, I = Install all, S = Skip, E = Exit]""" |
| ) |
| ) |
| ask_and_wait_opt() |
|
|
| print(f"\n{Fore.RED}#EXTRA Features...\n") |
| print(f"{Fore.YELLOW}* Do you want to get Ultroid Logs in Colors? [Y/N] ") |
| inp = input("").strip().lower() |
| if inp in ["yes", "y"]: |
| print(f"{Fore.GREEN}*Spoking the Magical Mantras*") |
| system("pip install coloredlogs") |
| else: |
| print("Skipped!") |
|
|
| clear() |
| if not path.exists(".env"): |
| print(with_header("# Do you want to move toward creating .env file ? [y/N] ")) |
| ask_make_env() |
|
|
| print(with_header(f"\n{Fore.GREEN}You are all Done! π₯³")) |
| sleep(0.2) |
| print(f"Use 'bash startup' to try running Ultroid.{Fore.RESET}") |
| sleep(0.5) |
| print( |
| "\nYou can head over to @UltroidSupportChat, if you get stuck somewhere, and need help." |
| ) |
| sleep(0.5) |
| print("\nMade with β€οΈ by @TeamUltroid...") |
|
|
| system("pip3 uninstall -q colorama -y") |
|
|