recipes / app.py
adrianpierce's picture
Update app.py
20f3192
raw
history blame
2.16 kB
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)
def get_recipes():
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.button(label='Get', on_click=get_recipes)
if len(st.session_state.df) > 0:
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['Save'] == 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)