Загрузка...

Небольшой код для работы с большим количеством tdata

Тема в разделе Python создана пользователем НафигСмех 11 мар 2025. 160 просмотров

  1. НафигСмех
    НафигСмех Автор темы 11 мар 2025 57 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()
     
    11 мар 2025 Изменено
    1. Посмотреть предыдущие комментарии (1)
    2. НафигСмех Автор темы
      Temmie, че ты там епта говорил
    3. Temmie
      НафигСмех, кто-то спросил какие скрипты написать я предложил +- похожий на твой
    4. НафигСмех Автор темы
      Temmie, какие скрипты написать?
  2. EsliHochesh
    EsliHochesh 11 мар 2025 Заблокирован(а) 206 4 авг 2023
    это конечно хорошо, но есть же тг клиенты которые позволяют сразу много аккаунтов держать
     
    1. НафигСмех Автор темы
    2. tishavabe
      EsliHochesh, такие клиенты лежат на api, поэтому риск бана высок если будешь там хранить много акков
Top
Загрузка...