awacke1 commited on
Commit
68de287
β€’
1 Parent(s): d9bb822

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +66 -33
app.py CHANGED
@@ -82,6 +82,13 @@ Multiplayer_Custom_Hosting_Game_Servers_For_Simulated_Worlds = """
82
  29. Valheim
83
  """
84
 
 
 
 
 
 
 
 
85
  def sanitize_filename(text):
86
  """Create a safe filename from text while preserving spaces."""
87
  # First replace unsafe characters with spaces
@@ -136,14 +143,13 @@ def get_file_download_link(file_path):
136
  with open(file_path, 'r', encoding='utf-8') as f:
137
  content = f.read()
138
  b64 = base64.b64encode(content.encode()).decode()
139
- filename = os.path.basename(file_path)
140
- return f'<a href="data:text/markdown;base64,{b64}" download="{filename}">{filename}</a>'
141
  except Exception as e:
142
  st.error(f"Error creating download link: {e}")
143
  return None
144
 
145
- # Function to parse markdown text and extract terms
146
  def extract_terms(markdown_text):
 
147
  lines = markdown_text.strip().split('\n')
148
  terms = []
149
  for line in lines:
@@ -152,8 +158,8 @@ def extract_terms(markdown_text):
152
  terms.append(line)
153
  return terms
154
 
155
- # Function to display terms with links
156
  def display_terms_with_links(terms):
 
157
  search_urls = {
158
  "πŸš€πŸŒŒArXiv": lambda k: f"/?q={quote(k)}",
159
  "πŸ“–": lambda k: f"https://en.wikipedia.org/wiki/{quote(k)}",
@@ -166,8 +172,8 @@ def display_terms_with_links(terms):
166
  links_md = ' '.join([f"[{emoji}]({url(term)})" for emoji, url in search_urls.items()])
167
  st.markdown(f"- **{term}** {links_md}", unsafe_allow_html=True)
168
 
169
- # Function to perform AI lookup using Gradio client
170
  def perform_ai_lookup(query):
 
171
  st.write("Performing AI Lookup...")
172
  client = Client("awacke1/Arxiv-Paper-Search-And-QA-RAG-Pattern")
173
  result1 = client.predict(
@@ -217,55 +223,82 @@ def display_file_content(file_path):
217
  st.error(f"Error reading file: {e}")
218
 
219
  def file_management_sidebar():
220
- """Enhanced sidebar with file management capabilities."""
221
  st.sidebar.title("πŸ“ File Management")
222
 
223
- # Get list of .md files
224
- md_files = sorted(glob.glob("*.md"))
 
225
  st.session_state.files = md_files
226
 
227
  if md_files:
228
- st.sidebar.markdown("### Markdown Files")
229
  for idx, file in enumerate(md_files):
230
- col1, col2, col3, col4 = st.sidebar.columns([4, 2, 1, 1])
231
 
232
- with col1:
233
- st.write(file)
234
 
235
- with col2:
236
- # Base64 download link
237
- st.markdown(get_file_download_link(file), unsafe_allow_html=True)
 
 
238
 
239
- with col3:
240
- # View button
241
- if st.button("πŸ“„", key=f"view_{idx}"):
 
 
242
  st.session_state.selected_file = file
243
  st.session_state.view_mode = 'view'
244
 
245
- with col4:
246
- # Edit button
247
- if st.button("✏️", key=f"edit_{idx}"):
248
  st.session_state.selected_file = file
249
  st.session_state.view_mode = 'edit'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
250
 
 
251
  # Option to create a new markdown file
252
- if st.sidebar.button("Create New Markdown File"):
253
- timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
254
- new_filename = f"note_{timestamp}.md"
255
- with open(new_filename, 'w', encoding='utf-8') as f:
256
  f.write("# New Markdown File\n")
257
- st.sidebar.success(f"Created new file: {new_filename}")
258
- st.session_state.selected_file = new_filename
259
  st.session_state.view_mode = 'edit'
260
  else:
261
  st.sidebar.write("No markdown files found.")
262
- if st.sidebar.button("Create New Markdown File"):
263
- timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
264
- new_filename = f"note_{timestamp}.md"
265
- with open(new_filename, 'w', encoding='utf-8') as f:
266
  f.write("# New Markdown File\n")
267
- st.sidebar.success(f"Created new file: {new_filename}")
268
- st.session_state.selected_file = new_filename
269
  st.session_state.view_mode = 'edit'
270
 
271
  def main():
 
82
  29. Valheim
83
  """
84
 
85
+ def get_display_name(filename):
86
+ """Extract text from parentheses or return filename as is."""
87
+ match = re.search(r'\((.*?)\)', filename)
88
+ if match:
89
+ return match.group(1)
90
+ return filename
91
+
92
  def sanitize_filename(text):
93
  """Create a safe filename from text while preserving spaces."""
94
  # First replace unsafe characters with spaces
 
143
  with open(file_path, 'r', encoding='utf-8') as f:
144
  content = f.read()
145
  b64 = base64.b64encode(content.encode()).decode()
146
+ return f"data:text/markdown;base64,{b64}"
 
147
  except Exception as e:
148
  st.error(f"Error creating download link: {e}")
149
  return None
150
 
 
151
  def extract_terms(markdown_text):
152
+ """Parse markdown text and extract terms."""
153
  lines = markdown_text.strip().split('\n')
154
  terms = []
155
  for line in lines:
 
158
  terms.append(line)
159
  return terms
160
 
 
161
  def display_terms_with_links(terms):
162
+ """Display terms with various search links."""
163
  search_urls = {
164
  "πŸš€πŸŒŒArXiv": lambda k: f"/?q={quote(k)}",
165
  "πŸ“–": lambda k: f"https://en.wikipedia.org/wiki/{quote(k)}",
 
172
  links_md = ' '.join([f"[{emoji}]({url(term)})" for emoji, url in search_urls.items()])
173
  st.markdown(f"- **{term}** {links_md}", unsafe_allow_html=True)
174
 
 
175
  def perform_ai_lookup(query):
176
+ """Perform AI lookup using Gradio client."""
177
  st.write("Performing AI Lookup...")
178
  client = Client("awacke1/Arxiv-Paper-Search-And-QA-RAG-Pattern")
179
  result1 = client.predict(
 
223
  st.error(f"Error reading file: {e}")
224
 
225
  def file_management_sidebar():
226
+ """Redesigned sidebar with improved layout and additional functionality."""
227
  st.sidebar.title("πŸ“ File Management")
228
 
229
+ # Get list of .md files excluding README.md
230
+ md_files = [file for file in glob.glob("*.md") if file.lower() != 'readme.md']
231
+ md_files.sort()
232
  st.session_state.files = md_files
233
 
234
  if md_files:
235
+ st.sidebar.markdown("### Saved Files")
236
  for idx, file in enumerate(md_files):
237
+ st.sidebar.markdown("---") # Separator between files
238
 
239
+ # Display filename
240
+ st.sidebar.text(file)
241
 
242
+ # Display download link with simplified text
243
+ display_name = get_display_name(file)
244
+ download_link = get_file_download_link(file)
245
+ if download_link:
246
+ st.sidebar.markdown(f"πŸ“₯ [{display_name}]({download_link})", unsafe_allow_html=True)
247
 
248
+ # Action buttons in a row
249
+ col1, col2, col3 = st.sidebar.columns(3)
250
+
251
+ with col1:
252
+ if st.button("πŸ“„ View", key=f"view_{idx}"):
253
  st.session_state.selected_file = file
254
  st.session_state.view_mode = 'view'
255
 
256
+ with col2:
257
+ if st.button("✏️ Edit", key=f"edit_{idx}"):
 
258
  st.session_state.selected_file = file
259
  st.session_state.view_mode = 'edit'
260
+
261
+ with col3:
262
+ if st.button("πŸ”„ Rerun", key=f"rerun_{idx}"):
263
+ try:
264
+ with open(file, 'r', encoding='utf-8') as f:
265
+ content = f.read()
266
+
267
+ # Prepare the prompt with the prefix
268
+ rerun_prefix = """For the markdown below reduce the text to a humorous fun outline with emojis and markdown outline levels in outline that convey all the facts and adds wise quotes and funny statements to engage the reader:
269
+
270
+ """
271
+ full_prompt = rerun_prefix + content
272
+
273
+ # Perform AI lookup and save results
274
+ ai_result = perform_ai_lookup(full_prompt)
275
+ saved_file = save_ai_interaction(f"Rerun of {file}", ai_result)
276
+
277
+ if saved_file:
278
+ st.success(f"Created fun version in {saved_file}")
279
+ st.session_state.selected_file = saved_file
280
+ st.session_state.view_mode = 'view'
281
+
282
+ except Exception as e:
283
+ st.error(f"Error during rerun: {e}")
284
 
285
+ st.sidebar.markdown("---")
286
  # Option to create a new markdown file
287
+ if st.sidebar.button("πŸ“ Create New Note"):
288
+ filename = generate_timestamp_filename("New Note")
289
+ with open(filename, 'w', encoding='utf-8') as f:
 
290
  f.write("# New Markdown File\n")
291
+ st.sidebar.success(f"Created: {filename}")
292
+ st.session_state.selected_file = filename
293
  st.session_state.view_mode = 'edit'
294
  else:
295
  st.sidebar.write("No markdown files found.")
296
+ if st.sidebar.button("πŸ“ Create First Note"):
297
+ filename = generate_timestamp_filename("New Note")
298
+ with open(filename, 'w', encoding='utf-8') as f:
 
299
  f.write("# New Markdown File\n")
300
+ st.sidebar.success(f"Created: {filename}")
301
+ st.session_state.selected_file = filename
302
  st.session_state.view_mode = 'edit'
303
 
304
  def main():