import sys

sys.path.append('src')

from summarizer import summarize
from data_retrieval import scrape
from data_preprocessing import lda
from gsheets import upload_csv_to_new_worksheet

import joblib
import gradio as gr


def main_orchestrator(num_reddit_posts, num_news_articles, num_youtube_videos, gpt_key, model):
  #scraping
  filename = scrape(num_reddit_posts=num_reddit_posts,
                  num_news_articles=num_news_articles,
                  num_youtube_videos=num_youtube_videos)

  # summarizing
  csv_filename = summarize(filename, gpt_key, model)
  print(csv_filename)

  # topic modeling
  topics, graph1, graph2 = lda(filename)
  print(topics)

  #upload to sheets
  gsheet_status = upload_csv_to_new_worksheet(topics)
  return gsheet_status, topics, graph1, graph2

demo = gr.Interface(
    fn=main_orchestrator,
    inputs=[gr.Number(precision=0, minimum=1, maximum=10), gr.Number(precision=0, minimum=1, maximum=10), gr.Number(precision=0, minimum=1, maximum=10), "text", "text"], # list of inputs that correspond to the parameters of the function.
    outputs=[gr.Textbox(label="Google Sheet Location"), gr.Textbox(label="Topics"), gr.Plot(label="Frequency of Topics"), gr.Plot(label="Top Words in Topics")], # list of outputs that correspond to the returned values in the function.
)
demo.launch()