🐐
This commit is contained in:
63
backend/give_card.py
Normal file
63
backend/give_card.py
Normal file
@@ -0,0 +1,63 @@
|
||||
"""
|
||||
Give a user a specific card generated from a Wikipedia page title.
|
||||
|
||||
Usage:
|
||||
python give_card.py <username> <page_title>
|
||||
|
||||
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]))
|
||||
Reference in New Issue
Block a user