add exception
authorClaromes <claromes@hey.com>
Wed, 31 May 2023 05:16:36 +0000 (02:16 -0300)
committerClaromes <claromes@hey.com>
Wed, 31 May 2023 05:16:36 +0000 (02:16 -0300)
README.md
app.py

index 65d622901ef6d847d21d955f00d10e5326dee9a9..6a70de21965e156b1afb8dde46ff2c53a2ed86d3 100644 (file)
--- a/README.md
+++ b/README.md
@@ -40,10 +40,11 @@ Streamlit will be served at http://localhost:8501
     - [x] Disabled/ Empty
 - [ ] Feedbacks
 - [ ] Download dataset
-- [ ] Review data cache
+- [ ] Add/Review data cache
 - [ ] Range size defined by user
 - [ ] Prevent duplicate URLs
 - [ ] Hide Twitter header banner (iframe)
 - [ ] Grid
 - [ ] Contributing/ Docs
 - [ ] Changelog
+- [ ] `parse_links` exception
diff --git a/app.py b/app.py
index f8b615746f3c5c33bc8b45df11b44cc4f715bb22..c879072ac29e7853f9c2d9e7847f3e675ced085a 100644 (file)
--- a/app.py
+++ b/app.py
@@ -89,7 +89,6 @@ def embed(tweet):
     else:
         return None
 
-@st.cache_data(show_spinner=False)
 def query_api(handle):
     if not handle:
         st.warning('username, please!')
@@ -136,88 +135,92 @@ if query or handle:
     if query != st.session_state.current_query:
         st.session_state.current_index = 0
 
-    with st.spinner(''):
-        progress = st.empty()
-        links = query_api(handle)
-        parsed_links = parse_links(links)[0]
-        tweet_links = parse_links(links)[1]
-        mimetype = parse_links(links)[2]
-        timestamp = parse_links(links)[3]
+    try:
+        with st.spinner(''):
+            progress = st.empty()
+            links = query_api(handle)
+            parsed_links = parse_links(links)[0]
+            tweet_links = parse_links(links)[1]
+            mimetype = parse_links(links)[2]
+            timestamp = parse_links(links)[3]
 
-        only_deleted = st.checkbox('Only deleted tweets')
+            only_deleted = st.checkbox('Only deleted tweets')
 
-        if links:
-            st.divider()
+            if links:
+                st.divider()
 
-            st.session_state.current_handle = handle
-            st.session_state.current_query = query
+                st.session_state.current_handle = handle
+                st.session_state.current_query = query
 
-            return_none_count = 0
-            tweets_per_page = 50
+                return_none_count = 0
+                tweets_per_page = 50
 
-            def prev_page():
-                st.session_state.current_index -= tweets_per_page
+                def prev_page():
+                    st.session_state.current_index -= tweets_per_page
 
-                #scroll to top config
-                st.session_state.update_component += 1
-                scroll_into_view()
+                    #scroll to top config
+                    st.session_state.update_component += 1
+                    scroll_into_view()
 
-            def next_page():
-                st.session_state.current_index += tweets_per_page
+                def next_page():
+                    st.session_state.current_index += tweets_per_page
 
-                #scroll to top config
-                st.session_state.update_component += 1
-                scroll_into_view()
+                    #scroll to top config
+                    st.session_state.update_component += 1
+                    scroll_into_view()
 
-            start_index = st.session_state.current_index
-            end_index = min(len(parsed_links), start_index + tweets_per_page)
+                start_index = st.session_state.current_index
+                end_index = min(len(parsed_links), start_index + tweets_per_page)
 
-            for i in range(start_index, end_index):
-                link = parsed_links[i]
-                tweet = embed(tweet_links[i])
+                for i in range(start_index, end_index):
+                    link = parsed_links[i]
+                    tweet = embed(tweet_links[i])
 
-                if not only_deleted:
-                    attr(i)
+                    if not only_deleted:
+                        attr(i)
 
-                    if tweet == None:
-                        st.error('Tweet has been deleted.')
-                        components.iframe(src=link, width=700, height=1000, scrolling=True)
-                        st.divider()
-                    else:
-                        components.html(tweet, width=700, height=1000, scrolling=True)
-                        st.divider()
+                        if tweet == None:
+                            st.error('Tweet has been deleted.')
+                            components.iframe(src=link, width=700, height=1000, scrolling=True)
+                            st.divider()
+                        else:
+                            components.html(tweet, width=700, height=1000, scrolling=True)
+                            st.divider()
 
-                    if i + 1 == end_index:
-                        progress.write('{} of {} URLs have been captured'.format(i + 1, len(parsed_links)))
-                    else:
-                        progress.write('{} to {} of {} URLs have been captured'.format(i + 1, end_index, len(parsed_links)))
+                        if i + 1 == end_index:
+                            progress.write('{} of {} URLs have been captured'.format(i + 1, len(parsed_links)))
+                        else:
+                            progress.write('{} to {} of {} URLs have been captured'.format(i + 1, end_index, len(parsed_links)))
 
 
-                if only_deleted:
-                    if tweet == None:
-                        return_none_count += 1
-                        attr(i)
+                    if only_deleted:
+                        if tweet == None:
+                            return_none_count += 1
+                            attr(i)
 
-                        st.error('Tweet has been deleted.')
-                        components.iframe(src=link, width=700, height=1000, scrolling=True)
-                        st.divider()
+                            st.error('Tweet has been deleted.')
+                            components.iframe(src=link, width=700, height=1000, scrolling=True)
+                            st.divider()
 
-                    progress.write('{} URLs have been captured in the range {}-{} of {}'.format(return_none_count, start_index, end_index, len(parsed_links)))
+                        progress.write('{} URLs have been captured in the range {}-{} of {}'.format(return_none_count, start_index, end_index, len(parsed_links)))
 
-                if start_index <= 0:
-                    st.session_state.prev_disabled = True
-                else:
-                    st.session_state.prev_disabled = False
+                    if start_index <= 0:
+                        st.session_state.prev_disabled = True
+                    else:
+                        st.session_state.prev_disabled = False
 
-                if i + 1 == len(parsed_links):
-                    st.session_state.next_disabled = True
-                else:
-                    st.session_state.next_disabled = False
+                    if i + 1 == len(parsed_links):
+                        st.session_state.next_disabled = True
+                    else:
+                        st.session_state.next_disabled = False
 
-            prev, _ , next = st.columns([3, 4, 3])
+                prev, _ , next = st.columns([3, 4, 3])
 
-            prev.button('Previous', disabled=st.session_state.prev_disabled, key='prev_button_key', on_click=prev_page, type='primary', use_container_width=True)
-            next.button('Next', disabled=st.session_state.next_disabled, key='next_button_key', on_click=next_page, type='primary', use_container_width=True)
+                prev.button('Previous', disabled=st.session_state.prev_disabled, key='prev_button_key', on_click=prev_page, type='primary', use_container_width=True)
+                next.button('Next', disabled=st.session_state.next_disabled, key='next_button_key', on_click=next_page, type='primary', use_container_width=True)
 
-        if not links:
-            st.error('Unable to query the Wayback Machine API.')
+            if not links:
+                st.error('Unable to query the Wayback Machine API.')
+    except TypeError as e:
+        st.error('{}. Refresh this page and try again.'.format(e))
+        st.session_state.current_index = 0
\ No newline at end of file