Files
service-finder/backend/app/scripts/discovery_bot.py

38 lines
1.8 KiB
Python
Executable File

import asyncio
import httpx
from sqlalchemy import text
from app.db.session import engine
from datetime import datetime
async def log_discovery(conn, category, brand, model, action):
await conn.execute(text("""
INSERT INTO data.bot_discovery_logs (category, brand_name, model_name, action_taken)
VALUES (:c, :b, :m, :a)
"""), {"c": category, "b": brand, "m": model, "a": action})
async def run_discovery():
async with engine.begin() as conn:
print(f"🚀 Jármű felfedezés indul: {datetime.now()}")
# Jelenleg a CAR kategóriára fókuszálunk egy külső API segítségével (pl. NHTSA - Ingyenes)
# Itt egy példa, hogyan bővül dinamikusan a rendszer
async with httpx.AsyncClient() as client:
# Autók lekérése
response = await client.get("https://vpic.nhtsa.dot.gov/api/vehicles/getallmakes?format=json")
if response.status_code == 200:
makes = response.json().get('Results', [])[:100] # Tesztként az első 100
for make in makes:
brand_name = make['Make_Name'].strip()
# Megnézzük, megvan-e már
res = await conn.execute(text("SELECT id FROM data.vehicle_brands WHERE name = :n"), {"n": brand_name})
if not res.scalar():
await conn.execute(text("INSERT INTO data.vehicle_brands (category_id, name) VALUES (1, :n)"), {"n": brand_name})
await log_discovery(conn, "CAR", brand_name, "ALL", "NEW_BRAND")
print(f"✨ Új márka találva: {brand_name}")
await conn.commit()
print("✅ Bot futása befejeződött.")
if __name__ == "__main__":
asyncio.run(run_discovery())