Разработка парсера SEED-фраз в Telegram на Python | End Way - форум программирования и сливов различных скриптов
  • Присоединяйтесь к нам в телеграм канал! EndWay канал | EndSoft канал | EWStudio канал
  • Хочешь поставить скрипт, но не умеешь?
    А может ты хочешь свой уникальный скрипт?

    Тогда добро пожаловать в нашу студию разработки!

    Телеграм бот: EWStudioBot
    Телеграм канал: EWStudio

Разработка парсера SEED-фраз в Telegram на Python

PAUK

Миддл
Автор темы
30 Июл 2023
51
25
8
В этой статье описывается процесс создания парсера SEED-фраз в Telegram с использованием Python. Для этого применяются библиотеки Telethon для взаимодействия с Telegram API, Pytesseract для оптического распознавания текста (OCR) и Pillow для обработки изображений.

Установка необходимых библиотек:
pip install telethon pytesseract pillow


Установка Tesseract OCR:
1. Скачайте установочный файл с официального репозитория.


2. Установите программу и добавьте путь к tesseract.exe в переменную окружения PATH.


Настройка Telegram API:
1. Зарегистрируйте приложение на my.telegram.org для получения API ID и API Hash.


2. Создайте файл config.py и сохраните в нем полученные значения:

API_ID = 'ВАШ_API_ID' API_HASH = 'ВАШ_API_HASH' SESSION_NAME = 'telegram_parser_session'

Импорт необходимых библиотек:
import os import re from telethon import TelegramClient, events from telethon.tl.types import InputMessagesFilterPhotos, InputMessagesFilterDocument from PIL import Image import pytesseract from io import BytesIO

Регулярное выражение для поиска SEED-фраз:
SEED_REGEX = r'\b(?:\w+\s){11,23}\w+\b'


Инициализация клиента Telethon:
client = TelegramClient(SESSION_NAME, API_ID, API_HASH)

Функция для поиска SEED-фраз в тексте:
def find_seed_phrases(text):[/UWSL][/UWSL][/UWSL][/UWSL] [UWSL][UWSL][UWSL] matches = re.findall(SEED_REGEX, text)[/UWSL][/UWSL][/UWSL] [UWSL][UWSL][UWSL] return matches if matches else []

Функция для извлечения текста из изображений:

def extract_text_from_image(image_bytes):[/B][/UWSL][/B][/UWSL][/B][/UWSL] [UWSL][B][UWSL][B][UWSL][B] image = Image.open(BytesIO(image_bytes))[/B][/UWSL][/B][/UWSL][/B][/UWSL] [UWSL][B][UWSL][B][UWSL][B] return pytesseract.image_to_string(image)


Функция для обработки чата и поиска SEED-фраз:

async def process_chat(chat):[/UWSL][/UWSL][/UWSL] [UWSL][UWSL][UWSL] async for message in client.iter_messages(chat):[/UWSL][/UWSL][/UWSL] [UWSL][UWSL][UWSL] # Поиск SEED-фраз в тексте сообщения[/UWSL][/UWSL][/UWSL] [UWSL][UWSL][UWSL] if message.text:[/UWSL][/UWSL][/UWSL] [UWSL][UWSL][UWSL] seeds = find_seed_phrases(message.text)[/UWSL][/UWSL][/UWSL] [UWSL][UWSL][UWSL] if seeds:[/UWSL][/UWSL][/UWSL] [UWSL][UWSL][UWSL] print(f"[TEXT] Найдены SEED-фразы в чате {chat.title}: {seeds}")[/UWSL][/UWSL][/UWSL] [UWSL][UWSL][UWSL] # Проверка на наличие фото и документов (картинок)[/UWSL][/UWSL][/UWSL] [UWSL][UWSL][UWSL] if message.photo or message.document:[/UWSL][/UWSL][/UWSL] [UWSL][UWSL][UWSL] media = message.photo or message.document[/UWSL][/UWSL][/UWSL] [UWSL][UWSL][UWSL] image_bytes = await client.download_media(media, bytes)[/UWSL][/UWSL][/UWSL] [UWSL][UWSL][UWSL] text = extract_text_from_image(image_bytes)[/UWSL][/UWSL][/UWSL] [UWSL][UWSL][UWSL] seeds = find_seed_phrases(text)[/UWSL][/UWSL][/UWSL] [UWSL][UWSL][UWSL] if seeds:[/UWSL][/UWSL][/UWSL] [UWSL][UWSL][UWSL] print(f"[IMAGE] Найдены SEED-фразы в чате {chat.title}: {seeds}")

Запуск клиента и обработка чатов:

async def main():[/UWSL][/UWSL][/UWSL] [UWSL][UWSL][UWSL] await client.start()[/UWSL][/UWSL][/UWSL] [UWSL][UWSL][UWSL] # Замените 'chat_username' на имя пользователя или ID нужного чата[/UWSL][/UWSL][/UWSL] [UWSL][UWSL][UWSL] chat = await client.get_entity('chat_username')[/UWSL][/UWSL][/UWSL] [UWSL][UWSL][UWSL] await process_chat(chat)[/UWSL][/UWSL][/UWSL] [UWSL][UWSL][UWSL] await client.run_until_disconnected()[/UWSL][/UWSL][/UWSL] [UWSL][UWSL][UWSL]with client:[/UWSL][/UWSL][/UWSL] [UWSL][UWSL][UWSL] client.loop.run_until_complete(main())

Этот скрипт подключается к указанному чату в Telegram, анализирует текстовые сообщения и изображения на наличие SEED-фраз, состоящих из 12 или 24 слов, и выводит найденные фразы в консоль.


UPD 25.12.24 14:03:
Что изменено:

1. Удаление дублей: Список SEED-фраз преобразуется в set внутри find_seed_phrases.


2. Проверка на валидность: Добавлена функция is_valid_seed. В ней вы можете уточнить правила, например, проверять только на соответствие стандартным словам SEED-фраз.


3. Логика обработки текста и изображений: SEED-фразы проверяются на валидность перед выводом.
 
Последнее редактирование:
Like
  • 3
Реакции: 2 users
Активность:
Пока что здесь никого нет