Use Advance BAT to EXE - https://www.battoexeconverter.com/
This script will generate a .desktop file for multiple telegram accounts.
Use Advance BAT to EXE - https://www.battoexeconverter.com/
This script will generate a .desktop file for multiple telegram accounts.
| #!/usr/bin/bash | |
| # Directory Structure | |
| # _BACKUP | |
| # _BASE | |
| echo "Cleanup Previous Backup" | |
| rm -rf _BACKUP telegram-accounts-backup.zip | |
| echo "Setting Up Backup Directory" | |
| mkdir _BACKUP | |
| echo "Creating Backups..." | |
| find . -mindepth 1 -maxdepth 1 -type d ! -name _BASE ! -name _BINARY ! -name _BACKUP \ | |
| -exec cp --parents -t _BACKUP \ | |
| {}/TelegramForcePortable/tdata/key_datas \ | |
| {}/TelegramForcePortable/tdata/D877F783D5D3EF8Cs \ | |
| {}/TelegramForcePortable/tdata/D877F783D5D3EF8C/maps \; | |
| echo "Zipping Backup..." | |
| zip -qr telegram-accounts-backup.zip \ | |
| _BACKUP \ | |
| _BASE \ | |
| backup.sh \ | |
| updater.sh; |
| import os | |
| import glob | |
| import sys | |
| # Ensure current working directory is the script's own directory | |
| script_dir = os.path.dirname(os.path.realpath(sys.argv[0])) | |
| os.chdir(script_dir) | |
| print("Generating Desktop Entries...") | |
| # Get all top-level directories excluding _BASE and _BACKUP | |
| dirs = [ | |
| d for d in glob.glob("*/") | |
| if os.path.isdir(d) and d.rstrip("/\\") not in ["_BASE", "_BINARY", "_BACKUP"] | |
| ] | |
| for dir_path in dirs: | |
| dir_path = dir_path.rstrip("/\\") | |
| work_dir = os.path.realpath(os.path.join(dir_path, "TelegramForcePortable")) | |
| desktop_file = os.path.realpath(os.path.join(dir_path, "Telegram.desktop")) | |
| content = f"""[Desktop Entry] | |
| Name=Telegram | |
| Exec=telegram-desktop -noupdate -workdir {work_dir} | |
| Icon=telegram | |
| Type=Application | |
| Terminal=false | |
| StartupWMClass=telegram-desktop | |
| """ | |
| with open(desktop_file, "w") as f: | |
| f.write(content) | |
| # Make it executable | |
| os.chmod(desktop_file, 0o755) | |
| print("Done.") |
| #!/bin/bash | |
| echo "Generating Desktop Entries..." | |
| find . -mindepth 1 -maxdepth 1 -type d ! -name _BASE ! -name _BINARY ! -name _BACKUP | while read -r dir; do | |
| # Create Desktop Entry | |
| work_dir=$(realpath "$dir/TelegramForcePortable") | |
| desktop_file=$(realpath "$dir/Telegram.desktop") | |
| cat > "$desktop_file" <<EOF | |
| [Desktop Entry] | |
| Name=Telegram | |
| Exec=telegram-desktop -noupdate -workdir $work_dir | |
| Icon=telegram | |
| Type=Application | |
| Terminal=false | |
| StartupWMClass=telegram-desktop | |
| EOF | |
| chmod +x "$desktop_file" | |
| done |
| import os | |
| import glob | |
| import shutil | |
| import zipfile | |
| import sys | |
| # Ensure script is running in its own directory | |
| script_dir = os.path.dirname(os.path.realpath(sys.argv[0])) | |
| os.chdir(script_dir) | |
| # Define constants | |
| BACKUP_DIR = "_BACKUP" | |
| BASE_DIR = "_BASE" | |
| BINARY_DIR = "_BINARY" | |
| ZIP_FILE = "telegram-accounts-backup.zip" | |
| print("Cleanup Previous Backup") | |
| # Remove previous backup | |
| if os.path.exists(BACKUP_DIR): | |
| shutil.rmtree(BACKUP_DIR) | |
| if os.path.exists(ZIP_FILE): | |
| os.remove(ZIP_FILE) | |
| print("Setting Up Backup Directory") | |
| os.makedirs(BACKUP_DIR, exist_ok=True) | |
| print("Creating Backups...") | |
| # Match all directories with TelegramForcePortable/tdata under them | |
| tdata_dirs = glob.glob("*/TelegramForcePortable/tdata") | |
| for tdata_path in tdata_dirs: | |
| # Skip _BASE and _BACKUP | |
| base_folder = tdata_path.split(os.sep)[0] | |
| if base_folder in [BASE_DIR, BINARY_DIR, BACKUP_DIR]: | |
| continue | |
| targets = [ | |
| os.path.join(tdata_path, "key_datas"), | |
| os.path.join(tdata_path, "D877F783D5D3EF8Cs"), | |
| os.path.join(tdata_path, "D877F783D5D3EF8C", "maps") | |
| ] | |
| for target in targets: | |
| if os.path.exists(target): | |
| rel_path = os.path.relpath(target, ".") | |
| dest_path = os.path.join(BACKUP_DIR, rel_path) | |
| os.makedirs(os.path.dirname(dest_path), exist_ok=True) | |
| if os.path.isdir(target): | |
| shutil.copytree(target, dest_path) | |
| else: | |
| shutil.copy2(target, dest_path) | |
| print("Zipping Backup...") | |
| def zipdir(zipf, path, arc_prefix=""): | |
| for root, _, files in os.walk(path): | |
| for file in files: | |
| file_path = os.path.join(root, file) | |
| arcname = os.path.join(arc_prefix, os.path.relpath(file_path, path)) | |
| zipf.write(file_path, arcname) | |
| with zipfile.ZipFile(ZIP_FILE, 'w', zipfile.ZIP_DEFLATED) as zipf: | |
| zipdir(zipf, BACKUP_DIR, "_BACKUP") | |
| zipdir(zipf, BASE_DIR, "_BASE") | |
| for script in ["backup.py", "updater.py"]: | |
| if os.path.exists(script): | |
| zipf.write(script) | |
| print("Done.") |
| @echo off | |
| set "workdir=%cd%\TelegramForcePortable" | |
| start "Telegram Desktop" "..\_BINARY\Telegram.exe" -noupdate -workdir "%workdir%" | |
| exit |
| import os | |
| import shutil | |
| import sys | |
| # Ensure current working directory is the script's directory | |
| script_dir = os.path.dirname(os.path.realpath(sys.argv[0])) | |
| os.chdir(script_dir) | |
| print("Copying Telegram.exe...") | |
| # Path to the launcher executable | |
| launcher_src = os.path.realpath(os.path.join("_BASE", "Telegram.exe")) | |
| # Ensure the launcher exists | |
| if not os.path.isfile(launcher_src): | |
| print(f"Launcher not found: {launcher_src}") | |
| sys.exit(1) | |
| # Iterate through all top-level directories | |
| for dir_name in os.listdir("."): | |
| if os.path.isdir(dir_name) and dir_name not in ["_BASE", "_BINARY", "_BACKUP"]: | |
| dest_path = os.path.join(dir_name, "Telegram.exe") | |
| shutil.copy2(launcher_src, dest_path) | |
| print(f"Copied to: {dest_path}") | |
| print("Done.") |