77 lines
2.4 KiB
Python
77 lines
2.4 KiB
Python
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"""
|
|
🏛️ <b>GIS ZHKH Archiver: Stage 1 Complete</b>
|
|
|
|
✅ Среда Docker подготовлена.
|
|
✅ База данных SQLite инициализирована.
|
|
✅ Коннект к dom.gosuslugi.ru: <b>{status}</b>
|
|
|
|
🚀 Проект запущен. Следующий этап: реализация Persistent Context для авторизации.
|
|
"""
|
|
await send_tg_report(report)
|
|
logger.info("Stage 1 report sent to Telegram.")
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main())
|