import os import time import requests import streamlit as st API_URL = "https://api-inference.huggingface.co/models/pere/nb-nn-translation" def translate(text, wait=True): headers = {"Authorization": f"Bearer {os.environ['BEARER']}"} payload = { "inputs": text, "options": { "wait_for_model": not wait } } response = requests.post(API_URL, headers=headers, json=payload) json_response = response.json() if (isinstance(json_response, dict) and "error" in json_response and "estimated_time" in json_response): st.write(json_response) if wait: with st.spinner(json_response["error"]): bar = st.progress(0) time_to_load = int(json_response["estimated_time"]) + 1 for progress in range(time_to_load): bar.progress(progress / time_to_load) time.sleep(1) bar.empty() return translate(text, wait=False) else: return "We could not load the model" elif (isinstance(json_response, list) and "translation_text" in json_response[0]): return json_response[0]["translation_text"] else: return f"Oops, something went wrong: {str(json_response)}" st.set_page_config( page_title='Norwegian Bokmål to Nynorsk', page_icon='translator-icon.png', ) st.title("Bokmål ⇔ Nynorsk") st.sidebar.write(""" # Sample text: ### Nynorsk Dette er ei tekst. ### Bokmål Dette er en tekst. """) masked_texts = [ "Min tekst", "Din tekst" ] input_text = st.sidebar.selectbox("Select a Text", options=masked_texts) text = st.text_area("Enter text:", input_text, height=None, max_chars=None, key=None, help="Enter your text here", ) if st.button('Translate'): if str(text).strip() == "": st.warning('Please **enter text** for translation') else: st.info(str(translate(text)))