else:
return None
-@st.cache_data(show_spinner=False)
def query_api(handle):
if not handle:
st.warning('username, please!')
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