File size: 4,401 Bytes
f616749
 
 
 
 
 
76b4f1b
4d99705
76b4f1b
2c88b84
76b4f1b
 
 
 
 
 
2c88b84
76b4f1b
2c88b84
76b4f1b
2c88b84
76b4f1b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51ac369
f616749
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import json
import os
import feedparser
import streamlit as st
from functions import *

def main():
    
    st.title("PodcastGPT Dashboard")
    
    st.markdown(
    """
    This app assists busy professionals with transcribing and summarizing Podcasts from [Listen Notes](https://www.listennotes.com/) website by following the below steps:
    - Search for your desired podcast from the Listen Notes website and click on the "RSS" tab to generate a unique link to the podcast. Example shown below: 
    """
    )
    
    col1, col2 = st.columns(2)
    
    with col1:
        
        st.image('RSS.png', caption = 'Click RSS')
    
    with col2:
    
        st.image('RSS_copy.png',caption='Copy RSS Link')
    
    st.markdown(
    """
    - Copy the generated link and paste in the sidebar on the left: 
    """
    )
    
    pods = {}
    
    # Left section - Input fields
    st.sidebar.header("Podcast RSS Feeds")
    
    # Input Box
    podcast_url = st.sidebar.text_input('Please paste the podcast RSS feed link here')
    
    latest_ep_button = st.sidebar.button("Get latest 5 Episodes")
    
    # st.sidebar.markdown("**Note**: Podcast processing can take upto 5 mins, please be patient.")
    
    if latest_ep_button:
        # Extract the list of episodes for the given podcast
        podcast_feed = feedparser.parse(podcast_url)
    
        # Ensure you don't exceed the feed's length
        num_episodes = min(len(podcast_feed.entries), 5)
    
        for pod in podcast_feed.entries[:num_episodes]:
            podcast_title = pod['title']
            podcast_image = pod.get('image', {}).get('href', '')
    
            episode_url = next((i['href'] for i in pod['links'] if i['type'] == 'audio/mpeg'), None)
    
            pods[podcast_title] = [episode_url, podcast_image]
    
        if pods:
            # Dropdown box
            st.sidebar.subheader("Available Podcasts Feeds")
            podcast_five_titles = list(pods.keys())
            selected_podcast = st.sidebar.selectbox("Select Podcast", options=podcast_five_titles)
    
            if selected_podcast:
                # Process selected podcast
                podcast_link, podcast_image = pods[selected_podcast]
                
                st.sidebar.markdown("**Note**: Podcast processing can take upto 5 mins, please be patient.")
                
                podcast_link = pods[st.session_state.podcast_selection][0]
                podcast_image = pods[st.session_state.podcast_selection][1] 
            
                # Right section - Newsletter content
                st.header("Newsletter Content")
            
                # Display the podcast title
                st.subheader("Episode Title")
                st.write(selected_podcast)
            
                # Display the podcast summary and the cover image in a side-by-side layout
                col1, col2 = st.columns([7, 3])
            
                # Get podcast transcription and info
                podcast_info = process_podcast(podcast_link)
                
                with col1:
                    # Display the podcast episode summary
                    st.subheader("Podcast Episode Summary")
                    st.write(podcast_info['podcast_summary'])
            
                if podcast_image:
                    with col2:
                        st.image(podcast_image, caption="Podcast Cover", width=300, use_column_width=True)
            
                # Display the podcast guest and their details in a side-by-side layout
                col3, col4 = st.columns([3, 7])
            
                with col3:
                    st.subheader("Podcast Guest")
                    st.write(podcast_info['podcast_guest'])
            
                with col4:
                    st.subheader("Podcast Guest Details")
                    st.write(podcast_info["podcast_guest_title"])
                    st.write(podcast_info["podcast_guest_org"])
            
                # Display the five key moments
                st.subheader("Key Moments")
                key_moments = podcast_info['podcast_highlights']
                for moment in key_moments.split('\n'):
                    st.markdown(
                        f"<p style='margin-bottom: 5px;'>{moment}</p>", unsafe_allow_html=True)


if __name__ == '__main__':
    main()