Загрузка...

Small code for working with a large amount of tdata

Thread in Python created by НафигСмех Mar 11, 2025. 150 views

  1. НафигСмех
    НафигСмех Topic starter Mar 11, 2025 57 Mar 24, 2023
    Позволяет быстро заменять tdata, сразу открывать телеграмм

    Инструкция:
    Создайте папку в корне диска C:\TelegramAccounts
    Закиньте туда tdata для работы, в формате аккаунт1\tdata
    Скопируйте свою текстующую tdata в любое место для того чтобы не потерять

    Python
    import os
    import shutil
    import subprocess
    import sys
    import psutil
    import time
    from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout,
    QPushButton, QLabel, QMessageBox, QListWidget,
    QListWidgetItem)
    from PyQt5.QtCore import Qt

    TELEGRAM_PATH = os.path.expanduser(r"~\AppData\Roaming\Telegram Desktop\Telegram.exe")
    TDATA_WORKING_DIR = os.path.expanduser(r"~\AppData\Roaming\Telegram Desktop")
    TDATA_STORAGE_CLEAR = os.path.expanduser(r"~\AppData\Roaming\Telegram Desktop\tdata")
    TDATA_STORAGE = r"C:\TelegramAccounts"

    class TelegramSwitcher(QMainWindow):
    def __init__(self):
    super().__init__()
    self.init_ui()
    self.load_accounts()

    def init_ui(self):
    self.setWindowTitle("TdataSw")
    self.setGeometry(100, 100, 400, 300)
    central_widget = QWidget()
    self.setCentralWidget(central_widget)
    layout = QVBoxLayout(central_widget)
    layout.addWidget(QLabel("Выберите аккаунт:", self))
    self.account_list = QListWidget(self)
    self.account_list.itemClicked.connect(self.switch_account)
    layout.addWidget(self.account_list)
    refresh_btn = QPushButton("0бновить", self)
    refresh_btn.clicked.connect(self.load_accounts)
    layout.addWidget(refresh_btn)
    exit_btn = QPushButton("Выйти", self)
    exit_btn.clicked.connect(self.close)
    layout.addWidget(exit_btn)

    def load_accounts(self):
    self.account_list.clear()
    if not os.path.exists(TDATA_STORAGE):
    QMessageBox.critical(self, "Ошибка", f"Директория {TDATA_STORAGE} не найдена!")
    return

    accounts = [d for d in os.listdir(TDATA_STORAGE) if os.path.isdir(os.path.join(TDATA_STORAGE, d))]
    if not accounts:
    QMessageBox.warning(self, "Предупреждение", "Нет доступных аккаунтов в директории!")
    return

    for account in accounts:
    item = QListWidgetItem(account)
    item.setTextAlignment(Qt.AlignCenter)
    self.account_list.addItem(item)

    def close_telegram(self):
    for proc in psutil.process_iter(['name']):
    if proc.info['name'] == "Telegram.exe":
    proc.kill()

    def switch_account(self, item):
    account_name = item.text()
    source_path = os.path.join(rf"C:\TelegramAccounts\{account_name}\tdata")

    try:
    self.close_telegram()
    time.sleep(1)
    account_name = item.text()
    source_path = os.path.join(rf"C:\TelegramAccounts\{account_name}\tdata")
    if os.path.exists(TDATA_STORAGE_CLEAR):
    shutil.rmtree(TDATA_STORAGE_CLEAR)
    shutil.copytree(source_path, TDATA_STORAGE_CLEAR)
    subprocess.Popen(TELEGRAM_PATH, shell=True)

    except Exception as e:
    QMessageBox.critical(self, "Ошибка", f"Не удалось переключить аккаунт:\n{str(e)}")

    def closeEvent(self, event):
    reply = QMessageBox.question(self, "Выход", "Также закрыть телеграм?",
    QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
    if reply == QMessageBox.Yes:
    self.close_telegram()
    event.accept()
    else:
    event.accept()

    def main():
    if not os.path.exists(TELEGRAM_PATH):
    print(f"Ошибка: Telegram не найден по пути {TELEGRAM_PATH}")
    return

    if not os.path.exists(TDATA_STORAGE):
    os.makedirs(TDATA_STORAGE)
    print(f"Создана директория для аккаунтов: {TDATA_STORAGE}")

    app = QApplication(sys.argv)
    window = TelegramSwitcher()
    window.show()
    sys.exit(app.exec_())

    if __name__ == "__main__":
    main()
     
    1. View previous comments (1)
    2. НафигСмех Topic starter
      Temmie, че ты там епта говорил
    3. Temmie
      НафигСмех, кто-то спросил какие скрипты написать я предложил +- похожий на твой
    4. НафигСмех Topic starter
      Temmie, какие скрипты написать?
  2. EsliHochesh
    EsliHochesh Mar 11, 2025 Banned 206 Aug 4, 2023
    это конечно хорошо, но есть же тг клиенты которые позволяют сразу много аккаунтов держать
     
    1. tishavabe
      EsliHochesh, такие клиенты лежат на api, поэтому риск бана высок если будешь там хранить много акков
Top
Loading...