Spaces:
Runtime error
Runtime error
import streamlit as st | |
import os | |
from init_env import init_env | |
from selenium_parser import extract_url, load_driver, scrape_page | |
from chatgpt import get_models, query | |
try: | |
from dotenv import load_dotenv | |
load_dotenv(".env") | |
api_key = os.getenv("OPENAI_API_KEY") | |
except ImportError: | |
api_key = None | |
def init(): | |
if api_key: | |
print("LOCAL TEST") | |
else: | |
init_env() | |
def get_driver(): | |
return load_driver() | |
def run(): | |
driver = get_driver() | |
url_reviews = extract_url(url) if extract else url | |
try: | |
reviews = scrape_page(driver, url_reviews, page_count=page_count, wait_time=wait_time) | |
except Exception as e: | |
st.write(e) | |
st.write("Page loaded:") | |
st.image(driver.get_screenshot_as_png(), caption="screenshot") | |
raise e | |
st.write("Page loaded:") | |
st.image(driver.get_screenshot_as_png(), caption="screenshot") | |
with st.expander("Reviews"): | |
st.json(reviews) | |
st.markdown(f"Collected {len(reviews)} reviews") | |
# ChatGPT answer | |
stream = query(api_key, reviews, model=selected_model) | |
st.divider() | |
st.markdown(f"**{selected_model}:**") | |
response = "" | |
message_placeholder = st.empty() | |
for chunk in stream: | |
text = chunk.choices[0].delta.content | |
if text is not None: | |
response += text | |
message_placeholder.markdown(response + "β") | |
message_placeholder.markdown(response) | |
init() | |
api_key = st.sidebar.text_input("Enter API key", value=api_key) | |
url = st.text_input("Enter URL", value="https://www.booking.com/hotel/th/queen-boutique.ru.html#tab-reviews") | |
extract = st.checkbox("Extract URL", value=True) | |
if api_key: | |
models = get_models(api_key) | |
selected_model = st.sidebar.selectbox("Select model", models) | |
st.sidebar.divider() | |
page_count = st.sidebar.slider("Number of pages", 0, 10, value=5) | |
wait_time = st.sidebar.number_input("Wait time (sec)", value=4) | |
if st.button("Run"): | |
run() | |