This commit is contained in:
2025-05-23 13:05:20 +08:00
parent fe21d04b1e
commit 7a87db16db
3 changed files with 97 additions and 15 deletions

32
main.py
View File

@@ -16,7 +16,10 @@ from telethon.tl.types import Channel, ChatForbidden, PeerChannel
from telethon.errors import ChannelPrivateError # Добавлен импорт
import logging
from tqdm import tqdm
import getpass # Для безопасного ввода пароля
import getpass
from dotenv import load_dotenv
load_dotenv()
# Настройка логирования
logging.basicConfig(
@@ -29,27 +32,26 @@ logging.basicConfig(
)
logger = logging.getLogger(__name__)
# Конфигурация
API_ID = '1******1'
API_HASH = 'd******************************a'
PHONE_NUMBER = '+7999*******'
# Конфигурация из .env файла
API_ID = os.getenv('API_ID')
API_HASH = os.getenv('API_HASH')
PHONE_NUMBER = os.getenv('PHONE_NUMBER')
# CHANNEL_IDENTIFIER теперь используется как значение по умолчанию при выборе диалога
CONFIG_CHANNEL_IDENTIFIER = '-**********'
CSV_FILENAME = 'telegram_data.csv'
CONFIG_CHANNEL_IDENTIFIER = os.getenv('CONFIG_CHANNEL_IDENTIFIER')
CSV_FILENAME = os.getenv('CSV_FILENAME', 'telegram_data.csv')
# Дополнительные настройки
LIMIT_MESSAGES = None # None для всех сообщений, или число для ограничения
DAYS_LIMIT = None # None для всех сообщений, или число дней назад для ограничения
LIMIT_MESSAGES_STR = os.getenv('LIMIT_MESSAGES')
LIMIT_MESSAGES = int(LIMIT_MESSAGES_STR) if LIMIT_MESSAGES_STR and LIMIT_MESSAGES_STR.strip() else None
DAYS_LIMIT_STR = os.getenv('DAYS_LIMIT') # None для всех сообщений, или число для ограничения
DAYS_LIMIT = int(DAYS_LIMIT_STR) if DAYS_LIMIT_STR and DAYS_LIMIT_STR.strip() else None # None для всех сообщений, или число дней назад для ограничения
async def parse_message(text: str) -> dict | None:
"""
Парсит текстовое сообщение с использованием регулярных выражений.
""" Парсит текстовое сообщение с использованием регулярных выражений.
Args:
text: Текст сообщения.
Returns:
Словарь с извлеченными данными, или None, если не удалось найти необходимые поля.
"""
Словарь с извлеченными данными, или None, если не удалось найти необходимые поля. """
raw_text_preview = text[:250] + ('...' if len(text) > 250 else '') # Немного увеличил превью
result = {'Raw Message': raw_text_preview}