working app
This commit is contained in:
parent
8e69e30387
commit
3057cda8d3
12 changed files with 708 additions and 232 deletions
35
main.py
35
main.py
|
|
@ -45,8 +45,17 @@ async def main():
|
|||
# Initialize state manager
|
||||
state_manager = StateManager(Path("data/state.json"))
|
||||
|
||||
|
||||
# --- Playwright browser/context setup ---
|
||||
playwright = await async_playwright().start()
|
||||
browser = await playwright.chromium.launch(headless=True)
|
||||
browser_context = await browser.new_context(
|
||||
user_agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36"
|
||||
)
|
||||
logger.info("Playwright browser context initialized.")
|
||||
|
||||
# Application handler manages browser/context
|
||||
app_handler = ApplicationHandler(None, state_manager)
|
||||
app_handler = ApplicationHandler(browser_context, state_manager)
|
||||
|
||||
# Set up Telegram bot and inject into handler, passing the main event loop
|
||||
event_loop = asyncio.get_running_loop()
|
||||
|
|
@ -58,8 +67,6 @@ async def main():
|
|||
wg_notifier = WGCompanyNotifier(telegram_bot=telegram_bot, refresh_minutes=10)
|
||||
wg_task = asyncio.create_task(wg_notifier.run())
|
||||
|
||||
await app_handler.init_browser()
|
||||
|
||||
|
||||
try:
|
||||
logger.info(f"Bot is now running. Refreshing every {CHECK_INTERVAL} seconds...")
|
||||
|
|
@ -72,7 +79,22 @@ async def main():
|
|||
continue
|
||||
previous_listings = app_handler.load_previous_listings()
|
||||
if not previous_listings:
|
||||
logger.info(f"First run - saving {len(current_listings)} listings as baseline")
|
||||
logger.info(f"First run - saving {len(current_listings)} listings as baseline and marking as failed applications")
|
||||
# Mark all as failed applications so /retryfailed can be used
|
||||
for listing in current_listings:
|
||||
result = {
|
||||
"listing_id": listing.get("id"),
|
||||
"company": app_handler._detect_company(listing.get("link", "")),
|
||||
"link": listing.get("link"),
|
||||
"timestamp": str(listing.get("timestamp", "")) or str(listing.get("date", "")) or "",
|
||||
"success": False,
|
||||
"message": "First run, not auto-applied. Use /retryfailed to attempt.",
|
||||
"address": listing.get("address", ""),
|
||||
"rooms": listing.get("rooms", ""),
|
||||
"price": listing.get("price", ""),
|
||||
"retries": 0
|
||||
}
|
||||
app_handler.save_application(result)
|
||||
app_handler.save_listings(current_listings)
|
||||
await asyncio.sleep(CHECK_INTERVAL)
|
||||
_flush_rotating_file_handlers()
|
||||
|
|
@ -94,9 +116,8 @@ async def main():
|
|||
except Exception as e:
|
||||
logger.error(f"[MAIN] Error in main loop: {e}")
|
||||
finally:
|
||||
if hasattr(app_handler, 'browser') and app_handler.browser:
|
||||
await app_handler.browser.close()
|
||||
logger.info("Browser closed successfully.")
|
||||
await browser.close()
|
||||
logger.info("Browser closed successfully.")
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue