import streamlit as st from datetime import datetime import json import os # File to store diary entries and password DATA_FILE = "diary_entries.json" PASSWORD_FILE = "password.txt" # Load existing diary entries def load_entries(): if os.path.exists(DATA_FILE): with open(DATA_FILE, "r") as file: return json.load(file) return {} # Save diary entries def save_entries(entries): with open(DATA_FILE, "w") as file: json.dump(entries, file, indent=4) # Load password def load_password(): if os.path.exists(PASSWORD_FILE): with open(PASSWORD_FILE, "r") as file: return file.read().strip() return "diary123" # Default password # Save new password def save_password(new_password): with open(PASSWORD_FILE, "w") as file: file.write(new_password) # Password verification def verify_password(): if "password_verified" not in st.session_state: st.session_state.password_verified = False if not st.session_state.password_verified: password_input = st.text_input("Enter Password:", type="password") if st.button("Submit"): if password_input == load_password(): st.session_state.password_verified = True st.success("Password verified!") else: st.error("Incorrect password. Try again.") return False return True # Change password def change_password(): st.subheader("Change Password") current_password = st.text_input("Enter Current Password:", type="password") new_password = st.text_input("Enter New Password:", type="password") confirm_password = st.text_input("Confirm New Password:", type="password") if st.button("Change Password"): if current_password != load_password(): st.error("Current password is incorrect.") elif new_password != confirm_password: st.error("New passwords do not match.") else: save_password(new_password) st.success("Password changed successfully!") # Main app function def main(): st.set_page_config(page_title="My Secret Diary", page_icon="📔", layout="centered") st.title("📔 My Secret Diary") st.markdown("Welcome to your personal diary! Keep your thoughts safe and organized.") # Password verification if not verify_password(): return # Load existing entries diary_entries = load_entries() # Sidebar for navigation st.sidebar.title("Navigation") option = st.sidebar.radio("Choose an option:", ["Add Entry", "View Entries", "Change Password"]) if option == "Add Entry": st.subheader("Add a New Diary Entry") selected_date = st.date_input("Select a date", datetime.today()) entry_key = str(selected_date) entry = st.text_area("Write your diary entry here:", value=diary_entries.get(entry_key, ""), height=200) if st.button("Save Entry"): diary_entries[entry_key] = entry save_entries(diary_entries) st.success("Entry saved successfully!") elif option == "View Entries": st.subheader("View Past Entries") if not diary_entries: st.info("No entries found. Start by adding a new entry!") else: selected_entry_key = st.selectbox("Select a date to view:", sorted(diary_entries.keys(), reverse=True)) st.write(f"**Entry for {selected_entry_key}:**") st.write(diary_entries[selected_entry_key]) elif option == "Change Password": change_password() if __name__ == "__main__": main()