/
makk
/
Stone_parser
Обзор
Документация
Войти
/
makk
/
Stone_parser
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
config.py
157 строк
5 KB
makk
stone_monitor
28 май 2026, 09:45
Верифицирован
28 май 2026, 09:45
06d9882
Код
Авторство
О чём код?
""" Stone Monitor — конфигурация бота-парсера упоминаний девелопера Stone. Каналы разбиты по категориям. """ import os from datetime import datetime from dotenv import load_dotenv # Загружаем .env из папки stone_monitor (рядом с этим файлом) load_dotenv(os.path.join(os.path.dirname(os.path.abspath(__file__)), ".env")) # === API КЛЮЧИ === APIFY_API_TOKEN = os.getenv("APIFY_API_TOKEN") OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") GEMINI_API_KEY = os.getenv("GEMINI_API_KEY") TG_BOT_TOKEN = os.getenv("TG_BOT_TOKEN_STONE") TG_CHAT_ID = int(os.getenv("TG_CHAT_ID", "0")) # === КАНАЛЫ ПО КАТЕГОРИЯМ === # Топ рынка недвижимости — упоминания Stone в постах и комментариях TOP_REALTY_CHANNELS = [ "Jelezobetonniyzames", "filatofff", "propertyinsider", "startyprodazh", "novostroyman", "NeSobyanin", "atsogoev", "nporaschetu", "iliilitop", "stroi_news", "m0n1ch", "ggreat_of_development", "labirint_investora", "dvizhpronedvizh", "moscow_stroi", "uragankuznetsov", "cotlovan_contrust", "archivajno", ] # СМИ — публикуют новости компании MEDIA_CHANNELS = [ "CREconsultant", "ria_realty", "CRERussia", "stroi_mos_ru", "forbesrussia", "realty_rbc", "arendator_ru", "interiorplusdesign", "ahouseproject", ] # Конкуренты — мониторим их каналы на предмет упоминаний Stone COMPETITOR_CHANNELS = [ "pioneergroupofcompanies", "mrgroupoffice", "levelru", "gk_samolet", "Donstroymsk", "dogma_official", "sminex_developer", "brusnikacompany", "pik_ru", "forma_realty", "MR_development", ] # Консультанты — совместные исследования/мероприятия CONSULTANT_CHANNELS = [ "cmwp_channel", "CORE_XP", "ibcrealestate", "leaseandsale", "ricci_ru", ] # Архитектурные бюро — наши партнёры ARCHITECT_CHANNELS = [ "above_moscow", "parsec_architects", "kleinewelt_architekten", "arch_wall", ] # Дополнительные каналы — расширенный мониторинг EXTRA_CHANNELS = [ "gradpolitica_mos", "nedvizhna24", "domostroy_channel", "moscowlenta", "ogo_nedviga", "nedvizha", "Bevzenkocom", "pro_smarent", "tribe_russia", "avito_cre", "sysoevfm", "investclubBoyko", "TorbosovLife", "arendator_ru", "wewall_ru", "remain_official", "tlp_ab", "ab_basis", "ahouseproject", "indstudio", ] # === СВОДНЫЙ СПИСОК (без дубликатов) === ALL_CHANNELS = list(dict.fromkeys( TOP_REALTY_CHANNELS + MEDIA_CHANNELS + COMPETITOR_CHANNELS + CONSULTANT_CHANNELS + ARCHITECT_CHANNELS + EXTRA_CHANNELS )) # === КАТЕГОРИИ ДЛЯ ОТЧЁТА === CHANNEL_CATEGORIES = { "top_realty": ("Топ рынка недвижимости", TOP_REALTY_CHANNELS), "media": ("СМИ", MEDIA_CHANNELS), "competitors": ("Конкуренты", COMPETITOR_CHANNELS), "consultants": ("Консультанты", CONSULTANT_CHANNELS), "architects": ("Архбюро", ARCHITECT_CHANNELS), "extra": ("🔖 Дополнительно", EXTRA_CHANNELS), } # === НАСТРОЙКИ СБОРА === APIFY_TG_SCRAPER = "ahaham_bytiz/telegram-channel-scraper" # TODO: сегментировать каналы по среднесуточному кол-ву сообщений на 3 бакета: # Бакет 1 (1–3 msg/сут): maxMessagesPerChannel = 3 # Бакет 2 (4–10 msg/сут): maxMessagesPerChannel = 7 # Бакет 3 (10+ msg/сут): maxMessagesPerChannel = 12 # Это сэкономит лимиты Apify. MAX_ITEMS_PER_CHANNEL = 7 # Max постов на канал (пока 7 для всех, потом — по бакетам) APIFY_TIMEOUT = 300 # Таймаут Apify actor MIN_TEXT_LENGTH = 30 # Минимальная длина текста (фильтр мусора) # === НАСТРОЙКИ AI === AI_TEMPERATURE = 0.1 AI_MAX_TOKENS = 4096 # Gemini 2.5 Flash — быстрый и дешёвый для саммари AI_MODEL = "gemini" GEMINI_MODEL_ID = "gemini-2.5-flash" OPENAI_MODEL_ID = "gpt-4o" # === РАСПИСАНИЕ === AUTO_REPORT_HOUR = int(os.getenv("AUTO_REPORT_HOUR", "9")) AUTO_REPORT_MINUTE = int(os.getenv("AUTO_REPORT_MINUTE", "0")) AUTO_REPORT_TZ = os.getenv("AUTO_REPORT_TZ", "Europe/Moscow") # === КЭШ / ДЕДУПЛИКАЦИЯ === CACHE_DB_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), "cache.db") CACHE_TTL_DAYS = 7 # === НАСТРОЙКИ TELEGRAM === TG_PARSE_MODE = "HTML" TG_DISABLE_WEB_PREVIEW = True