File size: 1,600 Bytes
b787616
 
d9b4271
14f90e3
ea3872d
b787616
82e5d3a
b787616
0b21467
 
 
 
 
b787616
 
50e3646
d9b4271
 
b787616
 
 
 
8ceea03
b787616
 
ea3872d
14f90e3
50e3646
 
 
 
 
8ceea03
50e3646
b787616
0ff4e79
 
 
 
ea3872d
0ff4e79
ea3872d
8ceea03
82e5d3a
 
14f90e3
 
d9b4271
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import streamlit as st
import pandas as pd
import streamlit_common.footer
import streamlit_common.lib as lib

mslist_path = "output/middleschool.csv"
number_shown_results = 20

st.set_page_config(
    page_title="Middle School | Card Search",
    page_icon="🃏",
    layout="wide",
)
st.write(
    """
    # Middle School Card Search

    Enter any English or Japanese text to find all Middle School legal card titles which include it.
    """
)

mslist_df = pd.read_csv(mslist_path)
mslist_df.fillna("", inplace=True)
st.write(mslist_df.shape[0], "cards are legal")

name_input = st.text_input(f"Search by card name").strip()
exact_match = lib.get_legal_cardnames(name_input, mslist_df)
results_en_df = mslist_df[
    mslist_df["name"].str.contains(name_input.lower(), case=False)
]
results_ja_df = mslist_df[
    mslist_df["name_ja"].str.contains(name_input.lower(), case=False)
]
results_df = results_en_df.merge(results_ja_df, how="outer")
if name_input:
    if exact_match[0]:
        cardname = exact_match[1]
        if exact_match[2] is not None:
            cardname = f"{cardname} / {exact_match[2]}"
        st.write(
            f"✅ [{cardname}]({lib.compose_scryfall_url(exact_match[1])}) is an exact match"
        )
    st.write(results_df.shape[0], f'cards found by "{name_input}"')
    if results_df.shape[0] > number_shown_results:
        st.write(f"Top {number_shown_results} results:")
    results_df["link"] = results_df["name"].apply(lib.compose_scryfall_url)
    results_df[:number_shown_results].transpose().apply(lib.row_to_link)

streamlit_common.footer.write_footer()