Spaces:
Runtime error
Runtime error
import requests | |
import streamlit as st | |
ENV = "staging" | |
if ENV == "dev": | |
AUTOCOMPLETE_BASE_URL = "http://localhost:8000" | |
elif ENV == "staging": | |
AUTOCOMPLETE_BASE_URL = "https://off:[email protected]" | |
else: | |
AUTOCOMPLETE_BASE_URL = "https://search.openfoodfacts.org" | |
AUTOCOMPLETE_URL = f"{AUTOCOMPLETE_BASE_URL}/autocomplete" | |
def send_autocomplete_request(q: str, lang: str, taxonomy_names: list[str], size: int): | |
return requests.get( | |
AUTOCOMPLETE_URL, | |
params={ | |
"q": q, | |
"lang": lang, | |
"taxonomy_names": ",".join(taxonomy_names), | |
"size": size, | |
}, | |
).json() | |
def run( | |
query: str, | |
taxonomy_names: list[str], | |
lang: str, | |
size: int, | |
): | |
response = send_autocomplete_request(query, lang, taxonomy_names, size) | |
took = response["took"] | |
timed_out = response["timed_out"] | |
st.markdown("---") | |
st.markdown(f"Took: {took} ms") | |
if timed_out: | |
st.warning("Request timed out!") | |
options = response["options"] | |
options = [ | |
{"text": o["text"], "id": o["id"], "taxonomy": o["taxonomy_name"]} | |
for o in options | |
] | |
st.markdown("### Results") | |
st.table(options) | |
st.markdown("### Debug information") | |
st.write(response["debug"]) | |
st.title("Search autocomplete demo") | |
st.markdown( | |
"This is a demo of the search autocomplete feature, that searches in the taxonomy names and synonyms." | |
) | |
query = st.text_input("query", help="Query to search for", value="chocolate").strip() | |
taxonomy_names = st.multiselect( | |
"taxonomy names", | |
["category", "label", "ingredient", "allergen", "brand"], | |
default=["category", "label", "ingredient", "brand"], | |
) | |
lang = st.selectbox("language", ["en", "fr", "it", "es", "nl", "de"], index=0) | |
size = st.number_input( | |
"number of results", value=10, min_value=1, max_value=500, step=1 | |
) | |
if query: | |
run(query, taxonomy_names, lang, size) | |