Alejandro Cremades
Document the functions
dfa94a9
raw
history blame
2.09 kB
import streamlit as st
import pandas as pd
import re
import urllib.parse
def compose_scryfall_url(cardname: str) -> str:
"""Compose a Scryfall URL from the passed card name"""
return f"https://scryfall.com/search?q=prefer%3Aoldest%20!%22{urllib.parse.quote_plus(cardname)}%22"
def row_to_link(row: pd.DataFrame) -> None:
"""Prints a list item with a Scryfall link for the card in the row passed"""
cardname = row["name"]
if row.name_ja is not "":
cardname = f"{cardname} / {row.name_ja}"
st.markdown(f"- [{cardname}]({row.link})")
def get_legal_cardnames(cardname: str, mslist_df: pd.DataFrame) -> list:
"""Returns a list with the English and Japanese names for the card
if there is an exact match, or `None` if there is not.
"""
english_match = mslist_df[mslist_df["name"].str.lower() == cardname.lower()]
cardname_en_list = None
if english_match.shape[0] > 0:
cardname_en_list = english_match["name"].to_list()
cardname_ja_list = english_match["name_ja"].to_list()
japanese_match = mslist_df[mslist_df["name_ja"] == cardname]
if japanese_match.shape[0] > 0:
cardname_en_list = japanese_match["name"].to_list()
cardname_ja_list = japanese_match["name_ja"].to_list()
if cardname_en_list is not None and len(cardname_en_list) > 0:
return [
cardname_en_list[0] or None,
cardname_ja_list[0] or None,
]
return None
def remove_number_of_copies(line: str) -> str:
"""Remove the number of copies in front of the card name
from a line in a card list
"""
if len(line.strip()) < 1:
return None
pattern = re.compile("^([0-9]+) +")
return pattern.sub("", line)
def is_cardname_legal(cardname: str, mslist_df: pd.DataFrame) -> bool:
"""Returns wether a card with exactly the passed name is legal in the format"""
if mslist_df[mslist_df["name"].str.lower() == cardname.lower()].shape[0] > 0:
return True
if mslist_df[mslist_df["name_ja"] == cardname].shape[0] > 0:
return True
return False