abdulsalam2121
manage list correctly
91cff05
Raw
History Blame Contribute Delete
3.38 kB
#!/usr/bin/env python3
"""
AdultDVDMarketplace Bot β€” Login & Open Target URL
Usage:
python main.py --url "https://..."
python main.py
"""
import argparse
import sys
from pathlib import Path
from config import BotConfig, DEFAULT_TARGET_URL, HARDCODED_USERNAME, HARDCODED_PASSWORD
from logger_setup import setup_logger
from browser_session import BrowserSession
from auth_handler import AuthHandler
from modify_listings_updater import update_wo_case_listing_prices
def build_parser() -> argparse.ArgumentParser:
p = argparse.ArgumentParser(
description="Log in to AdultDVDMarketplace and open target URL",
formatter_class=argparse.RawDescriptionHelpFormatter,
epilog=(
"Examples:\n"
" python main.py --url \"https://www.adultdvdmarketplace.com/xcart/adult_dvd/modify_listings.php\"\n"
" python main.py\n"
),
)
p.add_argument("--url", default=DEFAULT_TARGET_URL, help="Target URL to open after login")
p.add_argument("--headless", action="store_true", help="Run browser headless (no window)")
p.add_argument("--timeout", type=int, default=30000, help="Browser timeout ms (default: 30000)")
return p
def main() -> None:
args = build_parser().parse_args()
Path("logs").mkdir(exist_ok=True)
logger = setup_logger()
logger.info("=" * 60)
logger.info("AdultDVDMarketplace Login Bot")
logger.info("=" * 60)
logger.info(f"Target URL : {args.url}")
logger.info(f"Headless : {args.headless}")
config = BotConfig(
headless=args.headless,
timeout=args.timeout,
)
session = BrowserSession(
headless=config.headless,
state_dir=config.state_dir,
timeout=config.timeout,
)
try:
session.start()
# ── Phase 1: Authenticate ────────────────────────────────────────
logger.info("")
logger.info("Phase 1 β–Ά Authentication")
auth = AuthHandler(session, HARDCODED_USERNAME, HARDCODED_PASSWORD)
if not auth.ensure_authenticated():
logger.error("Authentication failed β€” aborting")
sys.exit(1)
# ── Phase 2: Open target page ────────────────────────────────────
logger.info("")
logger.info("Phase 2 β–Ά Opening target page")
if session.goto(args.url):
logger.info(f"Opened: {args.url}")
print(f"\n Opened β†’ {args.url}")
else:
logger.error("Failed to open target page β€” aborting")
sys.exit(1)
logger.info("")
logger.info("Phase 3 - Updating w/o case listing prices")
result = update_wo_case_listing_prices(session.page, dashboard_url=args.url)
logger.info(
"Update complete: matched=%s, updated=%s, failed=%s, pages=%s",
result["matched"],
result["updated"],
result["failed"],
result["pages_scanned"],
)
logger.info("CSV saved: %s", result["csv_path"])
except Exception as exc:
logger.error(f"Unexpected error: {exc}", exc_info=True)
sys.exit(1)
finally:
session.stop()
print("\n Done.")
if __name__ == "__main__":
main()