Spaces:
Sleeping
Sleeping
| import os | |
| import datetime | |
| import streamlit as st | |
| hide_streamlit_style = """ | |
| <style> | |
| footer {visibility: hidden;} | |
| </style> | |
| """ | |
| st.markdown(hide_streamlit_style, unsafe_allow_html=True) | |
| # Create a 'brain' folder in the current directory if it doesn't exist | |
| if not os.path.exists("brain"): | |
| os.makedirs("brain") | |
| # Name of the single journal file | |
| journal_file = "brain/brain_journal.txt" | |
| def parse_date(date_string): | |
| try: | |
| return datetime.datetime.strptime(date_string, "%m-%d-%Y %A") | |
| except ValueError: | |
| return datetime.datetime.strptime(date_string, "%m-%d-%Y") | |
| def get_journal_entries(): | |
| entries = [] | |
| if not os.path.exists(journal_file): | |
| return entries | |
| with open(journal_file, "r", encoding="utf-8") as f: | |
| for line in f: | |
| if line.startswith("Date: "): | |
| entry_date = parse_date(line[6:].strip()) | |
| entries.append(entry_date) | |
| entries.sort(reverse=True) | |
| return entries | |
| def read_entry(date): | |
| content = "" | |
| with open(journal_file, "r", encoding="utf-8") as f: | |
| lines = f.readlines() | |
| start_reading = False | |
| for line in lines: | |
| if line.startswith("Date: ") and start_reading: | |
| break | |
| if start_reading: | |
| content += line | |
| if line.startswith("Date: ") and date == parse_date(line[6:].strip()): | |
| start_reading = True | |
| return content | |
| def write_entry(date, content): | |
| new_entry = f"\nDate: {date}\n{content}\n\n" | |
| # If the journal file does not exist, create it with the new entry | |
| if not os.path.exists(journal_file): | |
| with open(journal_file, "w", encoding="utf-8") as f: | |
| f.write(new_entry) | |
| else: | |
| with open(journal_file, "r", encoding="utf-8") as f: | |
| lines = f.readlines() | |
| # Remove existing entry if present | |
| lines_to_remove = set() | |
| removing_entry = False | |
| for i, line in enumerate(lines): | |
| if line.startswith("Date: "): | |
| if date == line[6:].strip(): | |
| removing_entry = True | |
| lines_to_remove.add(i) | |
| else: | |
| removing_entry = False | |
| if removing_entry: | |
| lines_to_remove.add(i) | |
| lines = [line for i, line in enumerate(lines) if i not in lines_to_remove] | |
| # Find the correct position for the new entry based on its date | |
| new_entry_date = parse_date(date) | |
| position = None | |
| for i, line in enumerate(lines): | |
| if line.startswith("Date: "): | |
| entry_date = parse_date(line[6:].strip()) | |
| if new_entry_date < entry_date: | |
| position = i | |
| break | |
| # Insert the new entry at the correct position | |
| if position is None: | |
| lines.append(new_entry) | |
| else: | |
| lines.insert(position, new_entry) | |
| # Write the updated journal entries to the file | |
| with open(journal_file, "w", encoding="utf-8") as f: | |
| f.writelines(lines) | |
| st.title("Digital Brain Journal Entry ✍️") | |
| st.write("Write a diary journal entry or edit an existing one by selecting on the date picker.") | |
| selected_date = st.date_input("Select the date for the journal entry:", value=datetime.date.today()) | |
| formatted_date = selected_date.strftime("%m-%d-%Y %A") | |
| st.write(f"Selected date: {formatted_date}") | |
| entry = "" | |
| if selected_date in get_journal_entries(): | |
| entry = read_entry(selected_date) | |
| new_entry = st.text_area("Write your journal entry:", entry) | |
| if st.button("Submit"): | |
| write_entry(formatted_date, new_entry) | |
| st.success("Journal entry saved successfully!") | |
| st.header("Previous Journal Entries") | |
| entries = get_journal_entries() | |
| if entries: | |
| selected_entry_date = st.selectbox("Select an entry to view:", entries, format_func=lambda x: x.strftime("%m-%d-%Y %A")) | |
| if st.button("Load Entry"): | |
| entry_text = read_entry(selected_entry_date) | |
| st.write(f"**{selected_entry_date.strftime('%m-%d-%Y %A')}**") | |
| st.markdown(entry_text.replace("\n", "<br>"), unsafe_allow_html=True) | |
| else: | |
| st.write("No previous entries found.") | |
| st.markdown("---") | |
| st.markdown("") | |
| st.markdown("<p style='text-align: center'><a href='https://github.com/Kaludii'>Github</a> | <a href='https://huggingface.co/Kaludi'>HuggingFace</a></p>", unsafe_allow_html=True) |