# This is a sample Python script.
# Press ⌃R to execute it or replace it with your code.
# Press Double ⇧ to search everywhere for classes, files, tool windows, actions, and settings.
import gradio as gr
import time
import random
import math
import pandas as pd
import openai
import os
from display_json import get_podcast
from invoke_rss import get_rss_output, get_recommendations
from search_recommend import search_chat_respond
with gr.Blocks(theme='bethecloud/storj_theme', css=".gradio-container {background: url('file=image.png');background-size: cover}") as demo:
gr.Markdown("""
PodcastPulse: Unveiling Insights
Can be used to search and get recommended about podcasts, process newsletter insights over podcasts etc.
""")
with gr.Tabs():
with gr.TabItem("Search Podcasts and get their RSS feeds"):
with gr.Accordion("Open for Search"):
with gr.Box():
gr.Markdown(
"""
### Search Podcasts and get their RSS feeds -- Currently Not Enabled as ListenNotes only offers limited free API calls/month
""")
with gr.Column():
normal_chatbot = gr.Chatbot()
normal_msg = gr.Textbox()
normal_clear = gr.Button("Clear")
normal_msg.submit(search_chat_respond, [normal_msg, normal_chatbot], [normal_msg, normal_chatbot])
normal_clear.click(lambda: None, None, normal_chatbot, queue=False)
with gr.TabItem("PreProcessed Podcasts"):
with gr.Box():
gr.Markdown(
"""
### PreProcessed Podcasts
""")
with gr.Column():
dropdown_few = gr.Dropdown(["In Machines We trust - MIT",
"TWIML",
],
label="Select Podcast")
btn = gr.Button("See")
with gr.Row().style(equal_height=True):
Title = gr.Textbox(label="Title")
Episode_Name = gr.Textbox(label="Episode Name")
Episode_Image = gr.Image(label="Episode Image")
podcast_summary = gr.Textbox(label="Summary")
with gr.Row().style(equal_height=True):
podcast_guest = gr.Textbox(label="podcast guest")
podcast_guest_org = gr.Textbox(label="Podcast Guest Organization")
podcast_guest_title = gr.Textbox(label="Guest Title")
podcast_guest_wikipedia = gr.Textbox(label="Guest Wikipedia Info")
podcast_highlights = gr.Textbox(label="Highlights")
podcast_key_moments = gr.Textbox(label="Key Moments and Key Topics")
with gr.Accordion("Open for Full Dialog Transcript"):
podcast_gpt_transcript = gr.Textbox()
btn.click(fn=get_podcast, inputs=dropdown_few, outputs=[Title,Episode_Name,Episode_Image,podcast_summary, podcast_guest, podcast_guest_org, \
podcast_guest_title, podcast_guest_wikipedia,podcast_highlights, podcast_key_moments, \
podcast_gpt_transcript])
with gr.TabItem("Process New Podcast using RSS feed"):
with gr.Accordion("Open to process insights on a Podcast"):
with gr.Box():
gr.Markdown(
"""
### Get details related to an RSS feed --Currently diabled due to OpenAI rate cost issues do ping me on slack if you wanna check something out
""")
with gr.Column():
#rss_feed = gr.Textbox(label="Enter Rss Feed here")
podcast_id_text = gr.Textbox(label="Enter Podcast ID here")
# btn_2 = gr.Button("See")
# with gr.Row().style(equal_height=True):
# Title_2 = gr.Textbox(label="Title")
# Episode_Name_2 = gr.Textbox(label="Episode Name")
# Episode_Image_2 = gr.Image(label="Episode Image")
# podcast_summary_2 = gr.Textbox(label="Summary")
# with gr.Row().style(equal_height=True):
# podcast_guest_2 = gr.Textbox(label="podcast guest")
# podcast_guest_org_2 = gr.Textbox(label="Podcast Guest Organization")
# podcast_guest_title_2 = gr.Textbox(label="Guest Title")
# podcast_guest_wikipedia_2 = gr.Textbox(label="Guest Wikipedia Info")
# podcast_highlights_2 = gr.Textbox(label="Highlights")
# podcast_key_moments_2 = gr.Textbox(label="Key Moments and Key Topics")
# with gr.Accordion("Open for Full Dialog Transcript"):
# podcast_gpt_transcript_2 = gr.Textbox()
recommend_chatbot = gr.Chatbot(label="See recommendations here")
btn_recommend = gr.Button("Get Recommendations")
# btn_2.click(fn=get_rss_output, inputs=rss_feed,
# outputs=[Title_2, Episode_Name_2, Episode_Image_2, podcast_summary_2, podcast_guest_2,
# podcast_guest_org_2, \
# podcast_guest_title_2, podcast_guest_wikipedia_2, podcast_highlights_2,
# podcast_key_moments_2, \
# podcast_gpt_transcript_2])
btn_recommend.click(fn=get_recommendations, inputs=[podcast_id_text,recommend_chatbot], outputs= recommend_chatbot)
if __name__ == "__main__":
demo.queue(concurrency_count=1, api_open=False)
demo.launch(debug=True, share=False)