import asyncio
import os
import logging
print("!!! DEBUG START !!!")
from sqlalchemy import create_engine
from models import Base
# Setup logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler("logs/scraper.log"),
logging.StreamHandler()
]
)
logger = logging.getLogger("GIS-Scraper")
DATABASE_URL = "sqlite:///data/gis_archive.db"
def init_db():
logger.info("Initializing database...")
engine = create_engine(DATABASE_URL)
Base.metadata.create_all(engine)
logger.info("Database initialized.")
async def check_connectivity():
import aiohttp
target = "https://dom.gosuslugi.ru"
logger.info(f"Checking connectivity to {target}...")
try:
async with aiohttp.ClientSession() as session:
async with session.get(target, timeout=30) as response:
if response.status == 200:
logger.info("✅ GIS ZHKH is accessible.")
return True
else:
logger.warning(f"⚠️ GIS ZHKH returned status {response.status}")
return False
except Exception as e:
logger.error(f"❌ Connection failed: {e}")
return False
async def send_tg_report(message):
token = os.getenv("TELEGRAM_BOT_TOKEN")
chat_id = os.getenv("TELEGRAM_CHAT_ID")
if not token or not chat_id:
return
import aiohttp
url = f"https://api.telegram.org/bot{token}/sendMessage"
payload = {"chat_id": chat_id, "text": message, "parse_mode": "HTML"}
try:
async with aiohttp.ClientSession() as session:
await session.post(url, json=payload)
except Exception as e:
logger.error(f"Failed to send TG report: {e}")
async def main():
init_db()
status = "OK" if await check_connectivity() else "FAILED"
report = f"""
🏛️ GIS ZHKH Archiver: Stage 1 Complete
✅ Среда Docker подготовлена.
✅ База данных SQLite инициализирована.
✅ Коннект к dom.gosuslugi.ru: {status}
🚀 Проект запущен. Следующий этап: реализация Persistent Context для авторизации.
"""
await send_tg_report(report)
logger.info("Stage 1 report sent to Telegram.")
if __name__ == "__main__":
asyncio.run(main())