Universal Telegram session converter supporting multiple formats (tdata, Telethon, Pyrogram, auth_key)
Project description
tgconvert
🔄 Universal Telegram Session Converter
Библиотека для конвертации сессий Telegram между различными форматами. Поддерживает все популярные форматы: Telethon, Pyrogram, Telegram Desktop (tdata), и строковый формат auth_key.
🎯 Особенности
- ✅ Поддержка всех форматов: Telethon, Pyrogram, tdata, auth_key
- ✅ Автоопределение формата: Не нужно указывать входной формат
- ✅ Собственные парсеры: Не использует существующие библиотеки
- ✅ CLI и API: Используйте как библиотеку или из командной строки
- ✅ Криптография: Полная поддержка шифрования tdata
- ✅ Простота использования: Всего несколько строк кода
📦 Установка
pip install tgconvert
Зависимости
tgconvert автоматически установит необходимые зависимости:
cryptography- для шифрованияtgcrypto- для Telegram криптографииopentele- для корректной работы с форматом tdata
Или из исходников:
git clone https://github.com/yourusername/tgconvert
cd tgconvert
pip install -e .
🚀 Быстрый старт
CLI (Командная строка)
# Конвертировать Telethon → Pyrogram
tgconvert -i session.session -o output.session -if telethon -of pyrogram
# Автоопределение формата
tgconvert -i session.session -o output.session -of pyrogram
# Конвертировать в tdata
tgconvert -i session.session -o ./tdata/ -of tdata
# Конвертировать в auth_key строку
tgconvert -i session.session -o authkey.txt -of authkey
# Получить информацию о сессии
tgconvert -i session.session --info
# Список поддерживаемых форматов
tgconvert --list-formats
Python API
from tgconvert import SessionConverter
# Создать конвертер
converter = SessionConverter()
# Простая конвертация (автоопределение формата)
converter.convert(
input_path="session.session",
output_path="output.session",
output_format="pyrogram"
)
# Конвертация с явным указанием форматов
converter.convert(
input_path="session.session",
output_path="./tdata/",
input_format="telethon",
output_format="tdata"
)
# Получить информацию о сессии
info = converter.get_info("session.session")
print(f"DC ID: {info['dc_id']}")
print(f"User ID: {info['user_id']}")
# Загрузить и сохранить вручную
session_data = converter.load("session.session")
converter.save(session_data, "new_session.session", "pyrogram")
📋 Поддерживаемые форматы
| Формат | Описание | Расширение | Чтение | Запись |
|---|---|---|---|---|
telethon |
Telethon SQLite сессии | .session |
✅ | ✅ |
pyrogram |
Pyrogram SQLite сессии | .session |
✅ | ✅ |
tdata |
Telegram Desktop | tdata/ (папка) |
✅ | ✅* |
authkey |
Строковый формат | .txt или строка |
✅ | ✅ |
* Tdata запись: Для создания полностью рабочей tdata структуры библиотека копирует существующую tdata-папку как шаблон (из accs/tdata или %APPDATA%/Telegram Desktop/tdata) и модифицирует auth_key. Это обеспечивает 100% совместимость с Telegram Desktop.
Формат auth_key
Строковый формат: <auth_key_hex>:<dc_id>
Пример:
a1b2c3d4e5f6...256_hex_bytes...:2
🔧 Продвинутое использование
Работа с SessionData
from tgconvert import SessionConverter, SessionData
converter = SessionConverter()
# Загрузить сессию
session_data = converter.load("session.session")
# Доступ к данным
print(f"Auth Key: {session_data.auth_key.hex()}")
print(f"DC ID: {session_data.dc_id}")
print(f"User ID: {session_data.user_id}")
# Изменить данные
session_data.dc_id = 2
session_data.user_id = 123456789
# Сохранить в разных форматах
converter.save(session_data, "telethon.session", "telethon")
converter.save(session_data, "pyrogram.session", "pyrogram")
converter.save(session_data, "tdata/", "tdata")
converter.save(session_data, "authkey.txt", "authkey")
Создание сессии из auth_key
from tgconvert import SessionData, SessionConverter
# Создать SessionData вручную
session_data = SessionData(
auth_key=bytes.fromhex("a1b2c3..."),
dc_id=2,
user_id=123456789
)
# Сохранить в любом формате
converter = SessionConverter()
converter.save(session_data, "new_session.session", "telethon")
🔐 Безопасность
- ⚠️ Никогда не делитесь сессиями: Они дают полный доступ к аккаунту
- 🔒 Храните безопасно: Используйте шифрование для хранения
- 🚫 Не коммитьте: Добавьте
*.sessionиtdata/в.gitignore
📚 Примеры использования
Пакетная конвертация
import os
from tgconvert import SessionConverter
converter = SessionConverter()
# Конвертировать все .session файлы в tdata
for file in os.listdir("."):
if file.endswith(".session"):
output_dir = f"tdata_{file[:-8]}"
converter.convert(file, output_dir, output_format="tdata")
print(f"Converted {file} -> {output_dir}")
Миграция между библиотеками
from tgconvert import SessionConverter
# Переход с Telethon на Pyrogram
converter = SessionConverter()
# Конвертировать все сессии
sessions = ["user1.session", "user2.session", "bot.session"]
for session in sessions:
new_name = f"pyrogram_{session}"
converter.convert(
input_path=session,
output_path=new_name,
input_format="telethon",
output_format="pyrogram"
)
print(f"✓ Migrated {session}")
🛠️ Разработка
Установка для разработки
git clone https://github.com/yourusername/tgconvert
cd tgconvert
pip install -e ".[dev]"
Запуск тестов
pytest tests/
Форматирование кода
black tgconvert/
🧪 Тестирование
Быстрый запуск всех тестов
# Windows PowerShell
.\run_all_tests.ps1
Отдельные тесты
# Юнит-тесты
C:\Users\kinug\Documents\Projects\tgconvert\.venv\Scripts\python.exe -m pytest tests/ -v
# Ручное тестирование
C:\Users\kinug\Documents\Projects\tgconvert\.venv\Scripts\python.exe manual_test.py
# Финальная проверка
C:\Users\kinug\Documents\Projects\tgconvert\.venv\Scripts\python.exe pre_publish_check.py
Подробное руководство: TESTING_GUIDE.md
📖 Публикация на PyPI
Подробная инструкция по публикации вашей библиотеки на PyPI:
- Полное руководство: PYPI_GUIDE.md
- Быстрая инструкция: PUBLISH_NOW.md
- Тестирование: TESTING_GUIDE.md
🤝 Вклад
Contributions приветствуются! Пожалуйста:
- Fork репозиторий
- Создайте feature branch (
git checkout -b feature/amazing) - Commit изменения (
git commit -m 'Add amazing feature') - Push в branch (
git push origin feature/amazing) - Откройте Pull Request
📄 Лицензия
Этот проект распространяется под лицензией MIT. См. файл LICENSE для подробностей.
⚠️ Дисклеймер
Эта библиотека предназначена только для легального использования. Автор не несет ответственности за любое неправомерное использование. Всегда соблюдайте Terms of Service Telegram.
🔗 Ссылки
- GitHub: https://github.com/yourusername/tgconvert
- PyPI: https://pypi.org/project/tgconvert/
- Issues: https://github.com/yourusername/tgconvert/issues
- Telegram API: https://core.telegram.org/api
📮 Контакты
Если у вас есть вопросы или предложения, создайте Issue на GitHub.
Сделано с ❤️ для сообщества Telegram
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tgconvert-0.1.0.tar.gz.
File metadata
- Download URL: tgconvert-0.1.0.tar.gz
- Upload date:
- Size: 28.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7d07d676d8b6f7e472c9f9617b0fed331330faff5bbf1998dfd59647df3747a3
|
|
| MD5 |
7f41e34de483f19e848b95f3f1608f19
|
|
| BLAKE2b-256 |
68bab3f30e63178afd0b793df996280ba8d41a0d82e840235924ce2822ebbfe3
|
File details
Details for the file tgconvert-0.1.0-py3-none-any.whl.
File metadata
- Download URL: tgconvert-0.1.0-py3-none-any.whl
- Upload date:
- Size: 20.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
89af09026224cdd9caf679e9ecd12f0ab2a39a54c68d7f3ad4b27f94c974283f
|
|
| MD5 |
c85726a9203c81561e8b6c252f0b2fc3
|
|
| BLAKE2b-256 |
e2a4b937564f9eb75737a0240f6d6fed5136a502e65c400dce63765a5d272d26
|