File size: 3,952 Bytes
0e82287 1108709 0e82287 1108709 0e82287 1108709 0e82287 1108709 0e82287 1108709 0e82287 1108709 0e82287 1108709 0e82287 1108709 0e82287 1108709 0e82287 1108709 0e82287 1108709 0e82287 1108709 0e82287 1108709 0e82287 1108709 0e82287 1108709 0e82287 8662493 1108709 0e82287 1108709 0e82287 |
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 124 125 126 127 128 129 130 131 132 133 134 135 136 |
import streamlit as st
from postly.clients.postly_client import PostlyClient
# Initialize the PostlyClient in Streamlit's session state
if "client" not in st.session_state:
st.session_state.client = PostlyClient()
client = st.session_state.client
def add_user():
st.title("Add User")
user_name = st.text_input("Enter user name")
if st.button("Add User"):
client.add_user(user_name)
st.success(f"User '{user_name}' added successfully.")
def add_post():
st.title("Add Post")
users = client.get_users()
user_name = st.selectbox("Select user name", users)
post_text = st.text_area("Enter post text")
if st.button("Add Post"):
try:
client.add_post(user_name, post_text)
st.success("Post added successfully.")
except Exception as e:
st.error(f"Error: {e}")
def delete_user():
st.title("Delete User")
users = client.get_users()
user_name = st.selectbox("Select user name", users)
if st.button("Delete User"):
try:
client.delete_user(user_name)
st.success(f"User '{user_name}' deleted successfully.")
except KeyError as e:
st.error(f"Error: {e}")
def get_posts_for_user():
st.title("Get Posts for User")
users = client.get_users()
user_name = st.selectbox("Select user name", users)
if st.button("Get Posts"):
try:
posts = client.get_posts_for_user(user_name)
st.write(f"Posts for user '{user_name}':")
for post in posts:
st.write(post)
except KeyError as e:
st.error(f"Error: {e}")
def get_posts_for_topic():
st.title("Get Posts for Topic")
topics = client.get_topics()
topic = st.selectbox("Enter topic", topics)
if st.button("Get Posts"):
posts = client.get_posts_for_topic(topic)
st.write(f"Posts for topic '{topic}':")
for post in posts:
st.write(post)
def get_trending_topics():
st.title("Get Trending Topics")
current_timestamp = client.get_current_timestamp()
from_timestamp = st.number_input("Enter from timestamp", min_value=0, step=1)
to_timestamp = st.number_input(
"Enter to timestamp", min_value=0, max_value=current_timestamp, step=1, value=current_timestamp
)
if st.button("Get Trending Topics"):
try:
topics = client.get_trending_topics(int(from_timestamp), int(to_timestamp))
st.write("Trending topics:")
for topic in topics:
st.write(topic)
except ValueError as e:
st.error(f"Error: {e}")
st.rerun()
def get_all_posts():
st.title("All Posts")
posts = client.get_posts()
all_posts = []
for user_name, user_posts in posts.items():
for post in user_posts:
all_posts.append((user_name, post))
sorted_posts = sorted(all_posts, key=lambda x: x[1].timestamp)
for user_name, post in sorted_posts:
st.markdown(f"**{user_name}**")
st.markdown(f"{post.content}")
st.markdown("---")
def main():
st.sidebar.title("Postly\nSimple social media platform")
page = st.sidebar.selectbox(
"Choose an action",
[
"Add User",
"Add Post",
"Delete User",
"Get Posts for User",
"Get Posts for Topic",
"Get Trending Topics",
"View All Posts",
],
index=6,
)
if page == "Add User":
add_user()
elif page == "Add Post":
add_post()
elif page == "Delete User":
delete_user()
elif page == "Get Posts for User":
get_posts_for_user()
elif page == "Get Posts for Topic":
get_posts_for_topic()
elif page == "Get Trending Topics":
get_trending_topics()
elif page == "View All Posts":
get_all_posts()
if __name__ == "__main__":
main()
|