""" Give a user a specific card generated from a Wikipedia page title. Usage: python give_card.py Example: python give_card.py nikolaj "Marie Curie" """ import sys import asyncio from dotenv import load_dotenv load_dotenv() from database import SessionLocal from models import User as UserModel, Card as CardModel from card import _get_specific_card_async import uuid async def main(username: str, page_title: str) -> None: db = SessionLocal() try: user = db.query(UserModel).filter(UserModel.username == username).first() if not user: print(f"Error: user '{username}' not found") sys.exit(1) print(f"Generating card for '{page_title}'...") card = await _get_specific_card_async(page_title) if not card: print(f"Error: could not generate a card for '{page_title}'") sys.exit(1) db_card = CardModel( id=uuid.uuid4(), user_id=user.id, name=card.name, image_link=card.image_link or None, card_rarity=card.card_rarity.name, card_type=card.card_type.name, text=card.text or None, attack=card.attack, defense=card.defense, cost=card.cost, ) db.add(db_card) db.commit() print(f"Gave '{card.name}' ({card.card_rarity.name} {card.card_type.name}) to {username}") print(f" ATK {card.attack} DEF {card.defense} Cost {card.cost}") finally: db.close() if __name__ == "__main__": if len(sys.argv) != 3: print(__doc__) sys.exit(1) asyncio.run(main(sys.argv[1], sys.argv[2]))