Скрипт дампит сесссию, полезен будет для быстрой выкачки информации с аккаунта
Сохраняет сообщения/фото переписок
Сохраняет сообщения/фото переписок
Python:
from pyrogram import Client
from pyrogram.enums import ChatType
from random import randint
import os
import asyncio
api_id =
api_hash = ''
async def writeData(file, data) -> None:
with open(file, "a+", encoding="utf-8") as f:
f.write(str(data) + "\n")
async def getChats(app) -> None:
dump_name = f'dump_{api_id}/'
dialogs = app.get_dialogs()
async for dialog in dialogs:
username = dialog.chat.username
if username is not None:
if dialog.chat.type in [ChatType.CHANNEL]:
await writeData(dump_name + "channels.txt", username)
elif dialog.chat.type in [ChatType.GROUP]:
await writeData(dump_name + "groups.txt", username)
else:
await writeData(dump_name + "users_bots.txt", username)
async def getChatsHistory(app) -> None:
if not os.path.exists(f'dump_{api_id}/userHistory'):
os.mkdir(f'dump_{api_id}/userHistory')
dialogs = app.get_dialogs()
async for dialog in dialogs:
if dialog.chat.type in [ChatType.PRIVATE]:
await parseUser(dialog, app)
print(f"[+] Saved chat history [USER]: {dialog.chat.username}")
async def parseUser(dialog, app) -> bool:
username = dialog.chat.username
counter = 0
f = open(f'dump_{api_id}/userHistory/userChat_{username}.txt', 'a+', encoding='utf-8')
f.write(f"USERNAME: {username}\n")
f.write("-" * 100 + "\n")
async for message in app.get_chat_history(dialog.chat.id):
if message.text is not None:
try:
f.write(str(message.text))
except UnicodeEncodeError:
continue
elif message.photo:
counter+=1
file_id = message.photo.file_id
file_name = f"dump_{api_id}/Photos/photo_{username}_{counter}_{randint(1, 100000)}.jpg"
print(f"[+] Photo with ID: {file_id} succesfuly saved")
await app.download_media(file_id, file_name)
f.write("\n" + "-" * 100 + "\n")
return True
async def main():
async with Client("dump", api_id=api_id, api_hash=api_hash) as app:
app.get_dialogs()
if not os.path.exists(f'dump_{api_id}/'):
os.mkdir(f'dump_{api_id}')
await getChats(app)
await getChatsHistory(app)
asyncio.run(main())