import requests import json import random import pandas as pd import streamlit as st if 'df' not in st.session_state: st.session_state.df = pd.DataFrame() st.session_state.df_edited = st.session_state.df.copy() st.session_state.df2 = pd.DataFrame() st.title('Get Recipes:') n_recipes = st.slider('Select number of recipes to get', 0, 20, 10) if st.button(label='Get'): url = "https://api.notion.com/v1/databases/180f4b492f4d421c88028c54cfe077a5/query" payload = json.dumps({ "filter": { "property": "Weekly Rotation", "checkbox": { "equals": True } } }) headers = { 'Authorization': st.secrets["notion_authorization"], 'Content-Type': 'application/json', 'Notion-Version': '2022-02-22' } response = requests.request("POST", url, headers=headers, data=payload) recipes = response.json() recipe_list = [] for recipe in random.sample(recipes['results'], n_recipes): recipe_dict = {} recipe_dict['name'] = recipe["properties"]["Name"]["title"][0]["plain_text"].strip() recipe_dict['url'] = recipe["url"] recipe_list.append(recipe_dict) st.session_state.df = pd.DataFrame.from_dict(recipe_list) st.session_state.df.insert(1,'Save',[False]*len(st.session_state.df)) st.session_state.edited_df = st.data_editor( st.session_state.df, column_config={"url": st.column_config.LinkColumn()}, disabled=["name", "url"], hide_index=True, ) def save_recipes(): filter_1 = st.session_state.df_edited['Values'] == True filtered = st.session_state.df_edited[filter_1] st.session_state.df2 = pd.concat([st.session_state.df2, filtered]) st.button(label='Save Recipes', on_click=save_recipes) st.title('Saved Recipes:') if len(st.session_state.df2) == 0: st.write('Nothing saved, yet!') else: st.dataframe(st.session_state.df2, hide_index=True) def clear_saved(): st.session_state.df2 = pd.DataFrame() st.button(label='Clear Saved', on_click=clear_saved)